Операторы досрочного выхода из цикла 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Операторы досрочного выхода из цикла



В языке С++ имеются операторы, которые позволяют досрочно прекратить выполнение цикла, либо какой-то его итерации. К ним относятся:

break;  досрочно прекращение выполнения цикла. Далее управление переходит на оператор, следующий за оператором цикла.

continue; прекращает текущую итерацию цикла. Далее управление передается на проверку условия входа в цикл.

Пример. Оператор ЭВМ вводит последовательность из n чисел. Найти сумму положительных чисел до первого нуля.

#include<iostream.h>

int main (){

int a, i, s=0;

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

   cin >> a;

if (a ==0) break;// ввели 0, что означает прекратить суммирование

if (a <0) continue;/* ввели отрицательное число, значит его суммировать не нужно, поэтому дальнейшие команды пропускаем и переходим на начало цикла, ко вводу а*/

    s = s + a;

}

cout << s;

}

Как видно из примера, внутри операторов цикла могут быть вложены условные операторы.

Контрольные вопросы и задания

1. Какие операторы в языке С++ используются для реализации разветвляющихся алгоритмов? Приведите их синтаксис.

2. Какие операторы в языке С++ используются для реализации циклических алгоритмов? Приведите их синтаксис.

3. Каково назначение операторов break, continue, goto?

4. В чем разница между операторами while и do while?

5. Написать программу, которая по заданным значениям двух углов треугольника определяет, является ли он прямоугольным. Если треугольник с заданными размерами уголв не существует, то вывести сообщние об этом.

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

7. Написать программу, которая запрашивает у пользователя номер дня недели, затем выводит название дня недели или сообщение об ошибке, если введены неверные данные.

8. Написать программу, которая выводит на экран Ваше имя и фамилию 10 раз.

9. Написать программу, которая выводит в форме таблицы значения функции y = x 2 на отрезке [ a, b ] с шагом h.

10. *30 членов Совета директоров компании из 4-х кандидатов выбирают 31-го члена Совета. Причем каждый член Совета голосует ровно за одного из них. После голосования составляется протокло, в котором указывается только количество голосов за каждого кандидата. Написать программу для подсчета количества различных протоколов, которое может получиться. (Ответ: 5456.)

Массивы

 

Массив – структура или таблица однотипных элементов, занимающих непрерывную область памяти. Массив имеет: размер, имя, тип. Элементы обозначаются индексными именами. Нумерация элементов массива в языке С++ начинается с нуля.

Формат объявления массива.

тип имя [размер];

Пример. Объявить массив из 10 элементов.

int A [10];

Размер массива должен быть целочисленной константой. Задать константу-размер можно либо с помощью директивы define

# define n 5

либо создав константную переменную:

const n =5;

Размер можно явно не указывать, если при объявлении массива производится инициализация значений элементов.

int A [ ]={4, 6, 7, 8, 9};

В этом случае размер массива вычисляется по формуле:

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

Доступ к элементам массива осуществляется через индексные имена. Синтаксис:

имя[индекс];

Проход по элементам массива можно организовать с помощью цикла for.

const n=6;

Ввести  
int A[n];                                      

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

cin>>A[i];

 

Вывести
for(i=0; i<n; i++)

cout<<"A["<<i<<"]="<<A[i]<<endl;

Строка в языке С++ – это массив символов, в конце которого находится символ «\0», который является признаком конца строки. На этом факте и строятся все алгоритмы по обработке строк.

Пример. Объявить строку из 50 символов:

char str [51];

В данном объявлении 50 элементов будут заняты символами, а 51-й элемент – символ «\0».

Как и другие типы данных при объявлении строку можно проинициализировать. Пример.

char str [10]= "строка";

В данном объявлении 6 элементов будут заняты символами, 7-й элемент – символ «/0», три оставшиеся символы будут неопределенны.

В языке Си есть библиотека для обработки строк <string.h>.

#include<string.h>

gets (str); // ввод строки

puts (str); //вывести строку

i =0;

while (str [ i ]){ //перебор всех символов

cout<<str[i];

i++;

}

Ввод - вывод строк. При считывании строк операция >> считает пробел нулевым символом. То есть с ее помощью можно ввести строки, состоящие из оддного слова. Все напечатанное после пробела отбрасывается.

Для считывания строк, содержащих пробелы можно воспользоваться конструкцией cin. get ().

const int MAXL=80;

char str[MAXL];

cout<<" Введите строку ";

cin.get(str, MAXL);

cout <<"Вы ввели"<< str;

Первый аргумент метода cin. get () – адресмассива, куда будет помещена строка, второй аргумент – определяет максимальное количество считываемых символов, позволяя таким образом избежать переполнения. Данный метод может иметь третий аргумент – символ разделитель. В этом случае считывание будет происходить, пока не будет прочитано максимально допустимое количество символов, либо пока не встретился символ разделитель. По умолчанию значением этого аргумента является символ новой строки. Но если вызвать метод с другим значением аргумента, то признаком окончания ввода будет указанный символ. С помощью данного фрагмента программного кода

const int MAXL =180;

char str [ MAXL ];

cout <<"Введите текст";

cin. get (str, MAXL, '$ ');

cout <<"Вы ввели"<< str;

можно ввести текст, состящий из нескольких строк, заканчивающийся символом ' $ '.

Поиск элемента в строке. В данном алгоритме используется цикл while, т.к. не известен, размер строки, сколько нужно итераций для прохода по ней, на каком месте стоит искомый элемент.

char s[ ]= " Привет ";

char el=' р '; int i=0;

while (s[i]!=el&&s[i]){i++;}

if (i<strlen(s)) cout<<" есть ";

else cout <<"нет ";

Контрольные вопросы и задания

1. Что такое массив? Чем он характеризуется?

2. Приведите синтаксис объявляния массива и доступа к его элементу.

3. Как организовать последовательный перебор всех элементов массива?

4. Какие индексы будут иметь первый и последний элементы массива?

5. Как трактуется строка в языке С++?

6. Напишите опреатор с помощью которого можно вывести массив в обратном порядке (элементы, стоящие на нечетных позициях).

 



Поделиться:


Последнее изменение этой страницы: 2019-05-20; просмотров: 867; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.196.59 (0.016 с.)