Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вложенные циклы и двумерные массивы.docx
Скачиваний:
1
Добавлен:
24.11.2019
Размер:
3.51 Mб
Скачать

Использование двумерного массива

Листинг демонстрирует в одной программе инициализацию двумерного массива и проход по его элементам во вложенном цикле.

#include <iostream>

int main()

{

using namespace std;

int i, j, n, N, M[9][9];

do {

cout << "Enter size of matrix: ";

cin >> n;

} while(1 > n || n > 9);

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

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

M[i][j] = 0;

cout << endl;

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

{

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

cout <<" "<< M[i][j];

cout << endl;

}

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

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

M[i][j] = (i + 1) * 10 + j + 1;

cout << endl;

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

{

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

cout <<" "<< M[i][j];

cout << endl;

}

getchar();

getchar();

return 0;

}

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

7.

Операторы Ветвления

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

Здесь же мы исследуем, как C++ позволяет с помощью операторов ветвления принимать решения относительно выполнения одного из альтернативных действий.

Какое средство защиты от вампиров (чеснок или крест) следует избрать? Какой пункт меню выбрал пользователь? Ввел ли пользователь ноль?

Для принятия подобных решений в C++ предусмотрены операторы if и switch. Также поговорим об условной операции, которая предоставляет другой способ принятия решений, а также логических операциях, позволяющих комбинировать две проверки в одну.

Оператор if

Когда программа C++ должна принять решение о том, какое из альтернативных действий следует выполнить, такой выбор обычно реализуется оператором if.

Этот оператор имеет две формы:

  • просто if

  • if else.

Сначала исследуем простой if. Он создан по образцу обычного английского языка, как в выражении “If you have a Captain Cookie card, you get a free cookie” (игра слов на основе созвучности фамилии Кук и слова “cookie” (печенье) — прим. перев.).

Оператор if разрешает программе выполнять оператор или {блок операторов} при условии истинности проверочного условия, и пропускает этот оператор или блок, если проверочное условие оценивается как ложное. Т.е., оператор if позволяет программе принимать решение относительно того, нужно ли выполнять некоторую часть кода.

Синтаксис оператора if подобен while:

If (проверочное-условие)

оператор;

Истинность выражения проверочное-условие заставляет программу выполнить оператор, который может быть единственным оператором или блоком операторов. Ложность выражения проверочное-условие заставляет программу пропустить оператор (рис).

Как и с проверочными условиями циклов, тип проверочного условия if приводится к bool, поэтому ноль трактуется как false, а все, что отличается от нуля — как true. Вся конструкция if рассматривается как одиночный оператор.

Чаще всего проверочное-условие — выражение сравнения, вроде тех, которые управляют циклами. Например, предположим, что вы хотите запрограммировать подсчет пробелов во входной строке, а также общее количество символов. Для чтения символов можно использовать оператор cin.get (char) внутри цикла while, а затем с помощью оператора if идентифицировать и подсчитывать пробельные символы.

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

#include <iostream>

int main()

{

using namespace std;

char ch;

int spaces = 0;

int total = 0;

cin.get(ch);

while (ch != '.') // quit at end of sentence

{

if (ch == ' ') // check if ch is a space

++spaces;

++total; // done every time

cin.get(ch);

}

cout << spaces << " spaces, " << total;

cout << " characters total in sentence\n";

getchar();

getchar();

return 0;

}