Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет.docx
Скачиваний:
99
Добавлен:
13.03.2016
Размер:
852.36 Кб
Скачать

Задача 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..

Результаты работы программы

Переменные

Класс

Имя

Тип

Структура

Назначение

Блок-схема