Форум программистов, компьютерный форум CyberForum.ru

Как разрешить ввод только чисел типа int? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 112
17.02.2014, 00:32     Как разрешить ввод только чисел типа int? #1
Доброго времени суток. Подскажите, пожалуйста, как разрешить ввод только чисел типа int. Преподаватель очень любит заваливать на этом, введя например букву, там где нужно число. Очень важно, чтобы код был негромоздким.

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
#include <iostream>
#include <cstdio>
#include <conio.h>
 
using namespace std;
 
int roman (int,int,char);
int main()
{
    int a;
    cout << "Enter the number\n";
    cin >> a;
    if (a < '0') || (a > '9')
    {
        cout << "Good"
    }
    while (a<=0)
    {
        cout << "Enter positive number\n";
        cin >> a;
    }
    cout << "Your number is ";
    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;
}
int roman(int i,int j,char c)
{
    while (i>=j)
    {
        putchar(c);
        i=i-j;
    }
     return(i);
}
П. С. на форуме перечитал с этим все, что смог найти связанное, но там коды большие или зацикленные. Спасибо за понимание!
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
The_Prophet
8 / 8 / 0
Регистрация: 13.01.2013
Сообщений: 177
17.02.2014, 00:38     Как разрешить ввод только чисел типа int? #2
Donville, а что вы за код предоставили?
Опишите пожалуйста задачу точнее... нельзя даже вводить буквы, или при попытке ввода букв они не должны приниматься, выдавая соответствующее сообщение?
Как я понимаю вы в консоле Builder'а это пишите?
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 112
17.02.2014, 00:52  [ТС]     Как разрешить ввод только чисел типа int? #3
Пользуюсь я программой CodeBlocks. В обычной консоли происходит ввод всех данных. Программа выше переводит введенное пользователем число из арабской системы в римскую. Из вышеперечисленых Вами вариантов оба подходят.
The_Prophet
8 / 8 / 0
Регистрация: 13.01.2013
Сообщений: 177
17.02.2014, 02:12     Как разрешить ввод только чисел типа int? #4
Donville, ого... и где это преподают на кодблоке?)
Держи... ток библиотеку <ctype.h> к своим добавь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main(int argc, char* argv[])
{
 int ch,i,check;
 char Key[20];
m1:
 check = 0;
 cin >> Key;
 for(i=0;i<strlen(Key);i++)
  if(isdigit(Key[i])==false) check++;
 if (check==0)  { /* Перевод в римские*/ }
 else{
  cout << "\nPojaluista, vvedite chislo:\n";
  goto m1;
 }
        return 0;
}
Добавлено через 2 минуты
Donville, и если ты сюда чисто свой код кинул, то работать не будет, хотя бы потому что библиотеки неправильные объявлены)) нужны эти
C++
1
2
3
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
Хотя я в кодблоке не бывал. Может там либки такие корявые и так надо...
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.02.2014, 04:02     Как разрешить ввод только чисел типа int? #5
Цитата Сообщение от The_Prophet Посмотреть сообщение
и где это преподают на кодблоке?
А где это преподают goto использовать?

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
// в строке ввода только цифры, перед которыми могут быть + или -.
int a;
while (!(cin >> a) || (cin.peek() != '\n'))
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Error!" << endl;
}
The_Prophet
8 / 8 / 0
Регистрация: 13.01.2013
Сообщений: 177
17.02.2014, 08:50     Как разрешить ввод только чисел типа int? #6
alsav22, я думаю везде))
Напиши он код, который вы дали, преподаватель сразу почуял бы неладное. Однозначно)
stikkas
 Аватар для stikkas
19 / 19 / 6
Регистрация: 26.01.2014
Сообщений: 56
17.02.2014, 09:39     Как разрешить ввод только чисел типа int? #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
int i;
cin >> i;
if (!cin)
  throw "Not number"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2014, 10:10     Как разрешить ввод только чисел типа int?
Еще ссылки по теме:

Защита от дурака. Ввод данных типа int с клавиатуры. C++
как осуществить ввод только чисел C++
Как передать 0 в функцию типа f (int, int&) C++

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

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
17.02.2014, 10:10     Как разрешить ввод только чисел типа int? #8
Безопасный ввод через функцию-шаблон
Yandex
Объявления
17.02.2014, 10:10     Как разрешить ввод только чисел типа int?
Ответ Создать тему
Опции темы

Текущее время: 12:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru