- •ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
- •Требования к оформлению лабораторных работ
- •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
- •ПРИЛОЖЕНИЕ А
- •ПРИЛОЖЕНИЕ Б
- •СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
- •ОГЛАВЛЕНИЕ
10.ЛАБОРАТОРНАЯ РАБОТА №8 «ОДНОМЕРНЫЕ МАССИВЫ»
Цель работы: Сформировать навыки по созданию и работе с одномерными массивами средствами изучаемого языка программирования
Общие вопросы работы с массивами смотри в главе 1.
13.2Задания к лабораторной работе №8
1.В массив A[N] занесены натуральные числа. Найти сумму тех элементов, которые кратны данному К.
2.В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов.
3.Дана последовательность целых чисел а1, а2,..., аn. Выяснить, какое число встречается раньше — положительное или отрицательное.
4.Дана последовательность действительных чисел а1, а2,..., аn. Выяснить, будет ли она возрастающей.
5.Дана последовательность натуральных чисел а1, а2,..., аn. Создать массив из четных чисел этой последовательности. Если таких чисел нет, то вывести сообщение об этом факте.
6.Дана последовательность чисел а1, а2,..., аn. Указать наименьшую длину числовой оси, содержащую все эти числа.
7.Дан массив действительных чисел а1, а2,..., аn. Заменить все его члены, большие данного Z, этим числом. Подсчитать количество замен.
8.Последовательность действительных чисел оканчивается нулем. Найти количество членов этой последовательности.
9.Дан массив действительных чисел, размерность которого N. Подсчитать, сколько в нем отрицательных, положительных и нулевых элементов.
10.Даны действительные числа а1, а2,..., аn. Поменять местами наибольший и наименьший элементы.
11.Даны целые числа а1, а2,..., аn. Вывести на печать только те числа, для которых аi ≥ i.
12.Даны натуральные числа а1, а2,..., аn. Указать те из них, у которых остаток от деления на М равен L (0≤ L≤M— 1).
13.В одномерном массиве поменять местами соседние элементы, стоящие на четных местах, с элементами, стоящими на нечетных местах.
14.При поступлении в вуз абитуриенты, получившие двойку на первом экзамене, ко второму не допускаются. В массиве А[n] записаны оценки экзаме-
81
нующихся, полученные на первом экзамене. Подсчитать, сколько человек не допущено ко второму экзамену.
15.Дана последовательность чисел, среди которых имеется один нуль. Вывести на печать все числа до нуля включительно.
16.В одномерном массиве размещены: в первых элементах — значения аргумента, в следующих — соответствующие им значения функции. Напечатать элементы этого массива в виде двух параллельных столбцов (аргумент и значения функции).
17.Пригодность детали оценивается по размеру В, который должен соответствовать интервалу (А - δ, А + δ). Определить, имеются ли в партии из N деталей бракованные. Если да, то подсчитать их количество, в противном случае выдать отрицательный ответ.
18.У вас есть доллары. Вы хотите обменять их на рубли. Есть информация о стоимости купли-продажи в банках города. В городе N банков. Составьте программу, определяющую, какой банк выбрать, чтобы выгодно обменять доллары на рубли.
19.Дан целочисленный массив с количеством элементов n. Напечатать те его элементы, индексы которых являются степенями двойки (1, 2, 4, 8, ...).
20.Задана последовательность из N вещественных чисел. Определить, сколько среди них чисел меньших К, равных K и больших К.
21.Задана последовательность N вещественных чисел. Вычислить
Si = |
(X i −M )2 |
|
N −1 |
||
|
где М — среднее арифметическое данной последовательности.
22.Задан массив (VAR А: ARRAY [1..N] OF '0'..'9';). Определить, входит ли в него последовательность символов 123, если да, то сколько раз и с каких позиций (N> 3).
23.Задан массив действительных чисел. Определить, сколько раз меняется знак в данной последовательности чисел, запомнить номера позиций, в которых происходит смена знака.
24.Задана последовательность N вещественных чисел. Вычислить сумму чисел, порядковые номера которых являются простыми числами.
25.Задана последовательность N вещественных чисел. Вычислить сумму чисел, порядковые номера которых являются числами Фибоначчи.
26.Задана последовательность N вещественных чисел. Вычислить
значение выражения n x1 x2 ...xn .
27. Задана последовательность N целых чисел. Вычислить сумму элементов массива, порядковые номера которых совпадают со значением этого
82
элемента.
28.Заполнить массив из N элементов с начальным значением задан-
ным Л[0]≠ 0, по принципу A [I]=A[I DIV 2]+A[I-l].
29.Определить количество элементов последовательности натуральных чисел, кратных числу М и заключенных в промежутке от L до N.
30.Определить, сколько процентов от всего количества элементов последовательности целых чисел составляют нечетные элементы.
83
11.ЛАБОРАТОРНАЯ РАБОТА №9 «ФОРМИРОВАНИЕ МАССИВОВ»
Цель работы: Сформировать навыки по формированию двумерных массивов в соответствии с заданным шаблоном средствами изучаемого языка программирования
13.1 Примеры и пояснения к лабораторной работе
Пример 9.1 Сформировать и вывести на экран двумерный массив случайных чисел
Листинг 9.1
for i:=1 to m1 do begin
for j:=1 to n1 do begin
//Заполнение массива числами от 0 до 255 a[I,j]:=random(256);
write(a[i,j]:4,' '); end;
writeln;
end;
Пример 9.2 Сформировать двумерный массив целых чисел как показано на рисунке 9.1, размерность массива m x n вводит пользователь.
Изменение значений переменных C, M, N показано на рисунке 9.2. Переменная С увеличивается, а M и N уменьшаются. Исполнение алгоритма показано в таблице 9.1.
Листинг 9.2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
var |
|
|
1 |
|
2 |
|
|
3 |
|
4 |
|
|
|
a:array[1..100,1..100] of |
|
|
12 |
|
13 |
|
14 |
|
5 |
|
|
||
integer; |
|
|
11 |
|
16 |
|
15 |
|
6 |
|
|
||
i,j,k,c,max,m,n,m1,n1:inte |
|
|
10 |
|
9 |
|
|
8 |
|
7 |
|
|
|
ger; |
|
|
Рис. 9.1 Пример массива |
||||||||||
begin |
|
|
|
|
|
|
|
|
|
|
|
|
|
write('rasmernost: '); read(m,n); |
|
|
|
|
|
|
|
|
|
|
|||
n1:=n; m1:=m; //сохранение начальных значений размерности |
|||||||||||||
max:=n*m; //Вычисление максимального числа |
|
begin |
|
|
|
||||||||
i:=1; k:=1; c:=1; |
|
|
|
|
|
|
|
k>max then |
|||||
//Объединяющий цикл |
break; |
|
|
|
|
|
if |
||||||
while k<=max do |
|
|
|
|
|
|
|
|
|
|
|||
begin |
|
|
|
C → |
|
|
|
|
←N |
|
|
||
//Формирование верхней строки |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
|
3 |
|
4 |
|
|
||
for j:=c to n do |
|
|
|
|
|
|
|
|
84
|
12 |
13 |
14 |
5 |
|
M |
10 |
9 |
8 |
7 |
|
↑ |
11 |
16 |
15 |
6 |
|
|
|
|
|
|
|
Рис. 9.2 Изменение переменных |
a[i,j]:=k;
k:=k+1;
end; //Формирование правого столбца
for i:=c+1 to m do begin
if k>max then break; a[i,j]:=k;
k:=k+1;
end; //Формирование нижней строки
for j:=n-1 downto c do begin
if k>max then break; a[i,j]:=k;
k:=k+1;
end; //Формирование левого столбца
for i:=m-1 downto c+1 do begin
if k>max then break; a[i,j]:= k;
k:=k+1;
end;
//Изменение переменных для перехода на внутренние строки и столбцы c:=c+1;
m:=m-1; n:=n-1; i:=c;
end;
writeln;
//Вывод двумерного массива for i:=1 to m1 do
begin
for j:=1 to n1 do write(a[i,j]:3,' ');
writeln;
end;
end.
Таблица 9.1 Заполнение массива циклами
|
Первый цикл |
Второй цикл |
Третий цикл |
Четвертый цикл |
||||||||||||
1 |
|
2 |
3 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
14 |
|
|
|
|
5 |
|
|
|
|
12 |
|
|
|
85