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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.67
Johnlion
62 / 2 / 0
Регистрация: 11.05.2011
Сообщений: 666
#1

Проверка на отрицательное число - C++

13.05.2012, 21:22. Просмотров 3888. Ответов 10
Метки нет (Все метки)

Есть код, который проверяет, действительно ли введен int
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool log1 = true;
 
        while(log1)
        {
            cout << "Введите цифру = ";
 
            if ( !(cin >> Digit) || cin.get() != '\n' )
            {
                cin.clear();  // чистим поток
                cin.sync();  // убираем данные из буфера
                system("cls");
            }
            else
            {
                log1 = false;
                arrP[sizeP - 1]->SetDigit(Digit);
            }
                       }
Мне нужно к этому еще добавить проверку на положительное число, то есть можно вводить только числа > 0. Пробовал так:
C++
1
if ( !(cin >> Digit) || cin.get() != '\n' || ( (cin >> Digit) < 0 ) )
, но так не получается.

Как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2012, 21:22     Проверка на отрицательное число
Посмотрите здесь:

Найти отрицательное число и после отрицательное число заменить все элемент на нули - C++
Найти отрицательное число и после отрицательное число заменить все элемент на нули

Определить, сколько пар (положительное число, отрицательное число) находятся в начале массива - C++
Дан целочисленный массив B. Определить, сколько пар (положительное число, отрицательное число) находятся в начале массива.

Умножить каждое число на первое отрицательное число. Добавив к каждому числу половину последнего отрицательного числа - C++
Здравствуйте! подскажите как реализовать на си++ &quot;Умножить каждое число на первое отрицательное число. Добавив к каждому числу половину...

Отрицательное число в степени - C++
Как написать (-1) в какой - либо степени или это можно сделать с помощью условия .....?

Беззнаковое целое и отрицательное число - C++
Здравствуйте. Если я сначала из беззнакового целого числа вычту положительное число, а потом прибавлю большее положительное - будет ли то...

Введенное отрицательное число уменьшить на 2 - C++
Если введено отрицательное число требуется отнять от него 2. Так не получается ввожу -5 оно выводит -5... #include &lt;iostream&gt; ...

Найти первое отрицательное число - C++
Найти первое отрицательное число последовательности u = cos (ctg (n)), где n = 1,2,3 .. Я решаю но не пойму где ошибка, помогите...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
13.05.2012, 21:49     Проверка на отрицательное число #2
Цитата Сообщение от Johnlion Посмотреть сообщение
if ( (!(cin >> Digit) || cin.get() != '\n') || Digit < 0)
- вот так условие будет выгледеть, но лучше сначала проверить ввёлся ли инт а уж потом положителен ли он
-=ЮрА=-
Заблокирован
Автор FAQ
13.05.2012, 21:54     Проверка на отрицательное число #3
Johnlion, вот код для выделени только положительных интов
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
#include <iostream>
using namespace std;
 
