
- •190000, Санкт-Петербург, ул. Б. Морская, 67
- •Выбор варианта
- •Ссылки на литературу
- •Универсальность функций
- •Оформление кода
- •Отступы
- •Имена функций и переменных
- •Глобальные переменные
- •Тип переменной
- •Неиспользуемые переменные
- •Лишние операторные скобки
- •Спецификатор const
- •Библиотека ввода-вывода
- •Ошибки и предупреждения на этапе компиляции
- •Ввод-вывод
- •Сообщения об ошибках выводятся в поток cerr
- •Контроль вводимых значений
- •Комментарии и псевдокод
- •Общие требования к содержанию отчётов
- •Лабораторная работа 1. Вычисление математических выражений Цель работы
- •Задание на лабораторную работу
- •Лабораторная работа 3. Программирование поразрядных операций Цель работы
- •Задание на лабораторную работу
- •Пример выполнения лабораторной работы
- •Варианты заданий Вариант 51
- •Вариант 52
- •Вариант 53
- •Вариант 54
- •Вариант 55
- •Вариант 56
- •Вариант 57
- •Вариант 58
- •Вариант 59
- •Вариант 60
- •Вариант 61
- •Вариант 62
- •Вариант 63
- •Вариант 64
- •Вариант 65
- •Вариант 66
- •Вариант 67
- •Вариант 68
- •Вариант 69
- •Вариант 70
- •Вариант 71
- •Вариант 72
- •Вариант 73
- •Вариант 74
- •Вариант 75
- •Вариант 76
- •Вариант 77
- •Вариант 78
- •Вариант 79
- •Вариант 80
- •Лабораторная работа 5. Обработка числовых последовательностей Цель работы
- •Задание на лабораторную работу
- •Приложение 2. Титульный лист
- •Приложение 3. Пример оформления отчёта
- •1. Цель работы
- •2. Задание
- •3. Описание созданных функций
- •4. Листингпрограммы
- •5. Пример выполнения программы
- •6. Анализ результатов и выводы
- •Приложение 4. Типовые элементы блок-схем
- •Блоки начала и завершения программы
- •Оператор присваивания
- •Приложение 6. Таблица приоритетов операций
- •Подключение библиотек
- •Библиотека утверждений«cassert» (assert.H)
- •Библиотека посимвольной обработки«cctype» (ctype.H)
- •Библиотека региональных настроек«clocale» (locale.H)
- •Библиотека математических функций «cmath» (math.H)
- •Константа
- •Библиотека ввода-вывода «cstdio» (stdio.H)
- •Библиотека дополнительных функций«cstdlib» (stdlib.H)
- •Библиотека обработки строк «cstring» (string.H)
- •Режимы запуска программы
- •Пошаговое выполнение программы
- •Точки останова
- •Доступ к переменным
- •Утверждения
- •Как включить отображение номеров строк?
- •Как задать параметры командной строки при отладке?
- •Почему окно программы по завершению автоматически закрывается?
- •Как создать решение с несколькими проектами?
- •Как уменьшить размер проекта?
- •Как обнаружить утечки памяти?
- •Описание проблемы
- •Способ 1
- •Способ 2
- •Способ 3
- •Способ 4
Лабораторная работа 5. Обработка числовых последовательностей Цель работы
Целью работы является изучение структуры данных одномерный массив.
Задание на лабораторную работу
Задания на лабораторную работу приводятся в каждом варианте. При написании программ можно использовать как динамические, так и нединамические массивы. Размерность последних задаётся именованной константой.
Примечание: массивы, созданные с помощью классов (таких, как например, array или vectorиз библиотеки STL) использовать запрещается.
Примечание: если использовались операторы динамического выделения памяти, то следует вставить дополнительный код, обнаруживающий утечки памяти. См. раздел «Как обнаружить утечки памяти?». Все утечки памяти должны быть устранены.
Варианты заданий
Вариант 101
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
сумму отрицательных элементов массива;
произведение элементов массива, расположенных между максимальным и минимальным элементами.
Упорядочить элементы массива по возрастанию.
Вариант 102
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
сумму положительных элементов массива;
произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
Упорядочить элементы массива по убыванию.
Вариант 103
В одномерном массиве, состоящем из n целых элементов, вычислить:
произведение элементов массива с чётными номерами;
сумму элементов массива, расположенных между первым и последним нулевыми элементами.
Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом – все отрицательные (элементы, равные 0, считать положительными).
Вариант 104
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
сумму элементов массива с чётными номерами;
сумму элементов массива, расположенных между первым и последним отрицательными элементами.
Сжать массив, удалив из него все элементы, модуль которых не превышает 1. Освободившиеся в конце массива элементы заполнить нулями.
Вариант 105
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
максимальный элемент массива;
сумму элементов массива, расположенных до последнего положительного элемента.
Сжать массив,
удалив из него все элементы, модуль
которых находится в интервале
.
Освободившиеся в конце массива элементы
заполнить нулями.
Вариант 106
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
минимальный элемент массива;
сумму элементов массива, расположенных между первым и последним положительными элементами.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, равные нулю, а потом – все остальные.
Вариант 107
В одномерном массиве, состоящем из n целых элементов, вычислить:
номер максимального элемента массива;
произведение элементов массива, расположенных между первым и вторым нулевыми элементами.
Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечётных позициях, а во второй половине – элементы, стоявшие в чётных позициях.
Вариант 108
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
номер минимального элемента массива;
сумму элементов массива, расположенных между первым и вторым отрицательными элементами.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом – все остальные.
Вариант 109
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
максимальный по модулю элемент массива;
сумму элементов массива, расположенных между первым и вторым положительными элементами.
Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных.
Вариант 110
В одномерном массиве, состоящем из n целых элементов, вычислить:
минимальный по модулю элемент массива;
сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в чётных позициях, а во второй половине – элементы, стоявшие в нечётных позициях.
Вариант 111
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
номер минимального по модулю элемента массива;
сумму модулей элементов массива, расположенных после первого отрицательного элемента.
Сжать массив, удалив из него все элементы, величина которых находится в интервале . Освободившиеся в конце массива элементы заполнить нулями.
Вариант 112
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
номер максимального по модулю элемента массива;
сумму модулей элементов массива, расположенных после первого положительного элемента.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых лежит в интервале , а потом – все остальные.
Вариант 113
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
количество элементов массива, лежащих в диапазоне ;
сумму элементов массива, расположенных после максимального элемента.
Упорядочить элементы массива по убыванию модулей элементов.
Вариант 114
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
количество элементов массива, равных 0;
сумму элементов массива, расположенных после минимального элемента.
Упорядочить элементы массива по возрастанию модулей элементов.
Вариант 115
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
количество элементов массива, больших ;
произведение элементов массива, расположенных после максимального по модулю элемента.
Преобразовать массив таким образом, чтобы сначала располагались все отрицательные элементы, а потом – все положительные (элементы, равные 0, считать положительными).
Вариант 116
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
количество отрицательных элементов массива;
сумму модулей элементов массива, расположенных после минимального по модулю элемента.
Заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.
Вариант 117
В одномерном массиве, состоящем из n целых элементов, вычислить:
количество положительных элементов массива;
сумму элементов массива, расположенных после последнего элемента, равного 0.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых не превышает 1, а потом – все остальные.
Вариант 118
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
количество элементов массива, меньших ;
сумму целых частей элементов массива, расположенных после последнего отрицательного элемента.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от максимального не более чем на 20%, а потом – все остальные.
Вариант 119
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
произведение отрицательных элементов массива;
сумму положительных элементов массива, расположенных после максимального элемента.
Изменить порядок следования элементов в массиве на обратный.
Вариант 120
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
произведение положительных элементов массива;
сумму элементов массива, расположенных до минимального элемента.
Упорядочить по возрастанию отдельно элементы, стоящие на чётных местах, и элементы, стоящие на нечётных местах.
Лабораторная работа 6. Обработка числовых матриц
Цель работы
Целью работы является изучение структуры данных двумерный массив.
Задание на лабораторную работу
Задания на лабораторную работу приводятся в каждом варианте. При написании программ можно использовать как динамические, так и нединамические массивы. Размерность последних задаётся именованной константой.
Примечание: массивы, созданные с помощью классов (таких, как например, array или vector из библиотеки STL) использовать запрещается.
Примечание: если использовались операторы динамического выделения памяти, то следует вставить дополнительный код, обнаруживающий утечки памяти. См. раздел «Как обнаружить утечки памяти?». Все утечки памяти должны быть устранены.
Варианты заданий
Вариант 121
Дана целочисленная прямоугольная матрица. Определить:
количество строк, не содержащих ни одного нулевого элемента;
максимальное из чисел, встречающихся в заданном матрице более одного раза.
Вариант 122
Дана целочисленная прямоугольная матрица.
Определить количество столбцов, не содержащих ни одного нулевого элемента.
Характеристикой строки целочисленной матрицы назовём сумму её положительных чётных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик.
Вариант 123
Дана целочисленная прямоугольная матрица. Определить:
количество столбцов, содержащих хотя бы один нулевой элемент;
номер строки, в которой находится самая длинная серия одинаковых элементов.
Вариант 124
Дана целочисленная квадратная матрица. Определить:
произведение элементов в тех строках, которые не содержат отрицательных элементов;
максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
Вариант 125
Дана целочисленная квадратная матрица. Определить:
сумму элементов в тех столбцах, которые не содержат отрицательных элементов;
минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.
Вариант 126
Дана целочисленная прямоугольная матрица. Определить:
сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент;
номера строк и столбцов всех седловых точек матрицы.
Примечание. Матрица
имеет седловую точку
,
если
является минимальным элементов в -й
строке и максимальным в
-м
столбце.
Вариант 127
Для заданной матрицы размером 8 на 8
Найти такие
, что -я строка матрицы совпадает с -м столбцом.
Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
Вариант 128
Характеристикой столбца целочисленной матрицы назовём сумму модулей его отрицательных нечётных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик.
Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент.
Вариант 129
Соседями элемента
в матрице назовём элементы
с
.
Операция сглаживания матрицы даёт новую
матрицу того же размера, каждый элемент
которой получается как среднее
арифметическое имеющихся соседей
соответствующего элемента исходной
матрицы. Построить результат сглаживания
заданной вещественной матрицы размером
10 на 10.
В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали.
Вариант 130
Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером 10 на 10.
Найти сумму модулей элементов, расположенных выше главной диагонали.
Вариант 131
Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых преобразований привести систему к треугольному виду.
Найти количество строк, среднее арифметическое элементов которых меньше заданной величины.
Вариант 132
Уплотнить заданную матрицу, удаляя из неё строки и столбцы, заполненные нулями.
Найти номер первой из строк, содержащих хотя бы один положительный элемент.
Вариант 133
Осуществить
циклический сдвиг элементов прямоугольной
матрицы на nэлементов
вправо или вниз (в зависимости от
введённого режима).
может
быть больше количества элементов в
строке или столбце.
Вариант 134
Осуществить
циклический сдвиг элементов квадратной
матрицы размерности
вправо на
элементов
таким образом: элементов 1-й строки
сдвигаются в последний столбец сверху
вниз, из него – в последнюю строку справа
налево, из неё – в первый столбец снизу
верх, из него – в первую строку; для
остальных элементов аналогично.
Вариант 135
Дана целочисленная прямоугольная матрица. Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент.
Характеристикой строки целочисленной прямоугольной матрицы назовём сумму её отрицательных чётных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик.
Вариант 136
Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в каждой строке.
Найти номер первого из столбцов, не содержащих ни одного отрицательного элемента.
Вариант 137
Путём перестановки элементов квадратной вещественной матрицы добиться того, чтобы её максимальный элемент находился в левом верхнем углу, следующий по величине – в позиции (2,2), следующий по величине – в позиции (3,3) и т.д., заполнить, таким образом, всю главную диагональ.
Найти номер первой их строк, не содержащих ни одного положительного элемента.
Вариант 138
Дана целочисленная прямоугольная матрица. Определить:
количество строк, содержащих хотя бы один нулевой элемент;
номер столбца, в котором находится самая длинная серия одинаковых элементов.
Вариант 139
Дана целочисленная квадратная матрица. Определить:
сумму элементов в тех строках, которые не содержат отрицательных элементов;
минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
Вариант 140
Дана целочисленная прямоугольная матрица. Определить:
количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент;
номера строки и столбцов всех седловых точек матрицы.
Примечание. Матрица имеет седловую точку , если является минимальным элементов в -й строке и максимальным в -м столбце.
Лабораторная работа 7. Обработка текстовых данных
Цель работы
Целью работы является изучение представления строковых данных и алгоритмов их обработки.
Задание на лабораторную работу
Разработать функцию, которая выполняет ту обработку символьной строки, которая определена в Вашем индивидуальном задании.
Примечание: строки представляются как массив символов. При реализации функции запрещается пользоваться функциями обработки строк библиотек языка C (без использования стандартной библиотеки «string.h»).
Примечание: если использовались операторы динамического выделения памяти, то следует вставить дополнительный код, обнаруживающий утечки памяти. См. раздел «Как обнаружить утечки памяти?». Все утечки памяти должны быть устранены.
Варианты заданий
Вариант 141
Функция подсчитывает количество слов в строке.
Вариант 142
Функция дописывает одну строку в конец другой.
Вариант 143
Функция выделяет первое слово из строки.
Вариант 144
Функция сравнивает две строки, игнорируя различия в регистрах.
Вариант 145
Функция разбивает строку на две части: до первого вхождения заданного символа и после него.
Вариант 146
Функция выравнивает строку по левому краю до заданной длины.
Вариант 147
Функция копирует строку в другую строку заданной длины и размещает текст первой строки по центру второй строки.
Вариант 148
Функция удаляет из строки заданное количество символов, начиная с заданной позиции.
Вариант 149
Функция определяет в строке номер позиции слова с заданным номером.
Вариант 150
Функция заменяет символы строки из одного заданного алфавита на символы другого алфавита.
Вариант 151
Функция находит последнее вхождение в строку заданной подстроки.
Вариант 152
Функция доводит длину строки до заданной, вставляя пробелы между словами.
Вариант 153
Функция находит в строке первый символ, который входит в другую заданную строку.
Вариант 154
Функция удаляет из строки слово с заданным номером.
Вариант 155
Функция перезаписывает символы строки заданным количеством символов другой строки, начиная с заданной позиции.
Вариант 156
Функция находит в строке первый символ, который не входить в другую заданную строку.
Вариант 157
Функция находит в строке первый символ, который не входить в другую заданную строку.
Вариант 158
Функция удаляет из начала и из конца строки заданный символ.
Вариант 159
Функция выделяет из строки заданное количество слов, начиная со слова с заданным номером.
Вариант 160
Функция выравнивает строку по правому краю до заданной длины.
Вариант 161
Функция вставляет в строку другую строку, начиная с заданной позиции.
Вариант 162
Функция переводит строку, содержащую десятичное представление целого числа, в строку, содержащую его шестнадцатеричное представление.
Вариант 163
Функция находит первое вхождение в строку заданной подстроки.
Вариант 164
Функция дописывает одну строку у начало другой.
Вариант 165
Функция заменяет в строке все множественные вхождения заданного символа одним.
Вариант 166
Функция заменяет в строке одну заданную комбинацию символов другой заданной комбинацией.
Вариант 167
Функция переписывает все символы строки в обратном порядке.
Вариант 168
Функция определяет длину слова с заданным номером.
Вариант 169
Функция копирует строку в другую строку заданное количество раз.
Вариант 170
Функция выделяет из заданной строки подстроку заданной длины, начиная с заданной позиции.
Лабораторная работа 8.Обработка данных в файлах
Цель работы
Целью работы является изучение файловых операций ввода-вывода.
Задание на лабораторную работу
Работа выполняется в двух вариантах:
С использованием библиотек потокового ввода-вывода (<fstream>).
С использованием библиотек стандартного ввода-вывода (<cstdio>)
Задания на лабораторную работу приводятся в каждом варианте.
Примечание: для того чтобы открыть файлы с русскими буквами, необходимо включить поддержку русского языка. Смотри «Приложение 9. Печать русских букв в среде Visual C++ 2008».
Примечание: если использовались операторы динамического выделения памяти, то следует вставить дополнительный код, обнаруживающий утечки памяти. См. раздел «Как обнаружить утечки памяти?». Все утечки памяти должны быть устранены.
Варианты заданий
Вариант 171
Написать программу, которая считывает из текстового файла три предложения и записывает их в другой файл в обратном порядке.
Вариант 172
Написать программу, которая считывает текст из файла и записывает в другой файл только те предложения, которые содержат введённое с клавиатуры слово.
Вариант 173
Написать программу, которая считывает текст из файла и записывает в другой файл только те строки, которые содержат двузначные числа.
Вариант 174
Написать программу, которая считывает английский текст из файла и записывает в другой файл те слова, которые начинаются с гласных букв.
Вариант 175
Написать программу, которая считывает текст из файла и записывает его в другой файл, меняя местами каждые два соседних слова.
Вариант 176
Написать программу, которая считывает текст из файла и записывает в другой файл только те предложения, которые не содержат запятых.
Вариант 177
Написать программу, которая считывает текст из файла и определяет, сколько в нём слов, состоящих из не более чем четырёх букв.
Вариант 178
Написать программу, которая считывает текст из файла и записывает в другой файл только цитаты (предложения, заключённые в кавычки).
Вариант 179
Написать программу, которая считывает текст из файла и записывает в другой файл те предложения, которые состоят из заданного количества слов.
Вариант 180
Написать программу, которая считывает английский текст из файла и записывает в другой файл слова текста, начинающиеся и оканчивающиеся на гласные буквы.
Вариант 181
Написать программу, которая считывает текст из файла и записывает в другой файл строки, не содержащие двузначные числа.
Вариант 182
Написать программу, которая считывает текст из файла и записывает в другой файл предложения, начинающиеся с тире, перед которым могут находиться только пробельные символы.
Вариант 183
Написать программу, которая считывает английский текст из файла и записывает его в другой файл, заменив каждую первую букву слов, начинающихся с гласной буквы, на прописную.
Вариант 184
Написать программу, которая считывает текст из файла и записывает его в другой файл, заменив цифры от 0 до 9 на слова «ноль, «один», …, «девять», начиная каждое предложение с новой строки.
Вариант 185
Написать программу, которая считывает текст из файла, находит самое длинное слово и определяет, сколько раз оно встретилось в тексте.
Вариант 186
Написать программу, которая считывает текст из файла и записывает в другой файл сначала вопросительные, а затем восклицательные предложения.
Вариант 187
Написать программу, которая считывает текст из файла и записывает его в другой файл, добавляя после каждого предложения, сколько раз встретилось в нём введённое с клавиатуры слово.
Вариант 188
Написать программу, которая считывает текст из файла и записывает в другой файл все его предложения в обратном порядке.
Вариант 189
Написать программу, которая считывает текст из файла и записывает в другой файл сначала предложения, начинающиеся с однобуквенных слов, а затем все остальные.
Вариант 190
Написать программу, которая считывает текст из файла и записывает в другой файл те предложения, которые содержат максимальное количество знаков пунктуации.
Приложение 1. Рекомендованный список литературы
Стандарт языка C++:ISO/IEC 14882-2011(E). Information Technology - Programming languages - C++. Последняя публичная версия черновика: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf
ГОСТ 19.701-90 «Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения».
Богатырёв Андрей. Руководство полного идиота по программированию (на языке Си).
Шилдт Герберт. C++: руководство для начинающих, 2-е издание. – М.: Вильямс, 2005. – 672 с.: ил.
Шилдт Герберт. C++: базовый курс, 3-е издание.– М.: Вильямс, 2008. – 624 с.: ил.
Культин Николай. C/C++ в задачах и примерах, 2-е издание. – СПб.: БХВ-Петербург, 2003. – 288 с.: ил.
Роберт Лафоре. Объектно-ориентированное программирование в C++: 4-е издание. – СПб.: Питер, 2004. – 928 с.: ил.
Дейтел Х., Дейтел П.Как программировать на C++: Пятое издание/Пер. с англ. – М.: Бином, 2008. – 1456 с.: ил.
Шилдт Герберт. Полный справочник по C++, 4-е издание. – М.: Вильямс, 2009. – 800 с.: ил.
Керниган Брайан В., Пайк Роб. Практика программирования/Пер. с англ. – СПб.: Невский диалект, 2001. – 381 с.: ил.
Кляус Сергей. Оформление кода в C. Sources.RU Magazine (Январь 2005).http://www.sources.ru/magazine/0105/c_code_design.html.
http://ru.wikipedia.org/wiki/Стиль_отступов
Не рекомендуется:
Освой самостоятельно C++ за 21 день, 5-е издание, Джесс Либерти, Брэдли Джонс; 784 стр., с ил.; 2009; Вильямс.