Ошибка при вводе дробного числа. - C (СИ)

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

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

Подскажите, пожалуйста, как при вводе числа через scanf выводить ошибку при вводе дроби либо символа. Сделать нужно именно через printf / scanf в bcpp =(
#include <stdio.h>
#include <conio.h>
 
int roman(int,int,char);
 
int main()
{
  clrscr();
  int a;
  short int b=1;
 
  printf("Перевод чисел из арабской в римскую.\n");
  printf("\n");
  printf("Введите число (Рабочий диапазон 1-3999 (I - MMMCMXCIX)):\n");
  while(b)  {
    scanf("%d",&a);
    if ((a>=1) && (a<=3999))
    {
      b=0;
      a=roman(a,1000,'M');
      a=roman(a,500,'D');
      a=roman(a,100,'C');
      a=roman(a,50,'L');
      a=roman(a,10,'X');
      a=roman(a,5,'V');
      a=roman(a,1,'I');
      getch();
      return 0;
    }
    else
    {
      printf("Число выходит за границы диапазона\a");
    }
  }
  return 0;
}

roman(int i,int j,char c)
{
while (i>=j) {putchar(c); i=i-j;}
return(i);
}

Решение задачи: «Ошибка при вводе дробного числа.»

textual
Листинг программы
    int flag = 0;
 
    while (!flag) {
        printf("enter the number: ");
        fflush(stdout);
        retval = scanf("%d%c", &a, &c);
        if (retval == 2 && c == '\n')
            flag = 1;
        else
            printf("incorrect\n");
    }

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

  1. Объявлена переменная типа int flag и инициализирована значением 0.
  2. Запущен цикл while, который будет выполняться до тех пор, пока значение переменной flag не станет равным 1.
  3. В каждой итерации цикла выводится сообщение enter the number: и с помощью функции fflush(stdout) обеспечивается вывод этого сообщения без символа новой строки.
  4. С помощью функции scanf() осуществляется попытка чтения числа. В качестве первого аргумента передается адрес переменной a, а вторым аргументом является символ 'c'.
  5. Если функция scanf() успешно прочитала число и символ новой строки (т.е. значение переменной c равно '\n'), то значение переменной flag устанавливается равным 1 и цикл прерывается.
  6. В противном случае выводится сообщение incorrect.

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


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

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

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