Здавалка
Главная | Обратная связь

Применение do while на практике.



Предположим, нам необходимо написать программу, в которой пользователю предоставляется право выбора какого-то действия несколько раз подряд. Реализуем данную задачу сначала с помощью while, а затем с помощью do while.

#include <iostream>using namespace std;void main(){ int answer,A,B,RES; // запрос на выбор операции cout<<"\nSelect operation:\n"; cout<<"\n 1 - if you want to see SUM.\n"; cout<<"\n 2 - if you want to see DIFFERENCE.\n"; cout<<"\n 3 - if you want to exit.\n"; cin>>answer; while(answer!=3){ // проверка условия switch(answer){ case 1: // если пользователь выбрал сложение cout<<"Enter first digit:\n"; cin>>A; cout<<"Enter second digit:\n"; cin>>B; RES=A+B; cout<<"\nAnswer: "<<RES<<"\n"; break; // остановка switch case 2: // если пользователь выбрал вычитание cout<<"Enter first digit:\n"; cin>>A; cout<<"Enter second digit:\n"; cin>>B; RES=A-B; cout<<"\nAnswer: "<<RES<<"\n"; break; // остановка switch case 3: // если пользователь выбрал выход cout<<"\nEXIT!!!\n"; break; default: // если выбранное действие некорректено cout<<"\nError!!! This operator isn't correct\n"; } // запрос на выбор операции cout<<"\nSelect operation:\n"; cout<<"\n 1 - if you want to see SUM.\n"; cout<<"\n 2 - if you want to see DIFFERENCE.\n"; cout<<"\n 3 - if you want to exit.\n"; cin>>answer; } cout<<"\nBye....\n"; }

В данном примере пользователю предлагается выбрать действие. Затем, после ввода, программа проверяет: если это действие - выход из программы - программа завершается, если нет, то производится вход в цикл, анализ действия и выполнение математической операции. Затем программа, снова спросит у пользователя, что он хочет сделать.

Данный код является неоптимальным решением. Как видите фрагмент

// запрос на выбор операции cout<<"\nSelect operation:\n"; cout<<"\n 1 - if you want to see SUM.\n"; cout<<"\n 2 - if you want to see DIFFERENCE.\n"; cout<<"\n 3 - if you want to exit.\n"; cin>>answer;

повторяется несколько раз. В этом случае следует использовать do while. Данная конструкция приведет код к надлежащему виду.

#include <iostream>using namespace std;void main(){ int answer,A,B,RES; do{ // вход в цикл // запрос на выбор операции cout<<"\nSelect operation:\n"; cout<<"\n 1 - if you want to see SUM.\n"; cout<<"\n 2 - if you want to see DIFFERENCE.\n"; cout<<"\n 3 - if you want to exit.\n"; cin>>answer; // анализ действия switch(answer){ case 1: // если пользователь выбрал сложение cout<<"Enter first digit:\n"; cin>>A; cout<<"Enter second digit:\n"; cin>>B; RES=A+B; cout<<"\nAnswer: "<<RES<<"\n"; break; // остановка switch case 2: // если пользователь выбрал вычитание cout<<"Enter first digit:\n"; cin>>A; cout<<"Enter second digit:\n"; cin>>B; RES=A-B; cout<<"\nAnswer: "<<RES<<"\n"; break; // остановка switch case 3: // если пользователь выбрал выход cout<<"\nEXIT!!!\n"; break; default: // если выбранное действие некорректено cout<<"\nError!!! This operator isn't correct\n"; } } while(answer!=3); cout<<"\nBye....\n"; }

Исходя из вышесказанного, вы должны понимать, что обе описанные в сегодняшнем уроке конструкции полезны. Вам необходимо лишь научиться выбирать ту или иную, в зависимости от задачи.

Теперь, когда с циклами мы немного знакомы, вы можете перейти к следующему разделу данного урока. Мы приготовили для вас несколько примеров по сегодняшней теме.

Предыдущая Оглавление Следующая  
Предыдущая Оглавление Следующая
           

Примеры к уроку.

Пример 1.

Постановка задачи.

Написать программу, которая находит сумму всех целых чисел от 1 до 5 включительно.

Код реализации.

#include <iostream>using namespace std;void main(){ int BEGIN=1; // начало диапазона суммируемых значений int END=5; // конец диапазона суммируемых значений int SUMM=0; // переменная для накопления суммы int i=BEGIN; // управляющая переменная цикла // проверка условия while(i<=END){ //(сравнение управляющей переменной с окончанием диапазона) SUMM+=i;// накапливание суммы i++;// изменение управляющей переменной } // показ результата cout<<"Result - "<<SUMM<<"\n\n";}






©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.