Перевод из 16 в 10 систему счисления (ограничить ввод данных) - C (СИ)
Формулировка задачи:
написал код, не могу понять какие условия вписать, чтобы нельзя было вводить ничего кроме букв и цифр
мысль была, что нельзя ничего вводить кроме с 48 до 57 символа в аски и так же с буквами от а до f, как реализовать совсем не понимаю
#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");
}Решение задачи: «Перевод из 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");
}
Объяснение кода листинга программы
- В функции hexdec происходит перевод строки из 16-ричной системы счисления в десятичную.
- Передается массив символов, представляющий собой строку в 16-ричной системе счисления.
- Переменная i используется как счетчик для цикла for, который проходит по каждому символу строки.
- Переменная s используется для хранения результата преобразования.
- Переменная k используется для хранения преобразованного символа.
- Переменная p используется как счетчик для цикла for, который проходит по каждому символу строки в обратном порядке.
- Переменная st[i] преобразуется в верхний регистр с помощью функции toupper.
- Переменная s увеличивается на произведение преобразования символа k на 16 в степени p.
- Результат функции hexdec возвращается в функцию main.
- В функции main происходит считывание строки с помощью функции scanf.
- Выводится результат преобразования с помощью функции printf.
- Происходит ожидание нажатия клавиши с помощью функции system.