Проверка корректности ввода - C (СИ)
Формулировка задачи:
всем приятного времени суток))тут такой вопросик! имеется прога, которая переводит из любой системы в любую! так вот как сделать проверку на корректность ввода? т.е. сначала мы вводим начальную систему(например 3) а потом вводим строку(например 0124), и надо чтобы мне комп ругнулся на 4, типа недопустимый символ! вот что-то ступор какой-то....
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <math.h>
using namespace std;
char mass[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V'};
void convert_into_anySystem(int x, int sys1);
int convert_into_ten(char x[50], int sys);
int main()
{
setlocale (LC_ALL,"rus");
char c;
char x[50];
int sys, sys1;
do{
system("cls");
printf("введите начальную систему счисления: ");
scanf("%d", &sys);
printf("\n");
printf("введите: ");
scanf("%s", &x);
printf("\n");
printf("введите систему, в которую требуется перевести : ");
scanf("%d", &sys1);
printf("\n");
convert_into_anySystem(convert_into_ten(x, sys), sys1);
printf("Для повтора нажмите пробел, для выхода любую клавишу.");
} while( ( c = getch() ) == ' ' );
getch();
}
int convert_into_ten(char x[50], int sys)
{
int i=strlen(x), sum=0;
for(int p=0; p<i; p++)
{
if (x[p]>=58)
x[p]-=7;
sum+=((x[p]-48)*pow((double)sys,(i-p-1)));
}
return sum;
}
void convert_into_anySystem(int x, int sys1)
{
int tmp=x, ost, a=0;
char ch[500];
while(tmp>=sys1)
{
tmp=x/sys1;
ost=x%sys1;
ch[a]=mass[ost];
x=tmp;
a++;
}
ch[a]=mass[tmp];
printf("в %d системе = ", sys1);
for(int i=a; i>=0; i--)
cout<<ch[i];
cout<<endl;
}Решение задачи: «Проверка корректности ввода»
textual
Листинг программы
find_first_not_of("0123");