Перевод из 16 в 10 систему счисления (ограничить ввод данных) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

написал код, не могу понять какие условия вписать, чтобы нельзя было вводить ничего кроме букв и цифр
#include "stdio.h"
#include "math.h"
#include "windows.h"
#include "string.h"

int hexdec(char st[10])
{
  int i, s, k, p;
        s = 0;
        p = strlen(st)-1;
            for (i = 0; p>=0; i++, p--)
  {
    k=toupper(st[i]);
            s+=((k>='A')?10+k-'A':k-'0')*pow(16,p);
  }
  return s;
}
 
int main()
{
  char st[10];
        scanf ("%s",  &st) ;
            printf ("Result: %d\n",hexdec(st));
            system("pause");
 
}
мысль была, что нельзя ничего вводить кроме с 48 до 57 символа в аски и так же с буквами от а до f, как реализовать совсем не понимаю

Решение задачи: «Перевод из 16 в 10 систему счисления (ограничить ввод данных)»

textual
Листинг программы
#include "stdio.h"
#include "math.h"
#include "windows.h"
#include "string.h"
 
 
int hexdec(char st[10])
{
    int i, s, k, p;
    for (int i = 0; i < 10; ++i)
    if(('a'>= st[i] && st[i] <= 'f') ||('A'>= st[i] && st[i] <= 'F'))
        if('0'>=st[i] && st[i]<='9')
            s=0;
    p = strlen(st)-1;
 
    for (i = 0; p>=0; i++, p--){
        k=toupper(st[i]);
        s+=((k>='A')?10+k-'A':k-'0')*pow(16.0,p);
    }
    return s;
}
 
int main()
{
    char st[10];
    scanf ("%s",  &st) ;
    printf ("Result: %d\n",hexdec(st));
    system("pause");
 
}

Объяснение кода листинга программы

  1. В функции hexdec происходит перевод строки из 16-ричной системы счисления в десятичную.
  2. Передается массив символов, представляющий собой строку в 16-ричной системе счисления.
  3. Переменная i используется как счетчик для цикла for, который проходит по каждому символу строки.
  4. Переменная s используется для хранения результата преобразования.
  5. Переменная k используется для хранения преобразованного символа.
  6. Переменная p используется как счетчик для цикла for, который проходит по каждому символу строки в обратном порядке.
  7. Переменная st[i] преобразуется в верхний регистр с помощью функции toupper.
  8. Переменная s увеличивается на произведение преобразования символа k на 16 в степени p.
  9. Результат функции hexdec возвращается в функцию main.
  10. В функции main происходит считывание строки с помощью функции scanf.
  11. Выводится результат преобразования с помощью функции printf.
  12. Происходит ожидание нажатия клавиши с помощью функции system.

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы