Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Алгоритмизация и программирование на языке С++. Ч.1. Учебник
.pdf
Задания длясамостоятельного выполнения
181
сивов. Результат получить в массиве А. Удаление элемента
массива с заданным индексом осуществить в функции.
9. В массив В размером 4×5 вставить после строки, содержащей максимальное количество положительных элементов,
столбец массива С размером 5×6, содержащий максимальное
количество положительных элементов. Определение количества положительных элементов в заданной строке (или столбце) матрицы осуществить в функции.
10. Упорядочить по возрастанию элементы массивов А
размером 9 и В размером 11, расположенные после максимального элемента. Упорядочение части массива, начинающейся элементом с заданным индексом, осуществить в функции.
11. Даны матрицы А размером 6×5 и С размером 7×4. Объ-
единить массивы, сформированные из сумм положительных
элементов столбцов матриц А и С. Суммирование положительных элементов столбцов с получением результата в виде
массива осуществить в функции.
12. В заданной квадратной матрице найти максимальный элемент среди элементов, расположенных ниже главной
диагонали (включая диагональ), и минимальный элемент
среди элементов, расположенных выше главной диагонали.
Удалить столбцы, в которых они находятся. Удаление столбца оформить в виде функции.
13. В двух заданных матрицах найти максимальные элементы и поменять их местами. Поиск максимального элемента матрицы оформить в виде функции.
14. Заданы две матрицы одинакового размера. Столбец
первой матрицы, содержащий максимальный элемент матрицы, поменять местами со столбцом второй матрицы, содержащим максимальный элемент. Поиск столбца, содержащего максимальный элемент матрицы, оформить в виде
функции.
15. В заданной матрице удалить строки, содержащие максимальный и минимальный элементы матрицы. Удаление
строки оформить в виде функции.

182
АЛГОРИТМИЗАЦИЯ ИПРОГРАММИРОВАНИЕ НАЯЗЫКЕ С++
16. В заданной матрице элементы каждой строки расположить в порядке возрастания. Упорядочение элементов
строки оформить в виде функции.
17. Для каждой из трех заданных матриц найти среднее значение ее элементов без учета максимального и минимального
элементов. Полученные значения занести в одномерный массив.
Определить, образовали ли полученные значения убывающую
или возрастающую последовательность. Нахождение среднего значения элементов матрицы оформить в виде функции.
18. В двух заданных одномерных массивах расположить
отрицательные элементы в порядке убывания (оставив положительные элементы на прежних местах). Упорядочение отрицательных элементов массива оформить в виде функции.
19. В двух заданных матрицах расположить строки в порядке убывания их максимальных элементов. Упорядочение
строк матрицы оформить в виде функции.
20. В двух заданных квадратных матрицах упорядочить
элементы главной диагонали по возрастанию. Упорядочение
диагональных элементов оформить в виде функции.
21. В заданной матрице удалить все строки, содержащие
нулевые элементы. Удаление строки оформить в виде функции.
22. В двух заданных матрицах удалить все столбцы, не
содержащие нулевых элементов. Удаление столбца матрицы
оформить в виде функции.
23. Для двух заданных квадратных матриц составить одномерные массивы из минимальных элементов строк, расположенных правее элементов главной диагонали (включая диагональ). Формирование одномерного массива оформить в виде
функции.
24. Для заданной матрицы сформировать два одномерных
массива, состоящих из количества отрицательных элементов строк и максимальных среди отрицательных элементов
столбцов. Использовать функции.
25. В двух заданных матрицах по пять наибольших элементов увеличить вдвое, остальные вдвое уменьшить. Преобразование матрицы оформить в виде функции.

Задания длясамостоятельного выполнения
183
26. В двух заданных квадратных матрицах столбец, содержащий максимальный элемент матрицы, поменять местами с главной диагональю. Поиск максимального элемента и дальнейшее преобразование матрицы оформить в виде
функций.
27. В двух заданных матрицах найти строку, содержащую
максимальное количество отрицательных элементов. Нахождение количества отрицательных элементов строк матрицы
и поиск среди них максимального оформить в виде функций.
28. В двух заданных матрицах одинакового размера поменять строки, содержащие максимальное количество отрицательных элементов. Нахождение количества отрицательных
элементов заданной строки матрицы осуществлять в функции. Определение номера строки, содержащей максимальное
количество отрицательных элементов, осуществлять в функции.
29. В двух заданных матрицах максимальные элементы
четных строк заменить нулями, нечетных – умножить на номер столбца, в котором они находятся. Использовать функции.
30. Две функции y = f
(x) и y = f2(x) заданы таблично на
1
отрезке [A, B]:
а) определить, является ли каждая их этих функций монотонно убывающей или монотонно возрастающей на заданном отрезке. Проверку монотонности оформить в виде функции;
б) найти все интервалы монотонности. Использовать функцию;
в) найти самый длинный интервал монотонности. Использовать функцию.

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

1. Подбельский В.В. Программирование. Базовый курс
С# : учебник для бакалавриата и специалитета. М. : Юрайт,
2019. 369 с.
2. Страуструп Бьерн. Язык программирования С++. 2-е
изд., доп. М. : Вильямс, 2019. 320 с.
3. Брайан Керниган, Деннис Ритчи. Язык программиро-
вания C. М. : Вильямс, 2015. 304 с.
4. Симула : материал из Википедии – свободной энциклопедии. © Wikimedia Foundation, Inc. URL: https://ru.wikipedia.
org/wiki/Симула
5. Алгол 68. Словари и энциклопедии на Академике. ©
Академик, 2000–2022. URL: https://dic.academic.ru/dic.
nsf/ruwiki/54000
6. Ада. Словари и энциклопедии на Академике. © Академик, 2000–2022. URL: https://dic.academic.ru/dic.nsf/
es/67837/АДА
7. CLU. Словари и энциклопедии на Академике. © Академик, 2000–2022. URL: https://dic.academic.ru/dic.nsf/
ruwiki/970966
8. Язык программирования С++. Специальное издание :
пер. с англ. М. : ООО Бином-Пресс, 2019. 1136 с.: ил. .
9. С++ : материал из Википедии – свободной энциклопедии. © Wikimedia Foundation, Inc. URL: https://ru.wikipedia.
org/wiki/C%2B%2B
10. Страуструп Б. Язык программирования С++. Краткий курс : пер. с англ. 2-е изд. СПб. : ООО «Диалектика»,
2019. 320 с.: ил. С. 288.
11. Интегрированная среда разработки : материал из Википедии – свободной энциклопедии. © Wikimedia Foundation, Inc. URL: https://ru.wikipedia.org/wiki/Интегрированная_среда_разработки
12. Dartmouth BASIC. From Wikipedia, the free encyclopedia. © Wikimedia Foundation, Inc. URL: https://en.wikipedia.
org/wiki/Dartmouth_BASIC

