Необходимо реализовать проверку данных, введенных с клавиатуры, на принадлежность к числу - C (СИ)
Формулировка задачи:
Доброго времени суток!
Помогите пожалуйста разобраться.
При вводе русских букв, или нескольких символов, шаг цикла все равно меняется. Хотелось бы устранить это.
Кратко:
Необходимо реализовать проверку данных, введенных с клавиатуры, на принадлежность к числу. Диапозон введенного, грубо говоря, от -99999.99999 до 99999.99999.Подробнее:
Пользователю необходимо заполнить элементы матрицы размером 4x5 числами (типа float). Создаю цикл конструкцией for. Не смог разобраться как правильно использовать функцию isdigit (другого подхода к решению проблемы не придумал). Очень интересует как можно реализовать код, чтобы при введении не численного значения, пользователь повторял попытку. Например:char ch; int i,j; float A[4][5]; for(i=0;i<4;i++) for(j=0;j<5;j++) { printf(" Matrix A\n\n"); printf(" Enter A[%i][%i] = ",i+1,j+1); ch = getchar(); if (ch==' ') break; if(isdigit(ch)) { A[i][j]=ch; } else j--; system("cls"); }
Или подскажите, какими способами можно осуществить проверку данных
Решение задачи: «Необходимо реализовать проверку данных, введенных с клавиатуры, на принадлежность к числу»
textual
Листинг программы
{ ret=1;//По умолчанию считаем что у нас в прошлый раз не было ошибки(ret->return result =1) do//цикл { if (!ret)printf("\nError input value!\n");//Если ret==0 то есть ошибка была в прошлый раз printf("Enter A[%i][%i] = ",i+1,j+1); gets(buf);//вводим строку } while ( !(ret=is_float_correct(buf,&A[i][j])));//пока ret==0, то есть пока функция не вернет 1 //system("cls"); }
Объяснение кода листинга программы
- {
- ret=1;
- do
- {
- if (!ret)printf(
\nError input value!\n
); - printf(
Enter A[%i][%i] =
,i+1,j+1); - gets(buf);
- }
- while ( !(ret=is_float_correct(buf,&A[i][j])));
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д