Как найти сумму матриц паскаль

program pr;
var
a,b,c:array [1..100,1..100] of real; // 3 массива вещественных, не обязательно до 100, какие хочешь, в целом больше 20 редко берут 
i,j,n:integer;
begin
writeln('Введите порядок матриц');    // вводим порядок матрицы,то есть её размер,если вводит 3,то размер матрицы 3х3, если 4,то 4х4 и тд.
readln(n);
for i:=1 to n do
begin                 // 2 цикла для заполнения строк(i) и столбцов(j) матрицы
for j:=1 to n do
a[i,j]:=random(21);   // матрица заполнена случайными числами от 0 до 20 (можно брать такой диапазон какой хочешь, при желании  можно задать матрицу не случ. числами, а в вводом пользователя)
end;
writeln('Матрица А');
for i:=1 to n do
begin                 // с помощью таких же циклов выводим матрицу на экран
for j:=1 to n do
write(a[i,j]:3);
writeln;
end;
for i:=1 to n do             // так же и со 2 матрицей
begin
for j:=1 to n do
b[i,j]:=random(21);
end;
writeln;
writeln('Матрица B');
for i:=1 to n do
begin
for j:=1 to n do
write(b[i,j]:3);
writeln;
end;                         // теперь создадим 3 матрицу,каждый элемент котjрой равно сумме соответ эл. 2 других матриц( например с[1,1]:=a[1,1]+b[1,1]) и тд до конца цикла,то есть до цикла( цифры порядка матрицs)
for i:=1 to n do           
begin                   
for j:=1 to n do
c[i,j]:=a[i,j]+b[i,j];
end;
writeln;
writeln('Матрица C');        // выводим 3 матрицу как предыдущие 
for i:=1 to n do
begin
for j:=1 to n do
write(c[i,j]:3);
writeln;
end;
 
end.

3 / 3 / 3

Регистрация: 26.11.2012

Сообщений: 31

1

Сумма матриц

26.11.2012, 19:26. Показов 1647. Ответов 4


Студворк — интернет-сервис помощи студентам

Всем привет.
Забыл про массивы в паскале.
Посмотрел в интернете — схожей задачи не нашел.

Даны натуральные числа M и N и матрицы A={aij}, B={bij}; i=1,M; j=1,N.
Получить сумму этих матриц и выдать ее на печать.

Буду очень рад решению, с пояснениями.
Спасибо.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

26.11.2012, 19:26

4

Kodzaev

3030 / 1916 / 1649

Регистрация: 30.04.2011

Сообщений: 3,060

26.11.2012, 19:33

2

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Var
  a,b: Array[1..10,1..10] of Integer;
  i,j,m,n: Integer;
BEGIN
Writeln('Введите размеры матриц: '); Readln(m,n);
Randomize;
Writeln('1 матрица:');
For i:=1 to m do
begin
  For j:=1 to n do
  begin
    a[i,j]:=Random(51)-25;
    Write(a[i,j]:4);
  end;
  Writeln
end;
Writeln('2 матрица:');
For i:=1 to m do
begin
  For j:=1 to n do
  begin
    b[i,j]:=Random(51)-25;
    Write(b[i,j]:4);
  end;
  Writeln
end;
Writeln('Сумма матриц:');
For i:=1 to m do
begin
  For j:=1 to n do
  begin
    a[i,j]:=a[i,j]+b[i,j];
    Write(a[i,j]:4);
  end;
  Writeln
end;
Readln
END.



1



3 / 3 / 3

Регистрация: 26.11.2012

Сообщений: 31

26.11.2012, 19:52

 [ТС]

3

Kodzaev, проверил — получается что-то другое.
Один раз — зациклилось.



0



3030 / 1916 / 1649

Регистрация: 30.04.2011

Сообщений: 3,060

26.11.2012, 20:16

4

trilal, проверил только что, все вроде верно. Если только ты под сложением матриц подразумеваешь что-то другое

Миниатюры

Сумма матриц
 



1



3 / 3 / 3

Регистрация: 26.11.2012

Сообщений: 31

26.11.2012, 20:37

 [ТС]

5

Проверил еще раз, видимо, я в первый раз сам накосячил.
Спасибо за помощь.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

26.11.2012, 20:37

Помогаю со студенческими работами здесь

Сумма денег S в банке под процентом T. Какая будет сумма через 1, 2, 3, 4, 5 лет?
Помогите(((
сума денег S в банку под процентом T. Какая будет сума через 1, 2, 3, 4, 5, лет?

Упорядочить те строки матриц, сумма которых есть в другом массиве
Всем привет.

У меня получилось сделать так, что если программа находит элемент в массиве…

Чтение матриц с внешнего файла, умножение матриц…
Вот не могу составить программу… Необходимо считать матрицы А и В с внешнего файла (input)….

Сумма матриц
Подскажите где ошибка. Суть такая, пользователь вводит данные в первую таблицу, после чего нажимает…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

5

Тем, кто знакомым с математическими матрицами, будет не трудно освоить и двумерные массивы в Pascal. Матрица – это математический объект, представляющий собой прямоугольную таблицу. Таблица состоит из элементов, которые находятся на пересечении строк и столбцов, определяющих их, то есть i-ая строка и j-ый столбец задают адрес k-ому элементу матрицы (kij). Двумерные массивы абсолютно аналогичны математическим матрицам.

В отличие от одномерных массивов, двумерные характеризуются в программе парой индексов, один из которых соответствует номеру строки, другой – столбца:

Mas[m, n], где Mas – имя массива, n – номер строки, а m – номер столбца.

Описать матрицу в программе можно несколькими способами:

1) В разделе описания переменных:

Var Mas: Array[1..n, 1..m] of <тип элементов>;

2) При помощи одномерного массива, элементами которого являются одномерные массивы.
Пример:

Const
n = 5; m = 10;
Type
Arr1 = Array[1..m] of <тип элементов >;
Arr2 = Array[1..n] of arr1;
Var Mas: arr2;

Переменная Mas – матрица, состоящая из пяти строк, в каждую из которых включено по десять элементов.

3) Предыдущий способ можно упростить так:

Const n = 5; m = 10;
Турe arr=Array[1..n] Of Аrrау[1..m] of <тип элементов>;
Var Mas: arr;

4) И снова сократив запись, получим:

Const n = 5; m = 10;
Type arr = Array[1..n,1..m] of <тип элементов>;
Var Mas: arr;

Для обработки содержимого матрицы, удобно пользоваться вложенными циклами:

For i:= 1 To n Do
  For j:= 1 To m Do

Например, для заполнения массива случайнми числами:

for i:=1 to n do
  for j:=1 to n do 
    x[i,j]:=random(100); 

Для вывода двумерного массива вещественных чисел размером n строк, m столбцов:

for i:=1 to n do begin
  for j:=1 to m do 
    write(x[i,j]:5:2);
  writeln;
end;

В следующей программе массив сначала заполняется числами с клавиатуры, а затем выводиться на экран.

program input_and_output_array;
uses crt;
const n=3; m=3;
var i, j: integer;
mas: array[1..n, 1..m] of integer;
begin
  {ввод массива}
  for i:=1 to n do
    for j:=1 to m do
    begin
      write(' Элемент ', i,' строки, ',j,' столбца = ');
      readln(mas[i, j]);
    end;
  writeln(' Получившаяся матрица: ');
  {вывод массива}
  for i:=1 to n do
  begin
    for j:=1 to m do
    begin
      write(mas[i, j]:5);
    end;
  writeln
  end;
end.

Количество элементов в массиве (его размерность) можно узнать, умножив количество строк на количество столбцов.

Сумма всех элементов квадратной матрицы:

sum:=0;

for i:=1 to n do
  for j:=1 to n do 
    sum:=sum+x[i,j];

writeln('Сумма=',sum); 

Сумма элементов главной диагонали квадратной матрицы (элементы главной диагонали имеют одинаковые индексы -x[1,1], x[2,2] и т.д.):

sum:=0;

for i:=1 to n do 
  sum:=sum+x[i,i];

writeln('Сумма=',sum);

Сумма элементов побочной диагонали (диагонали противоположной главной). Индексы элементов побочной диагонали в сумме равны n+1, т.е. i+j=n+1 или j=n+1-i:

sum:=0;

for i:=1 to n do 
  sum:=sum+x[i,n+1-i];

writeln('Сумма=',sum);

Сумма элементов ниже главной диагонали квадратной матрицы (строго ниже):

sum:=0;

for i:=1 to n do
  for j:=1 to n do 
    if i>j then 
      sum:=sum+x[i,j];

writeln('Сумма=',sum);

Можно не просматривать весь массив, а брать только нужные элементы:

sum:=0;

for i:=2 to n do
  for j:=1 to i-1 do 
    sum:=sum+x[i,j];

writeln('Сумма=',sum);

Сумма элементов выше и на главной диагонали квадратной матрицы:

sum:=0;

for i:=1 to n do
  for j:=1 to n do
    if i<=j then 
      sum:=sum+x[i,j];

writeln('Сумма=',sum);

Здесь также можно не просматривать весь массив, а брать только нужные элементы:

sum:=0;

for i:=1 to n do
  for j:=i to n do 
    sum:=sum+x[i,j];

writeln('Сумма=',sum);

Сумма элементов ниже побочной диагонали квадратной матрицы (строго ниже) :

sum:=0;

for i:=1 to n do
  for j:=1 to n do
    if i+j>n+1 then 
      sum:=sum+x[i,j];

writeln('Сумма=',sum);

Можно не просматривать весь массив, а брать только нужные элементы:

sum:=0;

for i:=2 to n do
  for j:=n+2-i to n do 
    sum:=sum+x[i,j];

writeln('Сумма=',sum);

Если надо посчитать сумму элемсентов ниже побочной диагонали и на ней, то в предыдущем примере, при просмотре всего массива в предыдущем примере надо заменить знак отношения > на >=, а при просмотре толко нужных элементов применить такой код:

sum:=0;

for i:=1 to n do
  for j:=n+1-i to n do 
    sum:=sum+x[i,j];

writeln('Сумма=',sum);

При подсчете суммы элементов выше и на главной диагонали, выше и на побочной диагонали возможно применине такого кода:

sum:=0;

for i:=1 to n do
  for j:=1 to n do
    if (i<=j) and (i+j<=n+1) then
      sum:=sum+x[i,j];

writeln('Сумма=',sum);

Подсчет сумм элементов по строкам:

for i:=1 to n do begin
  sum:=0;

  for j:=1 to n do 
    sum:=sum+x[i,j];

  writeln('Сумма ',i,'-й строки',sum);
end;

Подсчет сумм элементов по столбцам:

for j:=1 to n do begin
  sum:=0;

  for i:=1 to n do 
    sum:=sum+x[i,j];

  writeln('Сумма ',j,'-го столбца ',sum);
end;

Безусловно суммы по строкам и столбцам можно записывать в одномерный массив. Например, для сумм по столбцам:

for i:=1 to n do 
  sum[j]:=0;

for i:=1 to n do
  for j:=1 to n do 
    zum[j]:=sum[j]+x[i,j];

{вывод сумм по столбцам}
for i:=1 to n do 
  write(sum[i]:4);
writeln; 

Суммы элементов по диагоналям, параллельным главной диагонали.

Очевидно, что таких сумм будет 2n-1. Кроме того, разности индексов эдементов, стоящих на одной диагонали будут равны друг другу. Имеется в виду разность «номер строки минус номер столбца». Эти разности будут меняться от -n+1 для самой верхней диагонали s1, содержащей всего лишь один элемент, до n-1 для диагонали s2N-1, расположенной в самом низу матрицы и содержащей также всего один элемент. Таким образом, для подсчета сумм мы должны объявить массив:

Var sum:array[-n+1..n-1] of integer;

Число элементов в этом массиве будет 2n-1. Код для подсчета этих сумм:

for i:=-n+1 to n-1 do 
  sum[i]:=0;

for i:=1 to n do
  for j:=1 to n do 
    sum[i-j]:=sum[i-j]+x[i,j];

for i:=-n+1 to n-1 do 
  write(sum[i]); 

Суммы элементов по диагоналям, параллельным побочной диагонали.

for i:=2 to 2*n do 
  sum[i]:=0;

for i:=1 to n do
  for j:=1 to n do 
    sum[i+j]:=sum[i+j]+x[i,j];

for i:=2 to 2*n do 
  write(sum[i]);

Суммы элементов по периметрам двумерного массива.

Cледует различать четный или нечетный порядок матрицы n. Число сумм будет равно k=n div 2 при четном n и k=n div 2 +1 при нечетном значении n.

Счет суммы начинается по строке i от столбца j равного i и заканчивается столбцом n-i+1, т.е. начинается с элемена находящегося на главной диагонали и заканчивается элементом на побочной диагонали.

Одновременно учитываются элементы из параллельной строки, индекс которой равен n-i+1.

Затем считаем элементы по двум паралельным столбцам i и n-i+1 (не учитывая элементы, стоящие в строках). Если n -нечетное число, то выводим значение центрального элемента массива x[k+1,k+1].

k:=n div 2;

for i:=1 to k do begin
  sum:=0;

  {строки}
  for j:=i to n-i+1 do
    sum:=sum+x[i,j]+x[n-i+1,j];

  {столбцы}
  for j:=i+1 to n-i do
    sum:=sum+x[j,i]+x[j,n-i+1];

  writeln(sum); {вывод суммы}
end;

if n mod 2=1 then
  writeln(x[k+1,k+1]); 

На занятии будет рассмотрен двумерный массив в Pascal и примеры работы с ним. Кроме того, предстоит знакомство с понятиями побочная диагональ матрицы в Паскаль и главная диагональ

Содержание:

  • Двумерный массив в Pascal
  • Описание, ввод и вывод элементов двумерного массива
  • Главная и побочная диагональ при работе с двумерными матрицами в Pascal

Матрица или двумерный массив – это прямоугольная таблица чисел (или других элементов одного типа). Каждый элемент матрицы имеет два индекса (номер строки и номер столбца).

матрица

Исходные данные для решения многих задач можно представить в табличной форме:
двумерный массив Pascal
Таблица результатов производственной деятельности нескольких филиалов фирмы может быть представлена так:

zavod1: array [1..4] of integer;
zavod2: array [1..4] of integer; 
zavod3: array [1..4] of integer;

Или в виде двумерного массива так:

Объявление двумерного массива:

var A: array[1..3,1..4] of integer;
begin
{...}
begin
  var  a := new integer[3,4];
  {...}
end.

Описание, ввод и вывод элементов двумерного массива

Варианты описания двумерного массива (традиционный pascal)

  1. Описание массива в разделе переменных:
  2. const N = 3;
          M = 4;
    var A: array[1..N,1..M] of integer;
  3. Описание массива через раздел type:
  4. const
      M=10;
      N=5;
    type
      matrix=array [1..M, 1..N] of integer;
    var A: matrix;

Ввод двумерного массива m x n с клавиатуры:

ввод двумерного массива

for i:=1 to N do
  for j:=1 to M do begin
    write('A[',i,',',j,']=');
    read ( A[i,j] );
  end;

for var i:=0 to a.RowCount-1 do
  for var j:=0 to a.ColCount-1 do
     a[i,j]:=readinteger;

Заполнение случайными числами:

заполнение случайными числами


var a := MatrRandomInteger(3,4,0,10); // целые числа в диапазоне от 0 до 10
var a1 := MatrRandomReal(3,4,1,9) // веществ. числа в диапазоне от 1 до 9

«Красивый» вывод элементов двумерного массива m x n:

Следующий фрагмент программы выводит на экран значения элементов массива по строкам:
вывод двумерного массива

1
2
3
4
5
for i:=1 to N do begin
  for j:=1 to M do
     write ( A[i,j]:5 );
  writeln;
end;

1
2
3
4
5
6
begin
  var a := MatrRandomInteger(3,4,0,10);
  var a1 := MatrRandomReal(3,4,1,9);
  a.Println;
  a1.Println(6,1) // 6 позиций всего на вывод, 1 знак после десят. запятой
end.

Результат:

   8   2   1   3
   5   8   0   8
   6   3   9   3
   3.3   4.7   3.7   5.4
   2.9   1.7   2.3   4.0
   8.3   3.7   8.4   1.4

Рассмотрим следующую задачу: Получены значения температуры воздуха за 4 дня с трех метеостанций, расположенных в разных регионах страны:

Номер станции 1-й день 2-й день 3-й день 4-й день
1 -8 -14 -19 -18
2 25 28 26 20
3 11 18 20 25

Т.е. запись показаний в двумерном массиве выглядела бы так:

t[1,1]:=-8; t[1,2]:=-14; t[1,3]:=-19; t[1,4]:=-18;
t[2,1]:=25; t[2,2]:=28; t[2,3]:=26; t[2,4]:=20;
t[3,1]:=11; t[3,2]:=18; t[3,3]:=20; t[3,4]:=25;

Или в pascalabc.NET:

var t := Matr(3,4,-8,-14,-19,-18,25,28,26,20,11,18,20,25);  
t.Println;

Объявление двумерного массива:

var t: array [1..3, 1..4] of integer;

Задание array 1: Необходимо:

  1. Распечатать температуру на 2-й метеостанции за 4-й день и на 3-й метеостанции за 1-й день.
  2. Распечатать показания термометров всех метеостанций за 2-й день.
  3. Определить среднюю температуру на 3-й метеостанции.
  4. Распечатать, в какие дни и на каких метеостанциях температура была в диапазоне 24-26 градусов тепла.

Дополните код:

Показать решение:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var t: array [1..3, 1..4] of integer;
s,i,j:integer;
begin
t[1,1]:=-8; 	t[1,2]:=-14; 	t[1,3]:=-19; 	t[1,4]:=-18;
t[2,1]:=25; 	t[2,2]:=28; 	t[2,3]:=26; 	t[2,4]:=20;
t[3,1]:=11; 	t[3,2]:=18; 	t[3,3]:=20; 	t[3,4]:=25;
{1. Распечатать показания термометров на 2-й метеостанции за 4-й день и на 3-й метеостанции за 1-й день}
writeln('1-е задание: ',t[2,4] , ' и ',t[...,...]);
 
{2. Показания термометров всех метеостанций за 2-й день}
for i:=1 to ... do 
   writeln ('2-е задание: ',t[...,...]);
 
{3. Определим среднее значение температуры на 3-й метеостанции:}
i:=3;
s:=0;
for j:=1 to 4 do 
   s:=...; {сумматор}
writeln('3-е задание: ', s/4);
{распечатаем всю таблицу}
for i:=1 to 3 do
    for j:=1 to 4 do
        writeln(t[i,j]);
{4. Распечатаем станции и дни с температурой 24-26 гр}
writeln('4-е задание: ');
for i:=1 to 3 do
    for ... ... do
        if (...) and (...) then
           writeln('станция ', i, ' день ', j)
end.

Самостоятельно подумайте, как находится сумма элементов массива pascal.

Задание array 2. Найти сумму элементов массива (прямоугольной таблицы) размером [m x n]

Задание array 4.
Найти сумму всех элементов массива (переменная sum) 5 x 4, а также сумму элементов, составляющих столбцы таблицы (двумерного массива). Для хранения сумм столбцов чисел использовать одномерный массив (s). Дополните код.
двумерный массив в pascal

Показать решение:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const  m = 5;
       n = 4;
var
    a: array[1..m,1..n] of byte;
    s: array[1..n] of byte;
    i,j, sum: byte;
begin
    randomize;
    for i := 1 to m do begin
        for j := 1 to n do begin
            ... {инициализация элементов массива случайными числами}
            ... {вывод элементов массива}
        end;
        writeln
    end;
    writeln ('------------'); {для оформления}
    {обнуление значений массива суммы s[]:}
    ...
    {поиск сумм элементов по столбцам:}
    for i := 1 to n do begin
         for j := 1 to m do begin
           s[i]:=...;
        end;
     write(...)  ; 
    end;
    {поиск общей суммы:}
    sum:=0;
    ...
    {вычисление суммы элементов массива значений сумм по столбцам:}
    for ...
        ...
    write (' | sum = ', sum);
readln
end.

Задание array 4_1.
Найти сумму элементов двумерного массива [m x n] по строкам:

2 8 1 9  : sum = 20
3 1 7 2  : sum = 13
4 5 6 2  : sum = 17

Методы матриц для работы со строками и столбцами:

begin
  var a := MatrRandomInteger(3,4);  
  a.Println;
 
  a.Row(0).Sum.Println();
  a.Row(1).Average.Println;
  a.Row(2).Product.Println;
 
  a.Col(0).Min.Println;
  a.Col(1).Max.Println;
end.

Результат:

  86  62  80  33
  51   4  36  65
  78  30   5  16
261 
39 
187200 
51 
62 

Главная и побочная диагональ при работе с двумерными матрицами в Pascal

Главная диагональ квадратной матрицы n x n (т.е. той, у которой количество строк равно количеству столбцов) проходит с верхнего левого угла матрицы (элемент 1,1) до правого нижнего угла матрицы (элемент n,n).

Побочная диагональ квадратной матрицы n x n проходит с нижнего левого угла матрицы (элемент n,1) до правого верхнего угла матрицы (элемент 1,n).

Формулу поиска элементов диагоналей проще всего искать, нарисовав элементы матрицы:
Если индексы начинаются с единицы (традиционный Паскаль):

1,1 1,2 1,3 1,4
2,1 2,2 2,3 2,4
3,1 3,2 3,3 3,4
4,1 4,2 4,3 4,4

Если индексы начинаются с нуля (pascalAbc.NET):

0,0 0,1 0,2 0,3
1,0 1,1 1,2 1,3
2,0 2,1 2,2 2,3
3,0 3,1 3,2 3,3

 
Учитывая, что первая цифра в программе будет соответствовать счетчику i, а вторая — счетчику j, то из таблицы можно вывести формулы:

Главная диагональ матрицы в Паскаль имеет формулу:
i=j
Побочная диагональ матрицы в Паскале традиционном имеет формулу:
n=i+j-1 (или j=n-i+1)

где n — размерность квадратной матрицы

Побочная диагональ матрицы в pascalAbc.Net имеет формулу:
n=i+j+1

где n — размерность квадратной матрицы

Пример: Вывести на экран сначала главную диагональ квадратной матрицы из N строк и N столбцов, а затем ее побочную диагональ.

Решение:
Вывод элементов главной диагонали
Вывод элементов побочной диагонали

Пример: Заменить элементы главной и побочной диагонали квадратной матрицы нулями

Показать решение:

Паскаль:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var i,j,n:integer;
a: array[1..100,1..100]of integer;
begin
   randomize;
   writeln ('введите размерность матрицы:');
   readln(n);
   for i:=1 to n do begin
        for j:=1 to n do  begin
            a[i,j]:=random(10);
            write(a[i,j]:3);
        end;
        writeln;
   end;
   writeln;
   for i:=1 to n do begin
        for j:=1 to n do  begin
            if (i=j) or (n=i+j-1) then a[i,j]:=0;
            write(a[i,j]:3)
        end;
        writeln;
   end;
end.

PascalAbc.Net

1
2
3
4
5
6
7
8
9
10
11
12
begin
  var n := readinteger('введите размерность матрицы:');
  var a := matrRandomInteger(n, n, -10, 10);
  a.Println(6);
  for var i := 0 to n - 1 do
  begin
    a[i, i] := 0;
    a[i, n - i - 1] := 0;
  end;
  writeln();
  a.Println(6);
end.

Задание array 5:
Найти отдельно сумму элементов главной и побочной диагонали квадратной матрицы

1 7 3 7
2 1 8 3
5 7 6 4
8 2 3 1
-------
sum1 = 9
sum2 = 30

Пример:
Дана матрица 5х5. Найти сумму элементов, стоящих на двух соседних диагоналях с главной и параллельных ей.
побочная диагональ матрицы паскаль и главная
Для решения задачи воспользуйтесь таблицей

Показать решение:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var
A:array[1..5,1..5] of integer;
i,j:integer;
sum,sum1,sum2:integer;
begin
randomize;
for i:=1 to 5 do
for j:=1 to 5 do
    A[i,j]:=random(10);
write ('Исходный массив A: ');
for i:=1 to 5 do begin
    writeln;
    for j:=1 to 5 do
        write (A[i,j]:2,' ');
    end;
sum1:=0;
for i:=1 to 5 do
    for j:=1 to 5 do
        if (i-j=1) then
            sum1:=sum1+A[i,j];
sum2:=0;
for i:=1 to 5 do
    for j:=1 to 5 do
        if (j-i=1) then
           sum2:=sum2+A[i,j];
sum:=sum1+sum2;
writeln;
writeln('Сумма = ',sum);
end.

Задание array 6: Сформировать матрицу размерностью n. Вывести ее на экран. Затем преобразовать ее, заменив необходимые элементы на 0:
главная и побочная диагональ матрицы паскаль

Задание array 7: Сформировать матрицу размерностью n. Вывести ее на экран. Затем преобразовать ее, заменив необходимые элементы на 0:
главная и побочная диагональ матрицы паскальдиагонали матрицы Паскаль

Задание array 8: Сформировать матрицу размерностью n. Вывести ее на экран. Затем преобразовать ее, заменив необходимые элементы на 0:
диагонали матрицы Паскаль
главная и побочная диагональ матрицы паскаль

Задание array 9: Составить программу, позволяющую с помощью датчика случайных чисел сформировать матрицу размерностью N. Определить:

  • минимальный элемент, лежащий ниже побочной диагонали;
  • произведение ненулевых элементов последней строки.
  • Рассмотрим еще один пример работы с двумерным массивом.

    Пример: В двумерном массиве размером N х M определить среднее значение элементов. Найти индекс элемента массива, наиболее близкого к среднему значению.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    var index1,index2,i,j,N,M:integer;
    s,min,f:real;
    a:array[1..300,1..300] of real;
    begin
    N:=10;
    M:=5;
    for i:=1 to N do begin
      for j:=1 to M do begin
        a[i,j]:=random(20);
        s:=s+a[i,j];
        write(a[i,j]:3);
       end;
       writeln;
    end;
     
    f:=s/(N*M);
    writeln('srednee znachenie ',f);
    min:=abs(a[1,1]-f);
    for i:=1 to N do begin
      for j:=1 to M do begin
        if abs(a[i,j]-f)<min then begin
          min:=abs(a[i,j]-f);
          index1:=i;
          index2:=j;
        end;
      end;
    end;
    writeln('naibolee blizkiy ',index1,' ',index2);
    end.

    Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

    проверь себя

    const 
    n=3;
    m=2;
    var
    m1,m2,m3:array[1..n,1..m] of integer;
    i,j:integer;
    begin
    for i:=1 to n do
        begin 
            for j:=1 to m do
              begin
                m1[i,j]:=random(40);
                write('  ',m1[i,j]:3);
              end;
            writeln();
        end;
    writeln('--------') ; 
    
    for i:=1 to n do
        begin 
            for j:=1 to m do
              begin
                m2[i,j]:=random(40);
                write('  ',m2[i,j]:3);
              end;
            writeln();
        end;
    writeln('--------') ; 
    
    for i:=1 to n do
    for j:=1 to m do
    m3[i,j]:=m1[i,j]+m2[i,j];
    
    
    writeln('--------') ; 
    
    for i:=1 to n do
        begin 
            for j:=1 to m do
              begin
                 write('  ',m3[i,j]:3);
              end;
            writeln();
        end;
        
    end.
    

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

    Понравилась статья? Поделить с друзьями:
  • Как найти участника вов вернувшегося с войны
  • Как можно найти фазу
  • Как удачнее всего найти парня
  • Код ошибки 0xc000035a как исправить windows
  • Как найти такое же видео в интернете