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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проблемка с функцией gets(). Подскажите http://www.cyberforum.ru/cpp-beginners/thread616104.html
Проблема следующего характера: при первом проходе в цикле(i=0) функция store() работает корректно. При шаге i=1 и дальше строка gets(title); опускается компилятором. Подскажите пожалуйста в чем...
C++ Задача "Работа со строками" Вывести различные русские буквы трех предложений (то есть такие,какие есть только в одном из них) http://www.cyberforum.ru/cpp-beginners/thread616073.html
Подсчитать сколько слов, состоящих только из прописных букв, содержится в сообщении, и в каждом таком слове изменить все буквы на заглавные. C++
Подсчитать сколько слов, состоящих только из прописных букв, содержится в сообщении, и в каждом таком слове изменить все буквы на заглавные.
C++ Построить график зависимости
Помогите написать программу на С++ .Построить график зависимости расстояния от водной поверхности до верхней точки плавающего на воде тела от плотности материала данного тела, если это пирамида...
C++ Запустить функцию с именем из переменной http://www.cyberforum.ru/cpp-beginners/thread616047.html
Всем доброго времени суток! Можно ли вызвать функцию, имя которой написано в переменной? Например, в ЯП AutoIt такая возможность есть (выглядит так: Execute("func_name(params)")). Делаю класс...
C++ Задачка на высокосный год Дана структура, задающая дату вида: Struct date {int day; int month; int year;}; Пользуясь таким структурным типом, составить программу, определяющую: дату, которая наcтупит через m дней; ... подробнее

Показать сообщение отдельно
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2012, 07:04
Добавлено через 37 минут
Цитата Сообщение от Catstail Посмотреть сообщение
А так:

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;
 
}
Catstail, однин недостаток обнаружил. Если, в начале пустой строки, нажать забой, то минус печататься не будет.
Наверное, вместо:
C++
1
 if (c == 0) flgS=0;
нужно написать:
C++
1
if (c <= 0) {flgS=0; c = 0;}
Добавлено через 39 минут
Ещё можно строку 29 записать так:
C++
1
if (k == '\b' && c != 0)
, чтобы, если ввод будет организован после надписи ("Введите число "), не происходило, после затирания числа, затирание надписи.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru