Задача 1.4.3.
Условие
Составить программу нахождения экстремального элемента или его порядкового номера при заданном одномерном массиве А из n элементов (или массивов А и С по n элементов в каждом).
Определить наименьшего из значений Аi - Сi.
Листинг
program project1;
var
A: array [1..5] of integer = (-15, 6, 30, -7, 18);
C: array [1..5] of integer = (85, 13, -12, 22, 12);
i, temp, min, min_index: integer;
begin
temp := 0;
min := 0;
min_index := 1;
writeln('Даны два массива:');
writeln('A: [-15, 6, 30, -7, 18]');
writeln('B: [85, 13, -12, 22, 12]');
writeln('Определения порядкого номера наименьшей по абсолютной величине пары Ai-Ci...');
for i:=Low(A) to High(A) do
begin
temp := abs(A[i]-C[i]);
if (temp < min) or (i = Low(A)) then
begin
min := temp;
min_index := i;
end;
end;
writeln('Результат: ', min_index);
readln();
end.
Результаты работы программы
Переменные
Класс |
Имя |
Тип |
Структура |
Назначение |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Блок-схема
Задача 1.6.
Условие
Составить программу вычисления N значений функции Y для X, изменяющегося от Х1 с шагом dX. По формуле
Листинг
program project1;
uses
SysUtils, things, math;
var
N, i: integer;
Y, X, dX, A, X1, Border: extended;
s: string;
begin
A := RequestNumber('Введите переменную A:');
N := abs(round(RequestNumber('Введите число шагов N:')));
X := RequestNumber('Введите стартовую точку X1:');
dX := RequestNumber('Введите величину шага dX:');
Border := 2*A;
writeln('Результат:');
for i:=1 to N do
begin
if X < Border then
Y := -sqrt(A**2 - (x - A)**2)
else
Y := A * (1-exp(A-x));
s := Format('Точка %:2d: (x: %.3f, y: %.3f)', [i, X, Y]);
X += dX;
writeln(s);
end;
readln();
end.
Результаты работы программы
Блок-схема
Переменные
Класс |
Имя |
Тип |
Структура |
Назначение |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задача 2.5.1.
Условие
Составить алгоритм и программу для решения задачи с использованием одномерных и двумерных массивов.
Для матрицы из 2 столбцов и 10 строк отпечатать номер каждой строки, элементы которой имеют совпадения значений, и число таких строк.
Листинг
program project1;
uses
SysUtils;
var
Matrix: array [1..10] of array [1..2] of integer = ((1, 10), (3, 3), (15, 43), (8, 8),
(16, 12), (13, 22), (20, 99),
(77, 77), (14, 14), (34, 69));
i, n: integer;
s: string;
begin
writeln('Поиск строк, имеющих совпадающие значения в матрице из 2 столбцов и 10 строк:');
n := 0;
for i:=Low(Matrix) to High(Matrix) do
begin
if Matrix[i][1] = Matrix[i][2] then
begin
s := Format('Строка %2d: |%2d %2d|', [i, Matrix[i][1], Matrix[i][2]]);
writeln(s);
Inc(n);
end;
end;
writeln('Всего строк с совпадающими значениями: ', n);
readln();
end.
Результаты работы программы
Переменные
Класс |
Имя |
Тип |
Структура |
Назначение |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Блок-схема
Задача 2.5.2.
Условие
Дана матрица, состоящая из n строк и n столбцов или одномерные из м элементов каждый. Составить алгоритм и программу для получения и вывода указанных в условии результатов и самих массивов, если изменялись какие-либо их элементы. Алгоритм любой задачи может быть составлен с использованием единственного двукратного цикла.
Дан массив C1, C2…,Cn. Изменить матрицу, увеличив каждый элемент, который меньше элемента главной диагонали, находящего с ним в одной строке, на Сi, где i- номер строки. Подсчитать общее число изменённых элементов.
Листинг
program project1;
uses
SysUtils, things;
var
i, k, n, Changes, Temp: integer;
Matrix: TMatrix; // array of array of integer
C: array of integer;
begin
randomize; //Инициализируем генератор случайных чисел
//Создание данных для задачи
writeln('Программа создаёт матрицу n на n и массив C с n элементами, заполненные случайными числами от 0 до 100.');
n := abs(round(RequestNumber('Введите n:')));
SetLength(Matrix, n);
SetLength(C, n);
for i:=Low(Matrix) to High(Matrix) do
begin
C[i] := Random(100);
SetLength(Matrix[i], n);
for k:=Low(Matrix[i]) to High(Matrix[i]) do
Matrix[i][k] := Random(100);
end;
writeln(#10#13'Исходная матрица:');
PrintMatrix(Matrix); //Процедура описана в модуле things
writeln(#10#13'Массив С:');
PrintArray(C);
//Решение задачи
writeln('Внесение изменений в матрицу...');
Changes := 0;
for i:=Low(Matrix) to High(Matrix) do
for k:=Low(Matrix[i]) to High(Matrix[i]) do
if Matrix[i][k] < Matrix[i][i] then
begin
Matrix[i][k] += C[i];
Inc(Changes);
end;
writeln(#10#13'Количество изменений: ', Changes);
writeln(#10#13'Результат:');
PrintMatrix(Matrix);
readln();
end..
Результаты работы программы
Переменные
Класс |
Имя |
Тип |
Структура |
Назначение |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Блок-схема