C++ за 21 день седьмое издание



Download 1,38 Mb.
bet94/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   90   91   92   93   94   95   96   97   ...   437
Bog'liq
word1

ЛИСТИНГ 6.12. Использование оператора continue для перезапуска



  1. оператора break для выхода из бесконечного цикла for______________________________




    1. #include




    1. using namespace std;

  1. :

    1. int main ()




    1. {




    1. for(;;) // бесконечный цикл




  1. :{

    1. cout « "Enter two integers: " « endl;




    1. int Numl = 0, Num2 = 0;

    2. cin » Numl;

1 0 : cin » Num2;
1 1 :

  1. cout « "Do you wish to correct the numbers? (y/n): ";




  1. char ChangeNumbers = '\0 *;




  1. cin » ChangeNumbers;



15:



  1. if (ChangeNumbers == 'y ’)




  1. continue; // перезапуск цикла!





  1. 19:

    cout

    «

    Numl

    «

    " x

    " «

    Num2

    «

    " =

    " «

    Numl

    * Num2

    2 0 :

    cout

    «

    endl;

    «

    " +

    " «

    Num2

    «

    " =

    " «

    Numl

    + Num2

    «

    Numl

    2 1 :




    «

    endl;
































































  2. cout « "Press x to exit or any other key to recalculate"




    1. endl;




  1. char UserSelection = *\0';




  1. cin » UserSelection;



25:



  1. if (UserSelection == ’x')




  1. break; // выход из бесконечного цикла




  1. }



29:



  1. cout « "Goodbye!" « endl;








  1. return 0;




  1. }

Изменение поведения цикла с использованием операторов continue и break

137



Результат


Enter two integers:


560
25


Do you wish to correct the numbers? (y/n): у


Enter two integers:
56
25


Do you wish to correct the numbers? (y/n): n


56 x 25 = 1400


56+25=81


Press x to exit or any other key to recalculate


r


Enter two integers:
95
-1


Do you wish to correct the numbers? (y/n): n


95 x -1 = -95


95+-1=94


Press x to exit or any other key to recalculate


x


Goodbye!


Анализ

Цикл f o r в строке 5 отличается от такового в листинге 6.11 тем, что он бесконечный,





    1. цикле отсутствует условие выхода, проверяемое на каждой итерации. Другими словами, без исполнения оператора b r e a k этот цикл (а следовательно, это приложение) никогда не завершится. Обратите внимание на вывод, который отличается от представленного до сих пор, — он позволяет пользователю поправить введенные числа, прежде чем программа перейдет к вычислению суммы и произведения. Эта логика реализуется в строках 16 и 17

  1. использованием оператора c o n tin u e , выполняемого при определенном условии. Когда пользователь нажимает клавишу <у> в ответ на запрос, хочет ли он исправить числа, усло­ вие в строке 16 возвращает значение t r u e , а следовательно, выполняется оператор c o n ­ tin u e . Оператор c o n tin u e возвращает выполнение к началу цикла, и пользователя снова спрашивают, не желает ли он ввести два целых числа. Аналогично в конце цикла, когда




    1. ответ на предложение выйти из программы пользователь вводит символ ' х ', условие в строке 26 выполняется и выполняется следующий далее оператор b _ re a k , заканчиваю ­ щий цикл.

Для создания бесконечного цикла в листинге 6.12 использован пустой опера­ тор for (;;). Вы можете заменить его оператором while (true) или do...


while (true); и получить тот же результат, хотя и будет использован цикл дру­ гого типа.

138 ЗАНЯТИЕ 6. Ветвление процесса выполнения программ





РЕКОМЕНДУЕТСЯ

Используйте цикл d o . . .w h ile , когда код в цикле должен быть выполнен по крайней мере один раз


Используйте циклы w h ile , d o . . . w h ile и f o r с хорошо продуманным условием выхода


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


РЕКОМЕНДУЕТСЯ

Не используйте оператор g o to


Не используйте операторы c o n tin u e и b re a k без крайней необходимости


Не используйте бесконечные циклы с операто­ ром b reak, если этого можно избежать



Программирование вложенных циклов

Как вы уже видели в начале этого занятия, вложенные операторы i f позволяют вло­ жить один цикл в другой. Предположим, есть два массива целых чисел. Программа поис­ ка произведения каждого элемента массива A r r a y l и каждого элемента массива А ггау2 будет проще, если использовать вложенный цикл. Первый цикл перебирает элементы мас­ сива A rr a y l, а второй цикл, внутри первого, перебирает элементы массива А ггау2 .


Листинг 6.13 демонстрирует, как можно вложить один цикл в другой.


ЛИСТИНГ 6.13. Использование вложенных циклов для умножения


каждого элемента одного массива на каждый элемент другого__________________________





  1. #include




  1. using namespace std;

2 :



  1. int main ()




  1. {




  1. const int ARRAY1_LEN = 3;




  1. const int ARRAY2_LEN = 2;








  1. int Mylntsl[ARRAY1_LEN] = {35, -3, 0};




  1. int Mylnts2 [ARRAY2_LEN] = {20, -lb-

1 0 :

  1. cout « "Multiplying each int in Mylntsl by each in Mylnts2:"

« endl;
1 2 :



  1. for(int Arrayllndex = 0; Arrayllndex < ARRAY1_LEN; ++Arrayllndex)




  1. for(int Array2lndex = 0;



Array2lndex < ARRAY2_LEN; ++Array2lndex)



  1. cout « • Mylntsl[Arrayllndex] « " x "




    1. Mylnts2[Array2Index] \




  1. « " = " « Mylntsl[Arrayllndex] * Mylnts2[Array2Index]




    1. endl;



17:



  1. return 0;




  1. }

Программирование вложенных циклов

139



Результат


Multiplying each int in Mylntsl by each in Mylnts2:



35

x

20=

700

35

x

-1=

-35

-3

x

20=

-60

-3

x

-1=

3

0

x 20 = 0




0

x -1 = 0






Анализ

Рассматриваемые вложенные циклы f o r находятся в строках 13 и 14. Первый цикл f o r перебирает массив M y ln ts l, а второй — массив M y ln ts2 . Первый цикл f o r запу­ скает второй в пределах каждой итерации. Второй цикл f o r перебирает все элементы массива M y ln ts2 , причем при каждой итерации он умножает этот элемент на элемент, проиндексированный переменной A rra y 1 In d e x из первого, внешнего, цикла. Так, для каждого элемента массива M y ln ts l второй цикл переберет все элементы массива Му-In ts 2 , в результате первый элемент массива M y ln ts l (со смещением 0) перемножается со всеми элементами массива M y ln ts2 . Затем второй элемент массива M y ln ts l перемножа­ ется со всеми элементами массива M y ln ts2 . И наконец, третий элемент массива M y ln ts l перемножается со всеми элементами массива M y ln ts2 .


Для удобства (и чтобы не отвлекаться от циклов) содержимое массивов в ли­ стинге 6.13 инициализируется. В предыдущих примерах, например в листин­ ге 6.10, показано, как позволить пользователю ввести числа в целочисленный массив.
Использование вложенных циклов для перебора многомерного массива

На занятии 4 вы узнали о многомерных массивах. В листинге 4.3 происходит обра­ щение к элементам двумерного массива из трех рядов и трех столбцов. Там обращение





  1. каждому элементу в каждом ряду осущ ествлялось индивидуально, и не было никакой автоматизации. Если бы массив стал большим или его размерностей стало больше, то для доступа к его элементам понадобилось бы много больше кода. Однако использование ци­ клов может все это изменить, как показано в листинге 6.14.

ЛИСТИНГ 6.14. Использование вложенных циклов для


перебора элементов двумерного массива___________________________________________





  1. #include




  1. using namespace std;



2 :

  1. int main()




  1. {




  1. const int MAX_ROWS = 3;




  1. const int MAX_COLS = 4;





140 ЗАНЯТИЕ 6. Ветвление процесса выполнения программ






  1. Download 1,38 Mb.

    Do'stlaringiz bilan baham:
1   ...   90   91   92   93   94   95   96   97   ...   437




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish