• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите отладить программу на С++

  • Автор темы Автор темы mSnick
  • Дата начала Дата начала

mSnick

Ученик
Регистрация
22 Дек 2011
Сообщения
2
Реакции
0
Баллы
0
Помогите отладить программу на С++

если срабатывает условие cin.good() == false (если например ввожу буквы вместо цифр), программа пишет ERROR!!, что впринципе правильно и тут же выходит из цикла и завершается, что неправильно :)
помогите пожалуйста исправить это



Код:
#include "stdafx.h"
using namespace std;
bool err = false;
double x, y;
char op;

double calc (double x, char op, double y);
void vvod_vivod();

int main()
{
	vvod_vivod();

}


void vvod_vivod()
{
char rep;
do
	{
		cout << "press math operation: ";
		cin >> x >> op >> y;
		if ( cin.good() == false )
			err = true;
		
			if (err == 0)
				cout <<  "Otvet: " <<  calc(x,op,y) << endl;
			else 
				cout << "ERROR!! \n";
		cout << "Repeat? [y/n] ";
		cin >> rep;
	}
while (rep == 'Y' || rep == 'y');
}


double calc (double x, char op, double y)
{
	switch (op)
	{
		case '+': 
			return x+y; break; 
		case '-': 
			return x-y; break;
		case '*': 
			return x*y; break;
		case '/': 
			if (y == 0){err = true; break;}
			else { return x/y; break;} 
	}	
}
 
все, сам разобрался. :tehnari_ru_160:
 
Назад
Сверху