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

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

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

написал код, не могу понять какие условия вписать, чтобы нельзя было вводить ничего кроме букв и цифр
Листинг программы
  1. #include "stdio.h"
  2. #include "math.h"
  3. #include "windows.h"
  4. #include "string.h"
  5.  
  6. int hexdec(char st[10])
  7. {
  8. int i, s, k, p;
  9. s = 0;
  10. p = strlen(st)-1;
  11. for (i = 0; p>=0; i++, p--)
  12. {
  13. k=toupper(st[i]);
  14. s+=((k>='A')?10+k-'A':k-'0')*pow(16,p);
  15. }
  16. return s;
  17. }
  18. int main()
  19. {
  20. char st[10];
  21. scanf ("%s", &st) ;
  22. printf ("Result: %d\n",hexdec(st));
  23. system("pause");
  24. }
мысль была, что нельзя ничего вводить кроме с 48 до 57 символа в аски и так же с буквами от а до f, как реализовать совсем не понимаю

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

textual
Листинг программы
  1. #include "stdio.h"
  2. #include "math.h"
  3. #include "windows.h"
  4. #include "string.h"
  5.  
  6.  
  7. int hexdec(char st[10])
  8. {
  9.     int i, s, k, p;
  10.     for (int i = 0; i < 10; ++i)
  11.     if(('a'>= st[i] && st[i] <= 'f') ||('A'>= st[i] && st[i] <= 'F'))
  12.         if('0'>=st[i] && st[i]<='9')
  13.             s=0;
  14.     p = strlen(st)-1;
  15.  
  16.     for (i = 0; p>=0; i++, p--){
  17.         k=toupper(st[i]);
  18.         s+=((k>='A')?10+k-'A':k-'0')*pow(16.0,p);
  19.     }
  20.     return s;
  21. }
  22.  
  23. int main()
  24. {
  25.     char st[10];
  26.     scanf ("%s",  &st) ;
  27.     printf ("Result: %d\n",hexdec(st));
  28.     system("pause");
  29.  
  30. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы