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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2019, 09:30   #1
NIKITAY
Пользователь
 
Регистрация: 30.01.2016
Сообщений: 34
По умолчанию Запуск с параметром.

В коде есть цикл

Код:
 while (tmp< size_massiv2)
    {
       x1 = ((-b) + sqrt(d)) / (2 * a);
    x2 = ((-b) - sqrt(d)) / (2 * a);
    cout << "x1 = " << x1 << "\n";
    cout << "x2 = " << x2 << "\n";
  }
  if (d == 0) 
  {
    x1 = -(b / (2 * a));
    cout << "x1 = x2 = " << x1 << "\n";
  }
  if (d < 0) 
    cout << "D < 0, Действительных корней уравнения не существует";
        tmp += x1;
    }
я бы хотел сделать, что бы при запуске с параметром, допустим 1, работал этот цикл, а при запуске параметра 2, этот код работал без цикла, т.е. просто убрать счетчик.
можно просто написать If(argv[1]==1){} else {}
но тут и так много этих условий, получается как-то аляписто и код повторять надо. Как это можно сделать?
NIKITAY вне форума Ответить с цитированием
Старый 20.03.2019, 09:45   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от NIKITAY Посмотреть сообщение
но тут и так много этих условий, получается как-то аляписто и код повторять надо
поясните, что значит - "код повторять надо"?

а вообще, чудес не бывает.
нужно делать проверки в коде.

например, как один из вариантов - заводите нужные булевые переменные (повторять в цикле, например) в начале, присваивайте их согласно переданным параметрам.
а потом используйте в нужных местах.
Код:
bool bNeedLoop = false; // значение по умолчанию, когда параметров нет
 if(argv[1]==1) { bNeedLoop = true; }
 else  if(argv[1]==2) { bNeedLoop = false; }

....
 while (tmp< size_massiv2)
 {
  ....
     tmp += x1;
     if(!bNeedLoop) 
          break;          
  }
если не хотите break, то поменяйте цикл while на цикл с постусловием do while:
Код:
do {
      x1 = ((-b) + sqrt(d)) / (2 * a);
....
   cout << "D < 0, Действительных корней уравнения не существует";
        tmp += x1;
    }
while ((tmp< size_massiv2) && bNeedLoop)
Только учтите, что в вашем примере написана откровенная ерунда - внутри цикла переменные НИКАК не зависят от переменной цикла, сколько бы раз цикл не выполняли, значения a,b,c и, соответственно, вычисления x1,x2 в цикле будут одинаковые всегда. Хоть 100 раз выполните, 100 раз получите одни и то же.
Какой в этом смысл?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.03.2019, 10:41   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Смысл в том, что последущие ifы тоже должны быть в цикле.
p51x вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск приложения Windows из cmd с параметром nn25 Помощь студентам 8 27.06.2015 17:46
Запуск программы с параметром mrbadge Общие вопросы Delphi 11 21.08.2012 08:29
[Delphi] Запуск процедуры с параметром ZePr Помощь студентам 10 02.02.2011 16:32
Запуск с параметром AnKor94 Общие вопросы Delphi 1 09.01.2011 16:25
запуск с параметром... prizrak1390 Общие вопросы Delphi 4 16.05.2008 22:29