Файл: Операторы циклов, их виды, особенности и области применения..pdf
Добавлен: 23.05.2023
Просмотров: 164
Скачиваний: 2
2.2.Базовые алгоритмы обработки двумерных массивов с помощью операторов цикла
Приведем сначала перечень базовых операций над матрицами и их элементами. К таким операциям относятся:
– ввод и вывод матриц – рассматривался в разделе 2;
– создание новой матрицы по заданному алгоритму;
– поиск элементов матрицы по определенному критерию;
– выполнение определенных операций над компонентами матриц (перестановка строк и столбцов, умножение матриц и т.д.).
Приведем несколько примеров использования базовых алгоритмов обработки двумерных массивов.
Пример 4. Вычислить количество положительных элементов квадратной матрицы, расположенных по периметру и на ее диагоналям.
int k, i, j, N, a [20] [20];
cout << "N ="; //ввод размерности квадратной матрицы
cin >> N;
cout << "Input Matrix A" << endl; //ввод элементов матрицы А
for (i = 0; i <N; i ++)
for (j = 0; j <N; j ++)
cin >> a [i] [j];
// цикл прохода по главной и боковой диагоналям
for (i = k = 0; i <N; i ++)
{
if (a [i] [i]> 0)
k ++;
if (a [i] [N-i-1]> 0)
k ++;
}
// цикл прохода по периметру матрицы
for (i = 1; i <N-1; i ++)
{
if (a [0] [i]> 0)
k ++;
if (a [N-1] [i]> 0)
k ++;
if (a [i] [0]> 0)
k ++;
if (a [i] [N-1]> 0)
k ++;
}
// проверка, пересекаются ли диагонали, если размерность матрицы – нечетное число
if ((N% 2! = 0) && (a [N / 2] [N / 2]> 0))
k--;
cout << "k =" << k << endl; //вывод результат
Пример 5. Найти все элементы матрицы, значения которых больше нуля.
int k, i, j, N, a [20] [20];
cout << "N ="; //ввод размерности квадратной матрицы
cin >> N;
cout << "Input Matrix A" << endl; //ввод элементов матрицы А
for (i = 0; i <N; i ++)
for (j = 0; j <N; j ++)
cin >> a [i] [j];
// циклы прохода по элементах матрицы
for (i = 0; i <N; i ++)
for (j = 0; j <N; j ++)
if (a [i] [i]> 0)
cout<<a[i][j];
Пример 6. Вывести на экран транспонированную квадратную матрицу.
int i, j, N, a [20] [20];
cout << "N ="; //ввод размерности квадратной матрицы
cin >> N;
cout << "Input Matrix A" << endl; //ввод элементов матрицы А
for (i = 0; i <N; i ++)
for (j = 0; j <N; j ++)
cin >> a [i] [j];
// транспонирование матрицы
for (i = 0; i <N; i ++)
{
for (j = 0; j <N; j ++)
cout<<a[j][i];
cout<<endl;
}
Приведенные выше алгоритмы обработки двумерных массивов будут использоваться на практике при написании программ для курсовой работы.
Заключение
Отсутствие циклов привело бы к большим затруднениям при работе с масивами, память отведенная под программу была бы перегружена, не говоря уже о трудоемкости и быстродействии программы. На протяжении всей работы мы рассматривали различные операторы циклов:
– цикл for (цикл со счетчиком);
– цикл while (цикл с предусловием будет выполняться до тех пор пока выражение принимает истинное значение, но стоит выражению принять ложное значение, то осуществляется переход к следующему оператору);
– цикл do … while (цикл с постусловием ведет себя противоположно циклу с предусловие, то есть, пока выражение ложное тело цикла продолжает повторяться, как только логическое выражение станет истинным, цикл прекратится).
Также были рассмотрены примеры использования циклов, а так же выяснили, что тело цикла с постусловием всегда выполняется хотя бы один раз, а тело цикла с предусловием может быть так и не выполнено[18], этот факт необходимо учитывать при написании программы.
Код любой программы должен быть читаемым. Для того чтобы код был читаемым, он должен удовлетворять некоторым требованиям по форматированию кода и стилю его написания.
Не стоит забывать и о использовании вложенных циклов, когда один цикл начинает свою работу, только после того как другой цикл закончил свою итерацию. Циклическую программу можно составить и для поиска максимального или минимального значения, в некоторых случаях это удобнее, чем использование стандартных алгоритмов поиска.
С точки зрения изучения язык С++ универсален и удобен в использовании. Язык программирования является строго типизированным языком, что позволяет использовать его при написании программ группами, что сейчас очень распространенно. При написании любой, даже самой маленькой программы необходимо помнить что, возможно, кому-то придется с ней работать, для этого при написании нужно учитывать все правила программирования.
Обработка массивов с помощью циклов еще более сокращает объем написания кода, так как для обработки массивов требуется многократное повторение однотипных действий.
Кроме того, циклы служат не только для обработки массивов, но и просто для выполнения повторяющихся действий.
Список использованных источников
- Джесс Либерти. Освой самостоятельно С++ за 21 день. Издательский дом «Вильямс». – 2009. – 230 с.
- Борис Пахомов. С/С++ и MS Visual C++ 2010 для начинающих. БХВ-Петербург. – 2011. – 436 с.
- Бьерн Страуструп. Программирование. Принципы и практика использования С++. Издательский дом «Вильямс». – 2011. – 258 с.
- Айвор Хортон. Visual C++ 2010. Полный курс. Издательский дом «Вильямс». – 2011. – 300 с.
- Дэвид Гриффитс, Дон Гриффитс. Изучаем программирование на С. Издательство «Эксмо». – 2013. – 400 с.
- Прата С. Язык программирования С++. Издание 6. Издательский дом «Вильямс» – 2011. – 304 с.
- Брайан Керниган, Деннис Ритчи. Язык программирования С++. Издательство «Невский диалект». – 2001. – 320 с.
- Р. Лафоре. Объектно-ориентированное программирование в С++. Издательство «Питер». Издание 4. – 2004. – 628 с.
- Хусаинов Б.С. Структуры и алгоритмы обработки данных. Примеры на языке Си. Учеб. пособие. – Финансы и статистика, 2004. – 464с.
- Кубенский А.А. Структуры и алгоритмы обработки данных: объектно-ориентированный подход и реализация на С++. – СПб.: БХВ-Петербург, 2004. – 464с.
- Седжвик Роберт. Фундаментальные алгоритмы на С++. Анализ/Структуры данных/Сортировка/Поиск: Пер. с англ./ Седжвик Роберт. К.: Издательство «ДиаСофт», – 2001. – 500 с.
- Язык С++: Учеб. Пособие /И.Ф. Астахова, С.В. Власов, В.В. Фертиков, А.В. Ларин.–Мн.: Новое знание, 2003. – 203 с.
- Лаптев В.В., Морозов А.В., Бокова А.В. С++. Объектно-ориентированное программирование. Задачи и упражнения. – СПб.: Питер. 2007. – 288 с.
- Кнут, Дональд, Эрвин. Искусство программирования. Том 1. Основные алгоритмы. 3-е изд. Пер. с англ. – : Уч. пос. М.: Издательский дом. «Вильямс», 2009.– 720с.
- С++ Стандартная библиотека. Для профессионалов./Н. Джосьютис. – СП Питер, 2012. – 350 с.
- Динман М.И. С++. Освой на примерах. – СПб.: БХВ-Петербург, 2006.– 260 с.
- Харви Дейтел, Пол Дейтел. Как программировать на С++. Пер. с англ. – М.: ЗАО «Издательство БИНОМ», 2012. – 430 с.
- Майерс С. Эффективное использование С++. 50 рекомендаций по улучшению ваших программ и проектов. Пер. с англ. – М.: ДМК Пресс; – СПб.: Питер. 2006.–240с.
- Штерн Виктор. Основы С++: Методы программной инженерии.– Издательство «Лори», 2003. – 860с.
- Скляров В.А. Язык С++ и объектно-ориентированное программирование. Справочное пособие. – Минск. «Вышейшая школа». – 1997г. – 478с.