186
АЛГОРИТМИЗАЦИЯ ИПРОГРАММИРОВАНИЕ НАЯЗЫКЕ С++
13. Обучение кодированию в Visual Studio. © 2022 Microsoft. URL: https://visualstudio.microsoft.com/ru/vs/gettingstarted/
14. Лучшие компиляторы кода и IDE для C++. URL:
https://timeweb.com/ru/community/articles/luchshie-kompilyatory-koda-i-ide-dlya-c
15. OnlineGDB. © 2016–2022 GDB Online. URL: https://
www.onlinegdb.com/online_c++_compiler
16. include и заголовочный файлы. © Хостинг Консультант 2018–2022. URL: https://wiki.dieg.info/include
17. Что такое решения и проекты в Visual Studio? ©
Microsoft 2022. URL: https://learn.microsoft.com/ru-ru/visualstudio/ide/solutions-and-projects-in-visual-studio?view=
vs-2022
18. Почему с ‘using namespace std;’ в *.cpp-файлах может
быть очень плохо. © 2006–2022, Habr. URL: https://habr.
com/ru/post/580204/
19. Пакетный файл. © Wikimedia Foundation, Inc. URL:
https://ru.wikipedia.org/wiki/Пакетный_файл
20. Командный файл. © Академик, 2000–2022. URL:
https://dic.academic.ru/dic.nsf/ruwiki/976118
21. Ресурсы по C++. Личный сайт Мальвины Пушковой.
URL: http://www.mal-bioit.ru/cpp
22. Список онлайн-компиляторов С++. © 2006–2022. Образовательный портал для начинающих программистов 3TY.RU.
URL: https://3ty.ru/languages/language-c/onlayn-kompilyatory-
2
c?ysclid=l8ogw
kspz448179281
23. Object.Equals Метод. © Microsoft 2022. URL: https://
learn.microsoft.com/ru-ru/dotnet/api/system.object.
equals?view=net-5.0
24. Система типов C++. © Microsoft 2022. URL: https://
docs.microsoft.com/ru-ru/cpp/cpp/cpp-type-system-moderncpp?view=msvc-160
25. Диапазоны типов данных. © Microsoft 2022. URL:
https://docs.microsoft.com/ru-ru/cpp/cpp/data-typeranges?view=msvc-160&viewFallbackFrom=vs-2019

Библиографический список
187
26. Литералы. © 2008–2022 RadioProg.RU. URL: https://
radioprog.ru/post/1103
27. Числовые, логические литералы и литералы-указатели.
© Microsoft 2022. URL: https://docs.microsoft.com/ru-ru/cpp/
cpp/numeric-boolean-and-pointer-literals-cpp?view=msvc-160
28. Строковые и символьные литералы (C++). © Microsoft 2022. URL: https://docs.microsoft.com/ru-ru/cpp/cpp/
string-and-character-literals-cpp?view=msvc-160
29. Строковые и символьные литералы (C++). © Microsoft
2022. URL: https://learn.microsoft.com/ru-RU/cpp/cpp/stringand-character-literals-cpp?view=msvc-170&viewFallbackFrom
=vs-2015
30. Mikael Olsson C++20 Quick Syntax Reference: A Pocket Guide to the Language, APIs, and Library. Hammarland,
Finland, 2020. URL: https://www.rulit.me/data/programs/
resources/pdf/Olsson_C-20-Quick-Syntax-Reference_RuLit_
Me_670053.pdf
31. Шилдт Г. С++. Базовый курс : пер. с англ. 3-е изд.
М.: Издательский дом «Вильямс», 2010. 624 с. URL: https://
www.phantastike.com/other/s_bazovyiy_kurs/djvu/view/
32. Форматированный ввод/вывод в С++. © 2022 CppStudio. URL: http://cppstudio.com/post/319/
33. О строковом форматировании в современном C++. ©
2006–2022, Habr. URL: https://habr.com/ru/post/318962/
34. Алгоритм сортировки. © Академик, 2000–2022. URL:
https://dic.academic.ru/dic.nsf/ruwiki/36277
35. Как обменять значениями две переменные (swap)?
URL: https://users.livejournal.com/-winnie/37283.html
36. Директивы препроцессора. © Microsoft 2022. URL:
https://learn.microsoft.com/ru-ru/cpp/preprocessor/preprocessor-directives?view=msvc-160&viewFallbackFrom=vs-2019
37. Директивы препроцессора в Си. URL https://progcpp.ru/c-directives/
38. Директива #error (C/C++). © Microsoft 2022 URL:
https://learn.microsoft.com/ru-ru/cpp/preprocessor/hash-error-directive-c-cpp?view=msvc-160

