- •2Федеральное агентство по образованию
- •Алгоритмизация и программирование
- •Основы программирования в среде Турбо Паскаля.
- •Приоритет операций в выражении
- •Задание 1 (программа 1_1)
- •Программирование разветвленных алгоритмов. Операторы передачи управления
- •Программирование циклических алгоритмов с заданным числом повторений
- •Программирование циклических алгоритмов с предусловием
- •Программирование циклических алгоритмов с постусловием
- •Модифицировать программу 3_2 для вычисления функций f1(X) и f2 (X) с применением оператора цикла с постусловием. Выполнить ее и сравнить результа-ты с полученными ранее.
- •Программирование алгоритмов обработки одномерных массивов
- •Задание 1
- •Программирование с использованием функций
- •Программирование с использованием процедур
- •Лабораторная работа 10 Обработка символьных и строковых данных
- •Множества
- •Первая и вторая цифры размерность исходных множеств.
- •Модульное программирование
- •Динамические структуры данных. Списки
- •Задание 1 (программа 15_1)
- •Графика
- •Задания к расчетно-графической работе
- •Порядок выполнения лабораторных работ
- •Обозначения графические в схемах алгоритмов (гост 19.701-90)
- •Сообщение об ошибках Сообщения об ошибках периода компиляции
- •Сообщения об ошибках периода исполнения Ошибки операционной системы dos
- •Ошибки вода - вывода
- •Критические ошибки
Программирование алгоритмов обработки одномерных массивов
Цель работы: научиться разрабатывать и отлаживать программы с использованием регулярных типов (векторов).
Массив - упорядоченная структура однотипных данных, хранящихся последовательно.
Массив обязательно имеет размеры, определяющие, сколько в нем хранится элементов. Описывается в разделе TYPE (или VAR). Структура описания одномерного массива:
<имя>=ARRAY[диапазон_индексов] OF <базовый_тип>;
Диапазон указывает значения индексов первого и последнего элементов в массиве.
Пример. Найти значение и номер наименьшего элемента в одномерном массиве. При задании элементов исходного массива типизированной константой СА решения задачи имеет вид (рис.8, а) и используется следующая программа:
Program lr6_1;
const a: array[1..10] of integer=(5,2,7,1,8,3,4,5,6,6);
var i, min, n: integer;
begin
min:=a[1]; n:=1;
for i:=2 to 10 do
if a[i]<min then begin
min:=a[i];
n:=i;
end;
writeln('минимальный элемент равен ',min, ' n=',n);
end.
Если элементы массива вводятся с клавиатуры, то СА имеет вид (рис.8,б) и текст программы изменится:
program lr6_2;
var a: array[1..10] of integer;
i, min, n: integer;
begin
read(a[1]);
min:=a[1]; n:=1;
for i:=2 to 10 do begin
read(a[i]);
if a[i]<min then begin
min:=a[i]; n:=i;
end;
end;
writeln('минимальный элемент равен ', min, ' n=',n);
end.
Задание 1
Начертить структурную схему алгоритма, написать и отладить программу для одной из следующих задач. В программе 6_1 исходные массивы задать типизированными константами. В программе 6_2 элементы исходных массивов ввести через оператор ввода.
1. Дан массив из N чисел (8<N<12). Вычислить их среднее геометрическое значение.
2. Дан массив из N чисел (10<N<15). Найти максимальное значение.
3. Дано 20 чисел. Найти их среднее арифметические значение.
4. Дано 12 вещественных чисел. Найти порядковый номер того из них, которое наиболее близко к какому-нибудь заданному целому числу Х.
5. Дана последовательность из 15 целых чисел. Определить количество отрицательных чисел в ней и максимальное число подряд следующих отрицательных чисел.
6. Дано 15 целых чисел. Найти наибольшее из них. Определить, сколько из чисел принимает наибольшее значение.
7. Дано целое n>1 и вещественные числа x1,x2,..,xn. Вычислить математическое ожидание и дисперсию по формулам
M= , D= .
8. Дан массив из N чисел (8<N<12). Вычислить сумму элементов с нечетными индексами и их среднее арифметические значение.
9. Даны два одномерных массива А и В. Вычислить элементы массива С по правилу: если аi и bi различны, то сi присвоить их сумму, при одинаковых аi, bi в сi переписать соответствующий элемент массива А.
10. Дано 10 вещественных чисел. Вычислить разность между максимальным и минимальным из них.
11. Дано 10 вещественных чисел. Определить, образуют ли они возрастающую последовательность.
12. Дан массив X из n чисел (6<n<10). Вычислить:
y = x1 - x2 + x3 - ...- xn-1 +xn .
13. Дано 18 чисел. Определить, количество элементов, отличное от последнего числа.
14. Дано 12 чисел. Напечатать сначала все отрицательные из них, а затем все остальные.
15. Сформировать одномерный массив из 15 простых чисел.
16. Дано восемь натуральных чисел. Найти их наибольший общий делитель.
17. Дана последовательность натуральных чисел. Вычислить сумму тех из них, порядковые номера (индексы) которых - простые числа.
18. Дан массив из 20 натуральных чисел. Вычислить сумму тех из них, порядковые номера которых - числа Фибоначчи, определяемые формулами
f0 = f1=1; fn =fn-1 + fn-2 при n=1,2,3,... .
19. Дан массив X из n чисел. Вычислить:
y = xn(xn+xn-1)(xn + xn-1 + xn-2)...(xn + ... + x1) .
20. Дано 24 целых числа. Распечатать их в обратном порядке по шесть чисел в строке.
Задание 2 (программа 6_3)
Модифицировать программу 3_2 для функций F1(x) и F2 (x) таким образом, чтобы результаты были сформированы в виде трех одномерных массивов. Выпол -нить ее и сравнить результаты с полученными в лабораторных работах 3 и 4.
Лабораторная работа 7
Программирование алгоритмов обработки двумерных массивов
Цель работы: научиться разрабатывать и отлаживать программы с использованием матриц.
Описание двумерного массива (матрицы):
TYPE
<имя>= ARRAY[диап1,диап2] OF <базовый_тип>;
где [диап] - диапазон для одного индекса.
Пример. Вычислить суммы элементов
в столбцах двумерного числового массива
А размером [1..3,1..4].
Текст программы для СА (рис. 9):
Program lr7_1;
CONST a: array[1..3,1..4] of integer =
((1,2,3,4),(1,2,3,4),(1,2,3,4));
VAR
s: array[1..4] of integer; {массив сумм}
i, j: integer;
BEGIN
for j:=1 to 4 do
begin
s[j]:=0;
for i:=1 to 3 do
s[j]:=s[j]+a[i,j];
write(' s[',j,']=',s[j])
end;
END.
Задание 1 (программа 7_1)
1. Даны матрицы A,B: array [1..4,1..4] of real. Вычислить матрицу С поэлементным сложением соответствующих элементов матриц А и В.
2. Дана матрица B: array [1..5,1..5] of real. Найти для нее транспонированную матрицу.
3. Даны матрица A: array [1..4,1..4] of real и константа К. Вычислить матрицу С=А*К.
4 . Сформировать массив по правилу 1 0 0 ... 0
2 1 0 ... 0
3 2 1 ... 0
...
10 9 8 ... 1 .
5. Даны натуральное N и элементы квадратной вещественной матрицы А пято-го порядка. Вычислить N-ю степень каждого элемента этой матрицы
(аij1=аij, аij2=аij*аij, аij3= аij2*аij и т.д., где i,j=1,2,...,5).
6 . Сформировать массив по правилу 0 0 0 ...0
0 1 0 ...0
0 0 2 ...0
…
0 0 0 ...9 .
7. Сформировать массив последовательностью натуральных чисел:
1 2 ... 10
11 12 ... 20
21 22 ... 30
...
91 92 ... 100 .
8. Сформировать двумерный массив:
1 2 3 4 5
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1 .
9. Дана матрица A: array [1..N,1..N] of integer. Сформировать вектор В из максимальных элементов каждой строки.
10. Дана матрица A: array [1..6,1..6] of integer и переменная Х. Элементы нечет-ных строк матрицы А заменить на Х.
11. Дана матрица B: array [1..5,1..5]. Получить массив С удалением (либо об-нулением) n-й строки и k-го столбца из матрицы В.
12. Определить, является ли заданная квадратная матрица девятого порядка ма
гическим квадратом, т. е. такой, в которой суммы элементов во всех строках и столбцах одинаковы.
13. Определить, является ли заданная целая квадратная матрица шестого порядка симметричной (относительно главной диагонали).
14. Дана вещественная матрица A: array [1..7,1..4]. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент оказался в верхнем левом углу.
15. Дана вещественная матрица размером 4х8. Упорядочить ее строки по не- убыванию сумм их элементов.
16. Для заданной целой матрицы размером 6х8 элементов напечатать индексы всех ее седловых точек. Элемент матрицы называется седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце.
17. Дана матрица A: array [1..6,1..2] вещественных чисел. Рассматривая A [i,1] и A [i,2] как координаты точек на плоскости, определить радиус наименьшего круга (с центром в начале координат), внутрь которого попадают все эти точки.
18. Дан массив F: array [1..N,1..M] of byte, определить количество «особых» элементов в нем. Элемент считается «особым», если он больше суммы остальных
элементов своего столбца.
19. Дана матрица D: array [1..5,1..6] of integer. Упорядочить элементы строк в нем по убыванию.
20. Дан массив М координат точек на плоскости. Найти наибольшее расстоя-ние между этими точками.
Задание 2 (программа 7_2)
Сформировать таблицу Пифагора.
Задание 3 (программа 7_3)
Модифицировать программу 6_3 таким образом, чтобы значения X, F1 и F2 были представлены двумерным массивом, состоящим из трех строк.
Лабораторная работа 8