Пример 9.1.

Найти след (сумма элементов главной диагонали) квадратных матрицы A[k,k] и B[n,n], где k, n  – размеры матриц. Сделаем это с помощью  подпрограммы-функции Sled. В программе пользователь по запросу вводит размеры матриц A и B. Затем матрицы заполняются случайными числами с помощью вложенных циклов и функции Random (возвращает случайные вещественные числа в интервале 0..1). Для контроля ввода матрицы выводятся на экран. Далее последовательно для матриц A и B вызывается функция Sled, и вычисленные значения следов матриц A и B выводятся на экран.

Консоль перед закрытием программы:

paskal61

Листинг программы

program prg_9_1;

{$mode objfpc}{$H+}

uses

Classes, SysUtils, RusTrans;

const

Max=40;                                              // Максимальный размер матриц

type

Mas=array[1..Max,1..Max] of Real;     // Тип для матрицы

var

i,j,k,n:integer;

A,B:Mas;

Sled1,Sled2:real;

function Sled(M:Mas; r:integer):Real;            // Функция

var

i:Integer;

s:Real;

begin

s:=0;                                              // Обнуление суммы

for i:=1 to r do s:=s+M[i,i];               // Накопление суммы

Result:=s;

end;

begin

writeln(Rus(‘Введите размеры матриц не более ‘),Max);

write(Rus(‘   Первая k=’));           // Первая матрица

readln(k);

write(Rus(‘   Вторая n=’));           // Вторая матрица

readln(n);

writeln;

writeln(Rus(‘Спасибо. Для продолжения нажмите Enter’));

writeln;

readln;

Randomize;

for i:=1 to k do                               // Формирование A

for j:=1 to k do A[i,j]:=0.5-random;

for i:=1 to n do                                      // Формирование B

for j:=1 to n do B[i,j]:=0.5-random;

writeln(Rus(‘Матрицы заполнены случайными числами’));

writeln;

for i:=1 to k do                               // Вывод матрицы A

begin

for j:=1 to k do write(A[i,j]:8:3);

writeln;

end;

writeln;

for i:=1 to n do                                      // Вывод матрицы B

begin

for j:=1 to n do write(B[i,j]:8:3);

writeln;

end;

readln;

Sled1:=Sled(A,k);                                 // Вызов функции для A

Sled2:=Sled(B,n);                                 // Вызов функции для B

writeln(Rus(‘Результаты’));                // Заголовок ответа

writeln;

writeln(‘Sled1= ‘, Sled1:5:2);                // Ответы

writeln(‘Sled2= ‘, Sled2:5:2);

readln;                                                  // Ожидание Enter

end.

Twitter SEO Community Ваау! News2.ru Chipp Korica SMI2 Google Bookmarks Digg I.ua Закладки Yandex Linkstore Myscoop Communizm Ru-marks Webmarks Ruspace Linkomatic Kli.kz Web-zakladka Zakladok.net Reddit delicious Ma.gnolia Technorati Slashdot Yahoo My Web БобрДобр.ru Memori.ru rucity.com МоёМесто.ru Mister Wong



Copyright © 2009-2010 Программирование на паскале.