Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмизация и программирование на языке С++. Ч.1. Учебник

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
Задания длясамостоятельного выполнения
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 Founda­tion, Inc. URL: https://ru.wikipedia.org/wiki/Интегрирован­ная_среда_разработки
12. Dartmouth BASIC. From Wikipedia, the free encyclope­dia. © Wikimedia Foundation, Inc. URL: https://en.wikipedia. org/wiki/Dartmouth_BASIC
186
АЛГОРИТМИЗАЦИЯ ИПРОГРАММИРОВАНИЕ НАЯЗЫКЕ С++
13. Обучение кодированию в Visual Studio. © 2022 Micro­soft. URL: https://visualstudio.microsoft.com/ru/vs/getting­started/
14. Лучшие компиляторы кода и IDE для C++. URL: https://timeweb.com/ru/community/articles/luchshie-kompi­lyatory-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/vi­sualstudio/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-modern­cpp?view=msvc-160
25. Диапазоны типов данных. © Microsoft 2022. URL: https://docs.microsoft.com/ru-ru/cpp/cpp/data-type­ranges?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++). © Micro­soft 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/string­and-character-literals-cpp?view=msvc-170&viewFallbackFrom =vs-2015
30. Mikael Olsson C++20 Quick Syntax Reference: A Pock­et 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 Cpp­Studio. 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/prepro­cessor-directives?view=msvc-160&viewFallbackFrom=vs-2019
37. Директивы препроцессора в Си. URL https://prog­cpp.ru/c-directives/
38. Директива #error (C/C++). © Microsoft 2022 URL: https://learn.microsoft.com/ru-ru/cpp/preprocessor/hash-er­ror-directive-c-cpp?view=msvc-160
188
АЛГОРИТМИЗАЦИЯ ИПРОГРАММИРОВАНИЕ НАЯЗЫКЕ С++
39. Директива #import (C++). © Microsoft 2022 URL: https://learn.microsoft.com/ru-ru/cpp/preprocessor/hash-er­ror-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/tipizaci­ja-jazykov-programmirovanija-razbiraemsja-v-osnovah/
45. Встроенные операторы C++, приоритет и ассоциа­тивность. © Microsoft 2022. URL: https://learn.microsoft. com/ru-ru/cpp/cpp/cpp-built-in-operators-precedence-and­associativity?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=msvc­160&viewFallbackFrom=vs-2017
 

Обработка исходного файла, написанного на языке про­граммирования высокого уровня, предполагает несколько этапов. Если программа написана на языке С++, то это трех­этапный процесс:
• препроцесинг;
• компиляция;
• компоновка.
Компиляция предполагает превращение исходного кода в машинный код. На этапе компоновки откомпилированные файлы формируются в исполнимый файл.
Опишем подробнее первый этап, на котором формиру­ется окончательный состав исходного кода программы. Он заключается в том, что текст, написанный программистом, до компиляции подвергается обработке в соответствии с ди­рективами препроцессора. Они начинаются с символа #.
По адресу препроцессор распознает следующие 14 дирек­тив [36]:
1) #dene +
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)
#dene
– задает макроопределение (макрос) или симво-
АЛГОРИТМИЗАЦИЯ ИПРОГРАММИРОВАНИЕ НАЯЗЫКЕ С++
лическую константу;
#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
практически во
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]