- •Вложенные циклы и двумерные массивы
- •Инициализация двумерного массива
- •Использование двумерного массива
- •Операторы Ветвления
- •Оператор if
- •If (проверочное-условие)
- •Оператор if else
- •Форматирование операторов if else
- •Конструкция if else if else
- •Условные операции и предотвращение ошибок
- •Логические выражения
- •Операция ?:
- •Оператор switch
- •Использование перечислителей в качестве меток
- •Операторы break и continue
Использование двумерного массива
Листинг демонстрирует в одной программе инициализацию двумерного массива и проход по его элементам во вложенном цикле.
#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;
}