Текст программы на языке Паскаль
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; просмотров: 382; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!