Текст программы на языке Паскаль



Program Example_19;

Var  m : integer; A, Z : real;

function Stepen(X: real; N: integer): real;

Var i : integer; P : real

Begin

P := 1;

If N < 0 then X := 1 / X;

For i := 1 to abs(N) do

P := P * X;

Stepen := P

End;

Begin

writeln;

write(‘Введите действительное число  А = ‘);

read(А);

write(‘Введите показатель степени – целое число  М = ‘);

read(m);

Z := (Stepen(A, 5) - Stepen(A, -3)) / 3 / Stepen(A, M);

writeln(‘Результат: Z = ‘, Z:8:4);

readln

end.

Данные для тестирования

1) Для A = 2, М = 3

ð Результат: Z = (25 – 2-3) / 3 / 23 = (32 – 0.125) / 24 = 1.328125

2) Для A = -2, М = -3

ð Результат: Z = ((-2)5 – (-2)-3) / 3 / (-2)-3 = (-32 + 0.125)*(-8) / 3 = 85

 

 

Работа с МАТРИЦами

В задачах этой темы исходная матрица (матрицы) должны считываться из заранее подготовленного текстового файла, в котором записана квадратная матрица размером не менее 6 строк и 6 столбцов. Числа, определяющие размер исходной матрицы (n или n, m) и другие скалярные исходные данные должны вводиться с клавиатуры.

После завершения работы программы исходная матрица и результаты работы программы должны быть выведены на экран и в текстовый файл.

Пример 9.1.  Дана матрица действительных чисел n ´ m, все элементы которой различны. Найти сумму элементов строки, в которой находится наименьший элемент матрицы и столбца, в котором находится наибольший элемент.

Решение задачи

Выберем схему решения поставленной задачи.

Прежде всего, на устройстве Е: создадим текстовый файл (назовём его data.txt), в котором разместим исходный массив размером не менее 6 строк и 6 столбцов. Это можно сделать с помощью приложения Блокнот или через редактор текста среды Turbo Pascal.

С помощью ввода с клавиатуры зададим размеры n и m исходной матрицы. Считывание элементов матрицы {А} из файла и вывод их на экран организуем с помощью вложенных операторов цикла с параметром (for).

Затем переходим к поиску наименьшего и наибольшего элементов массива. При отыскании наибольшего элемента будем запоминать номер столбца, в котором он находится, а при поиске наименьшего – номер его строки. Введём переменные:

min – значение наименьшего элемента массива;

max – значение наибольшего элемента массива;

k – номер столбца, в котором находится наибольший элемент массива;

r – номер строки, в котором находится наименьший элемент массива;

S – искомая сумма.

Вычисление искомой суммы элементов организуем также с использованием операторов цикла с параметром (for).

Блок-схема алгоритма

Текст программы на языке Паскаль

Program Example_20;

Var   i, j, n, m, k, r : integer;   min, max, S : real;

A : array [1..10,1..10] of real;

F : text;

Begin

writeln;

write(‘Задайте число строк матрицы N = ‘);

read(n);

write(‘Задайте число столбцов матрицы М = ‘);

read(m);

writeln(‘Исходная матрица:’);

Assign(F, ‘E:\data.txt’);

Reset(F);

For i:=1 to n do begin

For j:=1 to m do begin

read(F, A[i, j]); write(A[I, j]:7:2) end;

readln(F); writeln end;

close(F);

min := A[1, 1];

max := A[1, 1];

k := 1;

r := 1;

For i:=1 to n do 

For j:=1 to m do begin

if A[i, j] < min then begin min := A[i, j]; r := i end;

if A[i, j] > max then begin max := A[i, j]; k := j end

end;

S := 0;

For i:=1 to n do 

S := S + A[i, k];

For j:=1 to m do 

S := S + A[r, j];

writeln(‘Искомая сумма S = ‘, S:5:2);

Assign(F, ‘E:\result.txt’);

Rewrite(F);

writeln(F, ‘Искомая сумма S = ‘, S:5:2);

close(F);

readln

end.

Данные для тестирования

Пусть в файле E:\data.txt хранятся следующие данные:

-11 2 13 4 15 6

7 -30 8 -1 9 12

11 -3 0 -2 50 -5

-9 16 20 5 -7 -20

17 -4 21 -6 22 -8

-7 18 -2 -15 1 -9

1) Для N = 4, M = 6

ð Исходная матрица:

 -11.00   2.00 13.00 4.00 15.00 6.00

7.00 -30.00 8.00 -1.00 9.00 12.00

11.00 -3.00 0.00 -2.00 50.00 -5.00

-9.00 16.00 20.00 5.00 -7.00 -20.00

Искомая сумма S = 7 – 30 + 8 – 1 + 9 + 12 + 15 + 9 + 50 – 7 = 72

2) Для N = 5, M = 4

ð Исходная матрица:

 -11.00 2.00 13.00 4.00

7.00 -30.00 8.00 -1.00

11.00 -3.00 0.00 -2.00

-9.00 16.00 20.00 5.00

17.00 -4.00 21.00 -6.00

Искомая сумма S = 7 – 30 + 8 – 1 + 13 + 8 + 0 + 20 + 21 = 46

Пример 9.2.  Дана матрица действительных чисел n ´ m. Определить количество таких элементов матрицы, сумма индексов которых нечетна, и которые меньше суммы остальных элементов своего столбца.

Решение задачи

Выберем схему решения поставленной задачи.

Прежде всего, как и в предыдущей задаче, на устройстве Е: создадим текстовый файл (назовём его data.txt), в котором разместим исходный массив размером не менее 6 строк и 6 столбцов.

С помощью ввода с клавиатуры зададим размеры n и m исходной матрицы. Считывание элементов матрицы {А} из файла и вывод их на экран организуем с помощью вложенных операторов цикла с параметром (for).

Введём переменную k – количество элементов, удовлетворяющих заданному условию. Первоначально  k = 0.

Для поиска указанных элементов и сравнения их с суммой остальных элементов соответствующего столбца будем использовать вложенные циклы с параметром. В качестве параметра во внешнем цикле введём переменную j, отвечающую за изменение номера столбца. В первом внутреннем цикле с параметром i(переменная i отвечает за изменение номера строки) для каждого столбца вычислим сумму всех его элементов. Для этого введём переменную S и для каждого столбца первоначально будем задавать S = 0.

Затем, во втором внутреннем цикле с параметром iс помощью условного оператора организуем проверку выполнения одновременно двух условий: 1) сумма индексов элемента Ai,j – нечётна (для этого можно воспользоваться, например, стандартной функцией odd(x)) и 2) элемент Ai,j меньше суммы остальных элементов своего столбца, т.е. меньше чем  S - Ai,j. Если оба эти условия выполняются, то значение переменной k увеличиваем на 1.

Результатом решения задачи будет значение переменной k. Его необходимо вывести на экран и в текстовый файл (предположим, Е:\result.txt).

Блок-схема алгоритма


Дата добавления: 2018-04-04; просмотров: 154;