- •ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
- •Требования к оформлению лабораторных работ
- •1. ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
- •13.1 План разработки алгоритмов и программ
- •Таблица 1.1 Результат ручной прокрутки после первого этапа
- •Таблица 1.2 Результат ручной прокрутки после первого этапа
- •Таблица 1.3 Итог выполнения ручной прокрутки
- •13.2 Перевод алгоритма в Паскаль-программу
- •13.3 Использование готовых алгоритмов при решении задач
- •Подсчет элементов, обладающих заданным свойством
- •Поиск максимального и минимального элементов
- •Поиск элементов, обладающих заданным свойством
- •Задача 1. Подсчет ненулевых элементов
- •Задача 2. Подсчет элементов, абсолютная величина которых больше 7
- •Задача 3. Поиск элемента равного 7
- •Задача 5. Найти количество элементов массива больших среднего арифметического этих элементов
- •Задача 6. Поиск максимального элемента и подсчет частоты его появления в массиве
- •Задача 7. Поиск нулевого элемента
- •Задача 8. Поиск отрицательного числа с конца массива
- •13.4 Стандартная обработка двумерных массивов
- •Двумерный массив и его части
- •Индексы элементов двумерного массива
- •Индексы строки и столбца двумерного массива
- •Индексы диагоналей двумерного массива
- •Перенос простейших алгоритмов на двумерные массивы
- •13.5 Отладка и тестирование программ
- •2. СОЗДАНИЕ КОНСОЛЬНЫХ ПРИЛОЖЕНИЙ СРЕДСТВАМИ DELPHI 7.0
- •13.1 Создание консольного приложения средствами Delphi
- •13.2 Структура программы в Delphi
- •Таблица 2.1
- •13.3 Введение в типы данных Delphi
- •13.4 Венгерская нотация
- •13.5 Отладка и тестирование программ средствами среды Delphi 7
- •3. ЛАБОРАТОРНАЯ РАБОТА №1 «ЛИНЕЙНЫЕ ПРОГРАММЫ»
- •13.1 Пояснения и примеры к лабораторной работе
- •13.2 Задания к лабораторной работе №1:
- •4. ЛАБОРАТОРНАЯ РАБОТА №2 «АЛГОРИТМЫ С ВЕТВЛЕНИЯМИ»
- •13.3 Пояснения и примеры к лабораторной работе
- •13.2 Реализация алгоритмов с ветвлениями средствами C#
- •13.3 Задания к лабораторной работе №2
- •5. ЛАБОРАТОРНАЯ РАБОТА №3 «ОПЕРАТОР ВЫБОРА»
- •13.1 Пояснения и примеры к лабораторной работе
- •13.2 Реализация оператора выбора в языке C#
- •13.3 Задания к лабораторной работе №3
- •6. ЛАБОРАТОРНАЯ РАБОТА №4 «ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ»
- •13.1 Основные разновидности циклов
- •Цикл с постусловием
- •Цикл с предусловием
- •Цикл с параметром
- •Программное прерывание выполнения циклов
- •13.2 Примеры решения задач с использованием операторов цикла
- •Проверка корректности введенных данных
- •Решение задач с использованием диапазонов чисел
- •Решение задач полным перебором
- •Пояснения к задачам 18, 23, 24, 25:
- •13.3 Задания к лабораторной работе №4
- •7. ЛАБОРАТОРНАЯ РАБОТА №5 «РЯДЫ И ПОСЛЕДОВАТЕЛЬНОСТИ»
- •13.1 Примеры решения задач
- •Вычисление суммы n-первых членов ряда
- •Вычисление суммы n-первых членов последовательности, удовлетворяющих условию
- •Нахождение наименьшего номера члена последовательности, для которого выполняется некоторое условие
- •13.2 Задания к лабораторной работе №5
- •8. ЛАБОРАТОРНАЯ РАБОТА №6 «ТАБУЛИРОВАНИЕ ФУНКЦИЙ»
- •13.1 Пример решения задачи на табулирование функции
- •8.1.2 Организация перенаправления ввода-вывода средствами C#
- •13.2 Задания к лабораторной работе №6
- •9. ЛАБОРАТОРНАЯ РАБОТА №7 «ПОДПРОГРАММЫ»
- •13.1 Задания к лабораторной работе №7
- •13.2 Задания к лабораторной работе №8
- •13.1 Примеры и пояснения к лабораторной работе
- •13.2 Задания к лабораторной работе №9
- •Задания к лабораторной работе №10
- •13.1 Примеры работы со строками
- •Пример 13.2 Удалить из строки символ, указанный пользователем.
- •Пример 13.3 Удалить из строки лишних пробелов (пробелы в начале и в конце строки, между словами также должен быть один пробел).
- •Пример 13.4 Определить количество слов в заданном тексте.
- •13.2 Задания к лабораторной работе №11
- •13.1 Задания к лабораторной работе №12
- •13.1 Пояснения к работе
- •13.1 Задания к лабораторной работе №13
- •13.1 Пояснения к лабораторной работе №14
- •Формирование файла случайных чисел
- •Анализ файла случайных чисел
- •13.2 Задания к лабораторной работе №14
- •13.1 Примеры решения задач с использованием текстовых файлов
- •13.2 Задания к лабораторной работе №15
- •13.1 Задания к лабораторной работе №16
- •13.1 Задания к лабораторной работе №17
- •13.2 Задания к лабораторной работе №18
- •13.1 Задания к лабораторной работе №19
- •ПРИЛОЖЕНИЕ А
- •ПРИЛОЖЕНИЕ Б
- •СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
- •ОГЛАВЛЕНИЕ
12.ЛАБОРАТОРНАЯ РАБОТА №10 «ОПЕРАЦИИ С ЭЛЕМЕНТАМИ МАССИВОВ»
Цель работы: Сформировать навыки по работе с компонентами массивов средствами изучаемого языка программирования
Задания к лабораторной работе №10
1.Вычислить сумму и число положительных элементов матрицы A[N, N], находящихся над главной диагональю.
2.Дана матрица А размером п х m. Определить k — количество особых элементов массива А, считая его элемент особым, если он больше суммы остальных элементов его столбца.
3.Задана квадратная матрица. Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером m.
4.Дана матрица B[N, M]. Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним элементом строки соответственно.
5.Дана целая квадратная матрица n-го порядка. Определить, является ли она магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы.
6.Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы напечатать индексы всех ее седловых точек.
7.Дана матрица размером n х m. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (или один из них) оказался в верхнем левом углу.
8.Определить, является ли заданная целая квадратная матрица n-то порядка симметричной (относительно главной диагонали).
9.Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали.
10.Упорядочить по возрастанию элементы каждой строки матрицы размером nхm.
11.Задана матрица размером nхm. Найти максимальный по модулю элемент матрицы. Переставить строки и столбцы матрицы таким образом, чтобы максимальный по модулю элемент был расположен на пересечении k-й строки и k-го столбца.
90
12.Дана квадратная матрица A[N, N]. Записать на место отрицательных элементов матрицы нули, а на место положительных — единицы. Вывести на печать нижнюю треугольную матрицу в общепринятом виде.
13.Дана действительная матрица размером nхm, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, затем среди этих чисел выбирается наибольшее. Указать индексы элемента с найденным значением.
14.Дана действительная квадратная матрица порядка N (N — нечетное), все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.
15.Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов. Найти след матрицы, суммируя элементы одномерного массива. Преобразовать исходную матрицу по правилу: четные строки разделить на полученное значение, нечетные оставить без изменения.
16.Задана квадратная матрица. Транспонировать эту матрицу.
17.Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива. Восстановить исходную матрицу и напечатать по строкам.
18.Заданы матрица порядка n и число k. Разделить элементы k-и строки на диагональный элемент, расположенный в этой строке.
19.Для целочисленной квадратной матрицы найти число элементов, кратных k, и наибольший из них.
20.Найти наибольший и наименьший элементы прямоугольной матрицы и поменять их местами.
21.Дана прямоугольная матрица. Найти строку с наибольшей и наименьшей суммойэлементов. Вывестинапечатьнайденныестрокиисуммыихэлементов.
22.В данной действительной квадратной матрице порядка n найти сумму элементов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такой элемент единствен.
23.В данной действительной квадратной матрице порядка n найти наибольший по модулю элемент. Получить квадратную матрицу порядка n — 1 путем отбрасывания в исходной матрице строки и столбца, на пересечении которых расположен элемент с найденным значением.
24.Дана действительная квадратная матрица порядка n. Преобразовать матрицу по следующему правилу: строку с номером n сделать столбцом с номером n, а столбец с номером n — строкой с номером n.
25.Пусть дана действительная матрица размером n х m. Требуется преобразовать матрицу следующим образом: поэлементно вычесть последнюю
91
строку из всех строк, кроме последней.
26.Определить номера тех строк целочисленной матрицы A[N, К], которые совпадают с массивом D[K]. Если таких строк нет, выдать соответствующее сообщение.
27.Определить наименьший элемент каждой четной строки матрицы
А[М, N].
28.Расположить столбцы матрицы D[M, N] в порядке возрастания элементов k-и строки (1 ≤ k≤ M).
29.Определить номера строк матрицы R[M, N], хотя бы один элемент которых равен с, и элементы этих строк умножить на d.
30.Матрица A[N, M] (M кратно 4) разделена по вертикали на две половины. Определить сумму элементов каждого столбца левой половины и сумму элементов каждого четного столбца правой половины матрицы А.
92
13.ЛАБОРАТОРНАЯ РАБОТА №11 «РАБОТА СО СТРОКАМИ»
Цель работы: Сформировать навыки по созданию и работе со строковыми данными средствами изучаемого языка программирования
13.1 Примеры работы со строками
Пример 13.1 Дана строка. Вывести на экран все латинские буквы из этой строки.
Данный пример рассматривает поиск символов по их порядковым номерам в ASCII-коде.
for i:=1 to Length(s) do
if (ord(s[i])>64) and (ord(s[i])<90) or (ord(s[i])>96) and(ord(s[i])<123) then write(s[i]);
Вариант решения поставленной задачи с использованием множеств:
for i:=1 to Length(s) do
if s[i] in ['A'..'Z','a'..'z'] then write(s[i]);
Пример 13.2 Удалить из строки символ, указанный пользователем.
Таблица 11.1 Система тестов
|
№ теста |
Символ |
Строка |
Результат |
1 |
с учетом регистра символа |
т |
"Тест" |
"Тес" |
2 |
без учета регистра символа |
т |
"Тест" |
"ес" |
Данная задача имеет несколько возможных подходов к реализации:
-удалить конкретный символ (с учетом или без учета регистра)
-удалить группу символов (с учетом или без учета регистра) Рассмотрим несколько функций реализующих это задание
Листинг 13.1
function del_char(s:string; ch:char):string; Var i:byte; strTmp:string;
Begin
strTmp:=''; //Записываем в strTmp пустую строку for i:=1 to length(s) do
if s[i]<>ch then strTmp:=strTmp+s[i]; del_char:= strTmp;
End;
//Пример основной программы для использования этой функции:
var st1:string; ch:char;
begin
93