Форум программистов, компьютерный форум 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 N=8 3,31 4,52 0,80 5,24 в конечном итоге матрица имеет такой вид: 3,31 3,31 3,31 3,31 3,31 3,31 3,31 3,31 4,52 4,52 4,52 4,52... http://www.cyberforum.ru/cpp-beginners/thread23474.html
C++ Помогите разобраться в обозначениях
Си++ изучал давно, а сейчас потребовалось все срочно вспомнить... Так вот помогите разобраться в следующих строчках: const f32 MOVEMENT_SPEED = 5.f; const u32 now = device->getTimer()->getTime(); u32 then = device->getTimer()->getTime(); А конкретно меня интересует: что означают записи u32, f32 и 5.f ...все остальное и так понятно... за ранее благодарен..
Найдите сумму элементов одномерного массива размерностью 10 C++
Составить программу следующего примера: Найдите сумму элементов одномерного массива размерностью 10.Разделите элемент этого массива на полученное значение (на языке С++):wall:
C++ Двумерный массив заполнить числами и вывести на экран http://www.cyberforum.ru/cpp-beginners/thread23442.html
Двумерный массив заполнить числами и вывести на экран.Поменять строки местами.Первую с последней.Все строки опустить вниз
C++ Задан вектор X[20]. Положительные числа переписать в массив Y, а отрицательные в массив W Помогите с задачками 1.Задан вектор X. Положительные числа переписать в массив Y, а отрицательные в массив W. 2.Определить, сколько раз в сформированной вами строке встречается каждый из символов, и какое из заданных сочетаний этих символов наиболее часто встречаются. 3.В файле хранится информация о финансовой деятельности предприятий за истекший год: наименование предприятия, месяц, доход... подробнее

Показать сообщение отдельно
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).
 
Текущее время: 08:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru