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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 78, средняя оценка - 4.69
RakhimBek
165 / 1 / 0
Регистрация: 15.02.2012
Сообщений: 41
#1

Как поставить ограничение на ввод только числа - C++

28.06.2012, 22:44. Просмотров 11953. Ответов 50
Метки нет (Все метки)

у меня вопрос ) ))
как поставить ограничение на ввод
например я хочу вводить только числа )))

есть ли что то подобное как на паскаль ioresult ))
Как тридня пытась сишить местами ))

есть ли что то подобное delay() -- задержка по времени
и как напрмер изменит цвет выводимого текста как нибудь попроще
Dev C++ 4.9..
вроде она у меня единственная бодрячком пашет))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2012, 22:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как поставить ограничение на ввод только числа (C++):

Как лучше поставить ограничение на ввод букв, и знаков перпинания - C++
Добрый вечер! подскажите, как лучше поставить ограничение на ввод букв, и знаков перпинания (,.! ,пробел и других, которые используют в...

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

Ограничение на ввод только цифр - C++
Друзья, У тут меня проблемка возникла, помогите, пожалуйста ;) Коротко: я новичок, и я пишу программку для проверки таблицы умножения....

Ввод только целого числа - C++
Здравствуйте. Нужно сделать защиту от ввода букв, дробных чисел( 2.5) и цифр с запятой( 2,5) cin>>m; if (cin.fail()) { cout <<...

Вводится некоторое количество чисел. ввод кончается 0. оставить только повторяющиеся числа - C++
Вводится некоторое количество чисел. ввод кончается 0. выбросить все повторяющиеся числа вот рабочая программа #include <set> ...

Ограничение на ввод - C++
Как сделать ограничение, чтобы |x|>3? Помогите пожалуйста #include "stdafx.h" #include "conio.h" #include "stdio.h" #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Catstail
Модератор
22542 / 10947 / 1776
Регистрация: 12.02.2012
Сообщений: 18,083
29.06.2012, 18:14 #16
Так я, типа, так и делаю...
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.06.2012, 20:58 #17
Catstail, есть однин недостаток: если ничего не ввести, напишет, что ввели 0.
Catstail
Модератор
22542 / 10947 / 1776
Регистрация: 12.02.2012
Сообщений: 18,083
29.06.2012, 21:29 #18
"Бабушка, дай напиться, а то так есть хочется, аж переночевать негде..." Ну а что ты хочешь от функции типа int GetInt()?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.06.2012, 21:45 #19
Цитата Сообщение от Catstail Посмотреть сообщение
"Бабушка, дай напиться, а то так есть хочется, аж переночевать негде..." Ну а что ты хочешь от функции типа int GetInt()?
Корректной работы.
Catstail
Модератор
22542 / 10947 / 1776
Регистрация: 12.02.2012
Сообщений: 18,083
29.06.2012, 21:52 #20
Вот такой код:

C++
1
2
3
    int i;
    cin >> i;
    cout << "Input " << i << endl;
не выдаст ничего (сколько бы раз не жался ENTER), пока не будет что-либо введено. Я могу сделать, что GetInt просто не отдаст управление, пока что-либо не введешь. Это лучше?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.06.2012, 03:45 #21
Цитата Сообщение от Catstail Посмотреть сообщение
Вот такой код:

C++
1
2
3
    int i;
    cin >> i;
    cout << "Input " << i << endl;
не выдаст ничего (сколько бы раз не жался ENTER), пока не будет что-либо введено. Я могу сделать, что GetInt просто не отдаст управление, пока что-либо не введешь. Это лучше?
В коде присутствует счётчик ( int c), который никак не используется. Если убрать c++, при выводе минуса, то после вызова GetInt(), если не было ничего введено, с равен 0. Это можно использовать. Например так:
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
44
45
46
47
48
49
50
51
52
#include "conio.h"
#include "stdio.h"
 
int GetInt(int &c)
{
   int k,n=0,flgS=0;
   c = 0;
    while (1)
   {
 
        k=getch();
        if ((k == '-') && (flgS == 0)) 
       {
          flgS=-1;
          putch('-');
          //c++;
       }
 
       if ((k >= '0') && (k <= '9')) 
       {
           printf("%c",k);
           n=n*10+k-'0';
           c++;
       }
     
       if (k == 8)
       {
           putch(8);
           putch(' ');
           putch(8);
           n=n / 10;
           c--;
           if (c == 0) flgS=0;
       }
 
       if (k == 13) break;
 
    }
 
    if (flgS == -1) n=-n;
    return n;
}
 
int main(int argc, char* argv[])
{
    int c = 0;
    int m=GetInt(c);
    if (c == 0 ) printf("\nYou don't have inputted!\n");
    else printf("\nYou have inputed: %d\n",m);
    return 0;
 
}
Catstail
Модератор
22542 / 10947 / 1776
Регистрация: 12.02.2012
Сообщений: 18,083
30.06.2012, 08:35 #22
Цитата Сообщение от alsav22 Посмотреть сообщение
В коде присутствует счётчик ( int c), который никак не используется
Посмотри на строку 33...

Впрочем, я для того и опубликовал код, чтобы им пользовались... Позже я дам свою версию, как не отдавать управления, пока не введено что-либо.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.06.2012, 14:32 #23
Цитата Сообщение от Catstail Посмотреть сообщение
Посмотри на строку 33...
Виноват.
Catstail
Модератор
22542 / 10947 / 1776
Регистрация: 12.02.2012
Сообщений: 18,083
30.06.2012, 18:13 #24
Вот вариант:

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
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "conio.h"
#include "stdio.h"
 
int GetInt()
{
   int k,n=0,flgS=0,c=0,q=0;
 
    while (1)
   {
 
        k=getch();
        if ((k == '-') && (flgS == 0)) 
       {
          flgS=-1;
          putch('-');
          c++;
       }
 
       if ((k >= '0') && (k <= '9')) 
       {
           printf("%c",k);
           n=n*10+k-'0';
           c++;
           q++;
       }
     
       if (k == 8)
       {
           putch(8);
           putch(' ');
           putch(8);
           n=n / 10;
           q--;
           if (q < 0) q=0;
           c--;
           if (c == 0) flgS=0;
       }
 
       if ((k == 13) && (c != 0) && (q != 0)) break;
 
    }
 
    if (flgS == -1) n=-n;
    return n;
}
 
int main(int argc, char* argv[])
{
 
    int m;
 
    m=GetInt();
    printf("\nYou have inputed: %d\n",m);
    return 0;
 
}
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.06.2012, 18:56 #25
Цитата Сообщение от Catstail Посмотреть сообщение
Вот вариант:
Есть недостаток. Если ввести число, а потом минус, то можно дальше вводить число. Выводит отрицательное, полученное соединением числа до минуса с числом после минуса.
Catstail
Модератор
22542 / 10947 / 1776
Регистрация: 12.02.2012
Сообщений: 18,083
30.06.2012, 19:03 #26
А так:

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include "conio.h"
#include "stdio.h"
 
int GetInt()
{
   int k,n=0,flgS=0,c=0,q=0;
 
    while (1)
   {
 
        k=getch();
 
        if ((k == '-') && (c == 0) && (flgS == 0)) 
       {
          flgS=-1;
          putch('-');
          c++;
       }
 
       if ((k >= '0') && (k <= '9')) 
       {
           printf("%c",k);
           n=n*10+k-'0';
           c++;
           q++;
       }
     
       if (k == 8)
       {
           putch(8);
           putch(' ');
           putch(8);
           n=n / 10;
           q--;
           if (q < 0) q=0;
           c--;
           if (c == 0) flgS=0;
       }
 
       if ((k == 13) && (c != 0) && (q != 0)) break;
 
    }
 
    if (flgS == -1) n=-n;
    return n;
}
 
int main(int argc, char* argv[])
{
 
    int m;
 
    m=GetInt();
    printf("\nYou have inputed: %d\n",m);
    
    return 0;
 
}
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
30.06.2012, 19:04 #27
почему никто не говорит про isdigit()?
Catstail
Модератор
22542 / 10947 / 1776
Регистрация: 12.02.2012
Сообщений: 18,083
30.06.2012, 19:05 #28
А зачем? Обошёлся...
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.06.2012, 19:42 #29
Цитата Сообщение от Catstail Посмотреть сообщение
А так:
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
30.06.2012, 21:13 #30
Цитата Сообщение от RakhimBek Посмотреть сообщение
например я хочу вводить только числа
проверить введена ли цифра можно с помощью функции isdigit,она возвращает ноль,если не цифра и не ноль,если
угадайте что?
цифра
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2012, 21:13
Привет! Вот еще темы с ответами:

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

Как осуществить ввод числа, не зная какой тип числа будет введён? - C++
И не объявляя вводимую переменную как double...

Ограничение на ввод букв! - C++
Приветствую Вас друзья! В общем такая проблема: Нужно выполнить проверку на ввод только цифр, если вместо цифры введена буква запросить...

3. Написать функцию, которая обеспечивает ввод с клавиатуры целого положительного числа. Функция из набора знаков должна возвращать только целые полож - C++
Написать функцию, которая обеспечивает ввод с клавиатуры целого положительного числа. Функция из набора знаков должна возвращать только...


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

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

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