Проверка корректности ввода - 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");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д