188
АЛГОРИТМИЗАЦИЯ ИПРОГРАММИРОВАНИЕ НАЯЗЫКЕ С++
39. Директива #import (C++). © Microsoft 2022 URL:
https://learn.microsoft.com/ru-ru/cpp/preprocessor/hash-error-directive-c-cpp?view=msvc-160
40. Ликбез по типизации в языках программирования. ©
2006–2022, Habr. URL: https://habr.com/ru/post/161205/
41. Оператор typeid. © Microsoft 2022. URL: https://docs.
microsoft.com/ru-RU/cpp/cpp/typeid-operator?view=msvc-160
42. Класс type_info. © Microsoft 2022. URL: https://docs.
microsoft.com/ru-ru/cpp/cpp/type-info-class?view=msvc-160
43. Широков А.И., Пышняк М.О. Информатика : основы
разработки программ на языке программирования Питон :
учебник. Ч. 1. М. : Изд. Дом НИТУ «МИСиС», 2019. 146 с.
44. Типизация языков программирования : разбираемся
в основах. Tproger. URL: https://tproger.ru/explain/tipizacija-jazykov-programmirovanija-razbiraemsja-v-osnovah/
45. Встроенные операторы C++, приоритет и ассоциативность. © Microsoft 2022. URL: https://learn.microsoft.
com/ru-ru/cpp/cpp/cpp-built-in-operators-precedence-andassociativity?view=msvc-160
46. Алфавитный указатель функций CRT. pow, powf, powl.
© Microsoft 2022. URL: https://docs.microsoft.com/ru-ru/
cpp/c-runtime-library/reference/pow-powf-powl?view=msvc160&viewFallbackFrom=vs-2017

Обработка исходного файла, написанного на языке программирования высокого уровня, предполагает несколько
этапов. Если программа написана на языке С++, то это трехэтапный процесс:
• препроцесинг;
• компиляция;
• компоновка.
Компиляция предполагает превращение исходного кода
в машинный код. На этапе компоновки откомпилированные
файлы формируются в исполнимый файл.
Опишем подробнее первый этап, на котором формируется окончательный состав исходного кода программы. Он
заключается в том, что текст, написанный программистом,
до компиляции подвергается обработке в соответствии с директивами препроцессора. Они начинаются с символа #.
По адресу препроцессор распознает следующие 14 директив [36]:
1) #dene +
2) #elif +
3) #else +
4) #endif +
5) #error +
6) #if +
7) #ifdef +
8) #ifndef +
9) #import
10) #include +
11) #line
12) #pragma
13) #undef
14) #using
В других источниках (например, [37]) – двенадцать:
#include
1)
– вставляет текст из указанного файла;

190
2)
#dene
– задает макроопределение (макрос) или симво-
АЛГОРИТМИЗАЦИЯ ИПРОГРАММИРОВАНИЕ НАЯЗЫКЕ С++
лическую константу;
#undef
3)
4)
– отменяет предыдущее определение;
#if
– осуществляет условную компиляцию при истин-
ности константного выражения;
#ifdef
5)
– осуществляет условную компиляцию при опре-
деленности символической константы;
#ifndef
6)
– осуществляет условную компиляцию при не-
определенности символической константы;
#else
7)
– ветка условной компиляции при ложности вы-
ражения;
#elif
8)
– ветка условной компиляции, образуемая слия-
нием else и if;
#endif
9)
10)
– конец ветки условной компиляции;
#line
– препроцессор изменяет номер текущей строки
и имя компилируемого файла;
#error
11)
12)
– выдача диагностического сообщения;
#pragma
– действие, зависящее от конкретной реализа-
ции компилятора.
using
и
import
Отсутствуют
.
Рассмотрим основные директивы. Начнем с важнейшей
директивы
#include
:
#include <имя_файла>
или
#include «имя_файла»
Когда в коде программы встречается эта директива, производится замена этой строки на содержимое указанного файла. В случае
#include <имя_файла>
директориях среды разработки. В случае
файлы ищутся в специальных
#include "имя_файла"
–
в каталоге, где сохранен исходный файл. Во многих средах
разработки включаемые этой директивой файлы находятся
в каталогах
include
. В среде Dev C++ версии 5.11 имеется 6 ка-
талогов с таким именем.
Файл
iostream
содержит описание средств (переменных,
функций и классов), используемых для организации вводавывода. Он встречается в директиве
#include
практически во
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
