Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Ответ
 
Опции темы
Старый 22.05.2014, 05:34   #1
Nata Golden rose
Пользователь
 
Регистрация: 03.12.2008
Сообщений: 20
По умолчанию подскажите пожалуйста как остановить цикл сообщением об ошибке при делении на ноль и вернуться на начало программы

Добрый день

Подскажите пожалуйста как завершить цикл в случаи деления на ноль, вывести сообщение об ошибке и вернуться на начало программы, то есть обратно в начало функции main, я делала что то на подобе

Код:
 if((*(tree->valeur) == '/')&&(valeurR == 0)) printf("Error");
программа выводила сообщение об ошибки но при этом она также выполняла все остальные функции в main, а мне нужно было что бы она возвращалась на начало программы где запрашивается ввод выражения printf("Введите выражение"), может есть какой нибудь goto с этикеткой на начало программы или что то на подобе.


Код:
double evaluateExpr(struct node * tree)
{
   double valeurD=0, valeurG=0, valeur=0;
   if(tree->r != NULL&&tree->l != NULL)
   {
      if(*(tree->valeur) == '+') valeur = valeurL + valeurR;
      if(*(tree->valeur) == '-') valeur = valeurL - valeurR;
      if(*(tree->valeur) == '*') valeur = valeurL * valeurR;
      if(*(tree->valeur) == '/') valeur = valeurL / valeurR; // вот здесь при делении на ноль, 
 
   }
   else valeur=atof(arbre->valeur);       //operand
 
   return valeur;
}
Nata Golden rose вне форума Ответить с цитированием
Старый 22.05.2014, 08:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Можно и goto, но имхо лучше (читай феншуйнее) выкинуть весь код в некую bool foo(), которую в main() поставить в цикл:
Код:
bool Stop=false;
int main(){
 for(;!Stop;) foo();
}
А в самом коде в проверке деления:
Код:
 if((*(tree->valeur) == '/')&&(valeurR == 0)) {printf("Error"); return 0;}
Но а в конце foo() поставить Stop=true; чтоб выйти из цикла.
Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Остановить цикл при условии demiancz Общие вопросы Delphi 3 03.09.2012 15:04
ошибка при делении на ноль.. vityanya Общие вопросы Delphi 2 13.01.2011 06:29
Подскажите пожалуйста как написать или какие разделы/библиотеки изучить для написания программы в делфи7 CeLaVie Помощь студентам 2 27.08.2008 23:47
Как остановить цикл без Application.ProcessMessages Alar Общие вопросы Delphi 0 29.10.2006 21:18
как корректно остановить цикл. Alar Общие вопросы Delphi 0 29.10.2006 11:42


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS