Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
NeoDymium
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 3
1

Ошибка при вводе дробного числа.

08.03.2011, 22:50. Просмотров 1223. Ответов 5
Метки нет (Все метки)

Подскажите, пожалуйста, как при вводе числа через scanf выводить ошибку при вводе дроби либо символа. Сделать нужно именно через printf / scanf в bcpp =(

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#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);
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2011, 22:50
Ответы с готовыми решениями:

Switch: при вводе дробного числа программа выдает неправильные значения
При вводе не целого числа, например 0.5 программа выдает неправильные значение del Подскажите,...

Ошибка при вводе вещественного числа
При выполнении scanf(&quot;%f&quot;, &amp;e) программа не реагирует на нажатие любой клавиши. #include...

При вводе абсолютно произвольного числа выводить числа в символьном виде
Нужна программа которая при вводе абсолютно произвольного числа будет выводить числа в символьном...

Ошибка при вводе массива
Условие задачи: Заданы два одномерных массива из 8-ми элементов. Вывести массив Р, в котором...

Ошибка при вводе списка
вот еще есть задача на списки. уже час пытаюсь просто организовать ввод этого гребанного списка

5
accept
4842 / 3263 / 465
Регистрация: 10.12.2008
Сообщений: 10,569
09.03.2011, 05:03 2
C
1
2
3
4
5
    char c;
 
    retval = scanf("%d%c", &a, &c);
    assert(retval == 2 && "incorrect input");
    assert(c == '\n' && "expected a decimal number");
1
NeoDymium
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 3
09.03.2011, 22:59  [ТС] 3
просто выбрасывает при вводе дроби =)

Добавлено через 22 минуты
как задержать ошибку на экране?
0
accept
4842 / 3263 / 465
Регистрация: 10.12.2008
Сообщений: 10,569
10.03.2011, 02:12 4
C
1
2
3
4
5
6
7
8
    if (retval != 2) {
        print_error("incorrect input");
        return 1;
    }
    if (c != '\n') {
        print_error("expected a decimal number");
        return 1;
    }
C
1
2
3
4
void print_error(const char *s)
{
    fprintf(stderr, "error: %s\n", s);    
}
Добавлено через 5 минут
Цитата Сообщение от NeoDymium
выводить ошибку при вводе дроби либо символа
диалог и ошибка - это разные вещи

C
1
2
3
4
5
6
7
8
9
10
11
    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
NeoDymium
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 3
10.03.2011, 19:14  [ТС] 5
accept

спасибо, буду знать, я пока учусь только =)

Добавлено через 28 минут
а можно сделать чтобы после запроса вводилось определенное кол-во символов, а остальные нажатия клавиш игнорировались? например 4 символа ввел а потом жмешь клавиши, а символы не вводятся
0
accept
4842 / 3263 / 465
Регистрация: 10.12.2008
Сообщений: 10,569
11.03.2011, 03:33 6
для этого нужен перехват консоли
если по-простому, то getch() - нестандартная функция (может и не быть её)
0
11.03.2011, 03:33
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2011, 03:33

Ошибка при вводе данных в строку
Не могу ввести данные в строку, выдаёт ошибку #include &lt;stdio.h&gt; #include &lt;time.h&gt; #include...

Ошибка при вводе данных в программу
помогите, пжлста, ошибка при выводе(прога читает и выводит записи+создает новые) возможно из-за...

Нужно чтобы при вводе числа 0 программа завершала работу
Привет всем.Это моя первая тема:) У меня такая проблема,задание я сделал но вот не до конца.Нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.