Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 2021 / OIT_lek_sem_22_09_2021.docx
Скачиваний:
1
Добавлен:
14.12.2023
Размер:
38.04 Кб
Скачать

Рассмотрим пример 4 использования структуры do/while.

Исходный текст включает прописные латинские буквы и заканчивается точкой ('.'). Определить количество повторов символа 'A' в заданном тексте.

Пример 4.

#include "stdafx.h"

#include <iostream>

using namespace std;

// основная функция main

void main() {

char ch;

int na = 0;

// do while

do {

cin >> ch;

if (ch == 'A') na += 1;

} while (ch != '.');

// количество повторов символа A в тексте

cout << "\n" << na;

}// конец функции main

В операторе do/while организован посимвольный ввод текста с проверкой в условном операторе введённого символа на совпадение с символом 'A'. Символ точка ('.') является условием окончания ввода текста.

4.5. Операторы прерывания

Операторы break (прервать) и continue (продолжить) изменяют поток управления. В структурах повторения операция break; досрочно прерывает цикл и осуществляет выход из блока при соблюдении заданного условия. Операция continue; вызывает пропуск следующих за ней операций тела цикла при соблюдении заданного условия, но без выхода из блока. Оператор перехода goto выполняет безусловный переход к указанной метке … goto MM; …; MM: …..; .

Покажем работу операторов прерывания на примерах 5 и 6 для задачи вывода на печать первого отрицательного число массива A[10]. В примере 5 код программы включает операторы break и continue.

Пример 5.

#include "stdafx.h"

#include <iostream>

using namespace std;

// основная функция main

Void main() {

int A[] = {5,7,-3,9,-5,1,7,8,-9,10};

int i, n;

n = sizeof(A) / sizeof(A[0]);

for (i = 0; i < n; i++) {

if (A[i] >= 0) continue;

cout << "\n A[i]" << A[i];

break;

}

}// конец функции main

В данной программе массив инициализирован (int A[]={5,7,-3,9,-5,1,7,8,-9,10};). Его размер равен числу заданных значений. Для универсальности значение размера вычисляется автоматически и заносится в переменную n, при этом sizeof(A) ‒ это размер в памяти всего массива A, а sizeof(A[0]) ‒ одного его элемента. Далее в структуре повторения for проверяется условие A[i]>=0, если оно истинно, то выполняется операция continue;, в противном случае выводится значение первого отрицательного числа и осуществляется досрочный выход из цикла (break;).

В примере 6 текст программы содержит оператор goto.

Пример 6.

#include "stdafx.h"

#include <iostream>

using namespace std;

// основная функция main

Void main() {

int A[] = {5,7,-3,9,-5,1,-7,8,9,10};

int i, n;

n = sizeof(A) / sizeof(A[0]);

for (i = 0; i < n; i++)

if (A[i] < 0) {

cout << A[i];

goto M;

}

M: cout << "\n goto M" << endl;

}// конец функции main

В цикле for проверяется условие A[i]<0; если оно истинно, то выводится значение первого отрицательного числа и осуществляется переход к метке M (goto M;).

В примере 7 проиллюстрируем работу оператора continue для лабораторной задачи № 5 (Выбрать из массива 0, х1, ... , х9) элементы с чётными номерами и записать их в массив y).

Пример 7.

#include "stdafx.h"

#include <iostream>

using namespace std;

// основная функция main

Void main() {

int i, x[10], k, y[4];

for (i = 0; i < 10; i++) {

cout << "x[" << i << "]=";

cin >> x[i];

};// ввод элементов массива x

k = 0;

for (i = 1; i < 10; i++) {

if (i % 2) continue;

y[k] = x[i];

k+=1;}

cout << "\n***y***";

cout << "\n";

for (i = 0; i < k; i++)

cout << "y[" << i << "]=" << y[i] << ' ';

}// конец функции main

Если условие (i % 2) истинно (то есть отлично от нуля), тогда выполняется операция continue; (вызывает пропуск следующих за ней операций тела цикла ­– y[k] = x[i]; k+=1; и возобновляет новую итерацию цикла).

Если условие (i % 2) ложно (то есть равно нулю), тогда выполняются операторы, следующие после условного оператора – y[k] = x[i]; k+=1;

Соседние файлы в папке Лекции 2021