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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 113
#1

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

17.02.2014, 00:32. Просмотров 1346. Ответов 7
Метки нет (Все метки)

Доброго времени суток. Подскажите, пожалуйста, как разрешить ввод только чисел типа 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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2014, 00:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как разрешить ввод только чисел типа int? (C++):

Ограничение на ввод символов (разрешить ввод только цифр) - C++
Всем доброго времени суток! Я начал изучать С++ и у меня возник такой вопрос: Как ограничить ввод символов (разрешить ввод только...

Определите объединения, элементами которого являются массивы из трех чисел типа long и с шести чисел типа int - C++
Определите объединения, элементами которого являются массивы из трех чисел типа long и с шести чисел типа int. Значение элементов...

Ввод символа в переменную типа INT - C++
Доброго времени суток. Подскажите самый эффективный способ борьбы с неверным вводом данных пользователем. А именно когда пользователя...

Защита от дурака. Ввод данных типа int с клавиатуры. - C++
Данные типа int вводятся с клавиатуры. нужно поставить защиту от дурака. Полазил на форуме нашёл программу: по аналогии пытался...

как осуществить ввод только чисел - C++
мне нужно чтобы при вводе я не мог ничего вводить кроме чисел и математических знаков(+,/,*,-)

Как разрешить ввод пустой сроки в консоли? - C++
Подскажите пожалуйста, как сделать так чтобы пользователь мог вводить пустую строку? scanf при таком положении вещей переводит юзера на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
The_Prophet
8 / 8 / 0
Регистрация: 13.01.2013
Сообщений: 177
17.02.2014, 00:38 #2
Donville, а что вы за код предоставили?
Опишите пожалуйста задачу точнее... нельзя даже вводить буквы, или при попытке ввода букв они не должны приниматься, выдавая соответствующее сообщение?
Как я понимаю вы в консоле Builder'а это пишите?
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 113
17.02.2014, 00:52  [ТС] #3
Пользуюсь я программой CodeBlocks. В обычной консоли происходит ввод всех данных. Программа выше переводит введенное пользователем число из арабской системы в римскую. Из вышеперечисленых Вами вариантов оба подходят.
The_Prophet
8 / 8 / 0
Регистрация: 13.01.2013
Сообщений: 177
17.02.2014, 02:12 #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
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.02.2014, 04:02 #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 #6
alsav22, я думаю везде))
Напиши он код, который вы дали, преподаватель сразу почуял бы неладное. Однозначно)
stikkas
19 / 19 / 6
Регистрация: 26.01.2014
Сообщений: 56
17.02.2014, 09:39 #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
int i;
cin >> i;
if (!cin)
  throw "Not number"
SatanaXIII
Супер-модератор
Эксперт С++
5610 / 2644 / 245
Регистрация: 01.11.2011
Сообщений: 6,506
Завершенные тесты: 1
17.02.2014, 10:10 #8
Безопасный ввод через функцию-шаблон
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2014, 10:10
Привет! Вот еще темы с ответами:

Напишите перегруженную функцию power (), которая принимает два целочисленных параметра типа int и возвращает целочисленное значение типа int - C++
Операции над целыми числами осуществляются быстрее, чем над числами с плавающей точкой. Напишите перегруженную функцию power (), ...

Как передать 0 в функцию типа f (int, int&) - C++
Подскажите, почему при повторных вызовах f остается предыдущее значение S? Т.е. не обнуляется в теле f - {...s=0...} и как его обнулить?...

Передать массив элементов(типа int) объекта, в функцию из массивов(типа int) - C++
Представьте такую ситуацию. Есть у вас массив чисел: Mass И вы хотите передать его в функцию. Я делаю это так: //объявим ф-ю: ...

как осуществить ввод только нечетных целых чисел? - C++
вот в этой программе необходимо ввести n, которое нечетное целое # include &quot;iostream&quot; # include &lt;math.h&gt; # include &quot;iomanip&quot; #...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.02.2014, 10:10
Ответ Создать тему
Опции темы

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