Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2010, 18:27   #1
mister2010
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 18
По умолчанию Поставить условие

Как поставить условие так, чтоб если я введу действительное число, мне выдало ошибку в консоль и предложило ввести вновь число?
Код:
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{   
	setlocale(0,"Rus");
	int a,b,c;
	
	cout<<"Введите число а -> ";
	cin>>a;
	cout<<"\nВведите число b -> ";
	cin>>b;
	c = a + b;
    cout<<"\nСумма чисел а и б = "<<c<<endl;
	getch();
}
mister2010 вне форума Ответить с цитированием
Старый 22.05.2010, 18:43   #2
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Это исключительные ситуации. Юзай try-catch
Skype: CODERua
[CODER] вне форума Ответить с цитированием
Старый 22.05.2010, 18:57   #3
mister2010
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 18
По умолчанию

Подскажите как примерно.
mister2010 вне форума Ответить с цитированием
Старый 22.05.2010, 21:47   #4
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Что-то у меня не получилось поймать нужное исключение через
try и catch((.
Но ничего, предлагаю свой вариант
Код:
#include <iostream.h>
using namespace std;
int input(){
	   char ch[9];
	   int charinint=0, i=0, x=0;
	   gets(ch);
	   while (ch[x] != '\0')   x++;
	   while (i < x)  {
			if (ch[i] < 48 || ch[i] > 58) {
				cout<<"Ошибка! Повторите ввод!"<<endl;
				return input();
			}
			charinint=(charinint+(((int)ch[i])-48))*10;
			i++;
		}
return charinint/10;
}

void main() {
        setlocale(0,"Rus");
	int a, b;
	a = input();
	b = input();
	cout<<"Сумма чисел а и б = "<< a + b <<endl;
	system("pause");
}
Skype: CODERua
[CODER] вне форума Ответить с цитированием
Старый 22.05.2010, 22:08   #5
justso
Инженеришка
Форумчанин
 
Аватар для justso
 
Регистрация: 18.05.2010
Сообщений: 147
По умолчанию

Туплю, но объясните мне, что значит ввести не действительное число?

Интересно + зависла чего-то.
Ацко 342512564: Если по делу - то в случае острой необходимости. Если просто так - то в любое время.
justso вне форума Ответить с цитированием
Старый 22.05.2010, 22:31   #6
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Ввести не действительное число, значит введенное число НЕ должно иметь тип данных float, double и т.п. Что же тогда вводить если это должно быть число но не вещественное?..
Т. к. я знаю только два типа чисел - вещественные и все остальные.
Ответ: short, int, long и т. п.

У меня отрабатывает нормально.

П.С. Может я ошибаюсь? Поправьте пожалуйста.
Skype: CODERua
[CODER] вне форума Ответить с цитированием
Старый 22.05.2010, 22:39   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Да и вообще можно ввести какую-то левую строку без единой цифры...
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 22.05.2010, 22:43   #8
mister2010
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 18
По умолчанию

Чтоб если я введу действительное число или что-нибудь другое, чтоб программа написала ошибка и предложила ввести заново, как так сделать?
mister2010 вне форума Ответить с цитированием
Старый 22.05.2010, 23:01   #9
justso
Инженеришка
Форумчанин
 
Аватар для justso
 
Регистрация: 18.05.2010
Сообщений: 147
По умолчанию

Понятно. Пасиб.
Ацко 342512564: Если по делу - то в случае острой необходимости. Если просто так - то в любое время.
justso вне форума Ответить с цитированием
Старый 22.05.2010, 23:27   #10
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от mister2010 Посмотреть сообщение
Чтоб если я введу действительное число или что-нибудь другое, чтоб программа написала ошибка и предложила ввести заново, как так сделать?
Код:
#include <iostream>
#include <cstdlib>

using namespace std;

bool isTrueInt(const char* intstr)
{
	for (int i = 0; intstr[i] != '\0'; i++)
		if ( intstr[i] < '0' || intstr[i] > '9' )
			return false;

	return true;
}

int readInt()
{
	while (true) {
		char integ[10];

		cout << "Input integer: ";
		cin.getline(integ, 10);
		if ( isTrueInt(integ) )
			return atoi(integ);
		
		cout << "Wrong input, try again.\n";
	}
}

int main()
{
	cout << readInt() << endl;
	return 0;
}
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в С квадрат поставить? Ol'ga Общие вопросы C/C++ 10 31.10.2010 10:31
Поставить ограничение. sahthey Microsoft Office Access 8 29.04.2010 14:54
ПАСКАЛЬ. Поставить метки mistertvister Помощь студентам 6 30.10.2009 17:09
какое условие надо поставить?? kostya2 Общие вопросы C/C++ 7 12.05.2009 16:14
как правильно поставить условие ГОСЕАН Помощь студентам 5 27.04.2009 10:52