int main()
{
    int val;
    bool bContinue = true;
    while(bContinue)
    {
        cout<<"Enter positive integer : ";
        if(!(cin>>val) || cin.get() != '\n')
        {
            cin.clear();
            cin.sync();
            cout<<"You enter not integer\n";
        }
        else
        if(val < 0)
            cout<<"You enter negative integer\n";
        else
            cout<<"You enter correct positive integer;)\n";
    }
    return 0;
}
Миниатюры
Проверка на отрицательное число  
Johnlion
62 / 2 / 0
Регистрация: 11.05.2011
Сообщений: 666
13.05.2012, 22:10  [ТС]     Проверка на отрицательное число #4
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- вот так условие будет выгледеть, но лучше сначала проверить ввёлся ли инт а уж потом положителен ли он
А есть разница? Так работает и все отлично) Там никаких боков, если написать (... || Digit < 0), не вылезет?
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
13.05.2012, 22:18     Проверка на отрицательное число #5
Цитата Сообщение от Johnlion Посмотреть сообщение
А есть разница?
разница в том что:
Цитата Сообщение от Johnlion Посмотреть сообщение
так не получается.
Johnlion
62 / 2 / 0
Регистрация: 11.05.2011
Сообщений: 666
13.05.2012, 22:19  [ТС]     Проверка на отрицательное число #6
Цитата Сообщение от lazybiz Посмотреть сообщение
разница в том что:
Как не получается? У меня получается, ввожу буквы или отрицательное число - оно меня просит заново ввести. Все ок.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
13.05.2012, 22:24     Проверка на отрицательное число #7
Цитата Сообщение от Johnlion Посмотреть сообщение
Как не получается?
Не знаю.
"так не получается." - это твои слова.
Johnlion
62 / 2 / 0
Регистрация: 11.05.2011
Сообщений: 666
13.05.2012, 22:25  [ТС]     Проверка на отрицательное число #8
Цитата Сообщение от lazybiz Посмотреть сообщение
Не знаю.
"так не получается." - это твои слова.
Внимательнее строчку прочти.

if ( !(cin >> Digit) || cin.get() != '\n' || ( (cin >> Digit) < 0 ) )
-=ЮрА=-
Заблокирован
Автор FAQ
13.05.2012, 22:34     Проверка на отрицательное число #9
Johnlion, разница есть причем в концепте,если мы ввели скажем строку вместо инта,то clear-ом и sync-ом "чистим" поток ввода,а когда вводим отрицательный инт надобности в чистке нет,но мы все равно будем ее делать т.к условие у нас будет и на плохой ввод и на минус инт.Зачем строить алгоритм,который делает лишнюю работу?Также разбор по условиям даст возможность точно сказать что же мы не так сделали:ввели минус или вобще строку вместо числа.
Johnlion
62 / 2 / 0
Регистрация: 11.05.2011
Сообщений: 666
13.05.2012, 22:37  [ТС]     Проверка на отрицательное число #10
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Johnlion, разница есть причем в концепте,если мы ввели скажем строку вместо инта,то клером и синком чистим поток ввода,а когда вводим отрицательный инт надобности в чистке нет,но мы все равно будем ее декать т.к условие у нас будет и на плохой ввод и на минус инт.Зачем строить алгоритм,который делает лишнюю работу?Также разбор по условиям даст возможность точно сказать что же мы не так сделали:ввели минус или вобще строку вместо числа.
Ясно, спасибо большое за пояснение. Но минус тут только один - лишняя работа, проблем не будет никаких больше?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2012, 22:43     Проверка на отрицательное число
Еще ссылки по теме:

Массивы. Найти четвертое отрицательное число - C++
Дан одномерный массив. Найти в нем четвертое отрицательное число(если его нет то вывести на екран текст: не найдено число)

Надо найти первое отрицательное число и - C++
Довести вектор с n элементов (1 &lt;= N &lt;= 100) компоненты чисел. Напишите программу, которая вычисляет количество элементов после того, как...

Почему функция возвращает отрицательное число? - C++
Почему функция возвращает отрицательное число? Причём передаю в функцию s&lt;=31, т.е. всё должно поместиться. И как это можно исправить? ...

Найти первое отрицательное число последовательности - C++
Найти первое отрицательное число последовательности u=cos(ctg(n)), где n=1,2,3….

В массиве заменить отрицательное на положительное число и наоборот - C++
Нужно в массиве заменить отрицательное на положительное число и наоборот!!! # include &lt;iostream&gt; # include &lt;ctime&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
13.05.2012, 22:43     Проверка на отрицательное число #11
нет на вводе" лишняя чистка" не отразится

Добавлено через 2 минуты
по крайней мере не вижу причин почему лишний сброс ошибки и очистка буфера могут навредить.НО как концепт это неверно делать лишнее,вот
Yandex
Объявления
13.05.2012, 22:43     Проверка на отрицательное число
Ответ Создать тему
Опции темы

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