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

Проверка ввода целого числа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как использовать функцию flush()? http://www.cyberforum.ru/cpp-beginners/thread23489.html
для проверки правильности вводимых данных использую такой код #include <stdio.h>; #include <iostream>; using namespace std; void main() { int a; while (!scanf("%d", &a)) {
C++ Сформировать матрицу размера M*N, у которого в каждом столбце содержатся все числа из исходного набора Даны целые положительные числа М и N инабор из М чисел. Сформировать матрицу размера M*N, у которого в каждом столбце содержатся все числа из исходного выбора(в том же порядке) M=4 ... http://www.cyberforum.ru/cpp-beginners/thread23474.html
C++ Помогите разобраться в обозначениях
Си++ изучал давно, а сейчас потребовалось все срочно вспомнить... Так вот помогите разобраться в следующих строчках: const f32 MOVEMENT_SPEED = 5.f; const u32 now = device->getTimer()->getTime();...
Данные про автомобили C++
Вообщем прошу помощи с данной задачкой: "Сведения об автомобиле состоят из его марки, номера и фамилии владельца. Даны сведения о 10 автомобилях. Найти фамилии владельцев и номера автомобилей...
C++ Найдите сумму элементов одномерного массива размерностью 10 http://www.cyberforum.ru/cpp-beginners/thread23443.html
Составить программу следующего примера: Найдите сумму элементов одномерного массива размерностью 10.Разделите элемент этого массива на полученное значение (на языке С++):wall:
C++ Двумерный массив заполнить числами и вывести на экран Двумерный массив заполнить числами и вывести на экран.Поменять строки местами.Первую с последней.Все строки опустить вниз подробнее

Показать сообщение отдельно
Night_Light
17 / 17 / 2
Регистрация: 14.02.2009
Сообщений: 86
20.02.2009, 10:33
Цитата Сообщение от voff4igg Посмотреть сообщение
Хорошо, а можно ещё вопрос... Вот такой вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int x; 
bool success = false;
 
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
cout << "Введите значение" << endl; 
while(!success)
{
cin >> x; 
if(cin.good())
{
cout << "Вы ввели значение " << x << endl; 
success = true;
}
else 
{
cout << "Значение введено неверно. Повторите ввод" << endl;
}
}
Как бы его заставить нормально работать? После ввода неверного значения получается бесконечный цикл с выводом сообщения о невером значении... ума не приложу почему.

Подскажите, пожалуйста, в чем я не прав в этой программе

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
using namespace std;
 
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
char input[10];
int value = INT_MIN;
cout << "Введите число" << endl;
cin >> input;
value = atoi(input);
cout << value << " " << errno << endl;
}
Проблема в том, что errno всегда 0, т.е. отловить ошибку ввода не представляется возможным... подскажите что-нибудь дельное пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
while(!success)
{
cin >> x; 
if(cin.good())
{
cout << "Вы ввели значение " << x << endl; 
success = true;
}
else 
{
cout << "Значение введено неверно. Повторите ввод" << endl;
}
}
попробуй присваивать false флагу success при неверном вводе

Добавлено через 9 минут 33 секунды
Цитата Сообщение от voff4igg Посмотреть сообщение

Подскажите, пожалуйста, в чем я не прав в этой программе

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
using namespace std;
 
void main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    char input[10];
    int value = INT_MIN;
    cout << "Введите число" << endl;
    cin >> input;
    value = atoi(input);
    cout << value << " " << errno << endl;
}
Проблема в том, что errno всегда 0, т.е. отловить ошибку ввода не представляется возможным... подскажите что-нибудь дельное пожалуйста
http://www.cplusplus.com/reference/c...dlib/atoi.html
> If no valid conversion could be performed, a zero value is returned.
Поставь проверку на ноль результата вызова atoi(input).
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru