Как запретить ввод символов - C (СИ)

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

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

Можно ли как-то запретить ввод символов в
scanf("%f", &qwe);
т е мне надо, чтобы программа выбирала только цифры или не выполнялась, пока пользователь не введет корректные данные, или можно это сделать с помощью регулярных выражений? Для примера полный код:
#include <stdio.h>
#include <locale.h>
#include <conio.h>
main(void) {
    setlocale(LC_ALL,"Russian"); //установка русского языка
    
    // Объявление переменных    
int i;
 
float t[4][2]; // Массив координат 
 
float qwe; // рабочая переменная
 
printf("\n\n\nВведите:");
 
    //ввод данных
        
for(i=0; i<=3; i++) 
{
    printf("\nКоординаты: %d-ой точки: \n \n \t \t x=", i+1); 
    scanf("%f", &qwe);
    t[i][0]=qwe;
    printf("\n \t \t y=");
    scanf("%f", &qwe);
    t[i][1]=qwe;    
}
getch();
}
При вводе буквы получается, что остальные координаты вводить не надо.

Решение задачи: «Как запретить ввод символов»

textual
Листинг программы
#include<stdio.h>
int main(){
    float x;
 
    while(scanf("%f", &x))
        printf("   x*x= %f\n\n", x*x);
 
    return 0;
    }

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

В этом коде:

  1. В первой строке подключается стандартная библиотека scanf.h, которая позволяет вводить данные с клавиатуры.
  2. В функции main() создается переменная типа float с именем x.
  3. Далее, в цикле while(scanf(%f, &x)) происходит считывание значения с клавиатуры и сохранение его в переменной x. С помощью функции scanf() происходит считывание числа с плавающей точкой (числа с десятичной частью).
  4. В каждой итерации цикла значение x выводится на экран с помощью функции printf(). Выводится значение x*x.
  5. Цикл продолжается до тех пор, пока на клавиатуре не будет введено значение.
  6. В конце функции main() возвращается 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.5 из 5
Похожие ответы