Как найти сумму каждой строки двумерного массива

Есть массив:

int[][] array = new int[2][3];
array[0][0] = 1;
array[0][1] = 2;
array[1][0] = 3;
array[1][1] = 4;
array[0][2] = 5;
array[1][2] = 6;  

Используя цикл for, вычислите сумму каждой строки первого массива и запишите результат в новый массив.

Можете помочь кодом для новичка, т.е простое решение предложить?

Kromster's user avatar

Kromster

13.5k12 золотых знаков43 серебряных знака72 бронзовых знака

задан 15 июл 2018 в 13:43

Anastasia's user avatar

2

Если легкий вариант и не использую Stream API, то вам подойдет такой вариант:

public class Application {

    public static void main(String[] args) {
        int[][] array = new int[2][3];
        array[0][0] = 1;
        array[0][1] = 2;
        array[1][0] = 3;
        array[1][1] = 4;
        array[0][2] = 5;
        array[1][2] = 6;
        int[] newArray = new int[array.length];
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                newArray[i] += array[i][j];
            }
        }
        Arrays.stream(newArray).forEach(System.out::println);
    }

}

ответ дан 15 июл 2018 в 14:17

Andrii Torzhkov's user avatar

3

Вот например мы заполняем массив, так же и складывайте элементы массива.
Вот пример заполнения и вывода.

    package array;

/**
 *
 * @author vvm
 */
public class ArrayCount {

    public static void main(String[] args) {
        int[][] array = new int[2][3];
        for (int i = 0; i < 2; i++) {

            for (int j = 0; j < 3; j++) {
                array[i][j] = i+1;

            }
        }
        for (int i = 0; i < 2; i++) {
            System.out.println("");
            for (int j = 0; j < 3; j++) {
                System.out.print(" array[" + i + "]" + "[" + j + "]" + " = " + array[i][j]);
            }
        }
    }
}

array[i][j] — это ваш элемент массива, то что хранится в ячейке массива с номером ячейки [i][j]. Как в табличке. Только это условно. В памяти компьютера массив хранится по другому. Строки и столбцы — это условность.

ответ дан 15 июл 2018 в 15:20

Vyacheslav Mishchenko's user avatar

попробуйте так

    int rowsCount = array[0].length;
    for(int row = 0; row < rowsCount; row++)
    {
        int sum = 0;
        for(int i = 0; i < array.length; i++)
        {
            int cell = array[i][row];
            sum += cell;
            // debug (remove next line if not needed!)
            System.out.print(cell + (i < array.length - 1 ? " + " : " = "));
        }

        System.out.println(sum);
    }

ответ дан 16 июл 2018 в 6:49

Ramiz's user avatar

RamizRamiz

1,6049 серебряных знаков16 бронзовых знаков

Можно проще сделать с помощью stream:

int[][] array = new int[2][3];
array[0] = new int[]{1, 2, 5};
array[1] = new int[]{3, 4, 6};

int[] sums = Arrays.stream(array)
        // получаем сумму каждой строки
        .mapToInt(row -> Arrays.stream(row).sum())
        // возвращаем массив
        .toArray();

System.out.println(Arrays.toString(sums)); // [8, 13]

ответ дан 10 дек 2020 в 21:35

0 / 0 / 0

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

Сообщений: 23

1

Найти сумму элементов в каждой строке двумерного массива

06.03.2009, 11:33. Показов 52452. Ответов 12


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

Здравствуйте) Помогите пожалуйста решить несколько задач) Заранее огромнейшее спасибо)
1. В заданном массиве K(F;F) найдите сумму элементов в каждой строке. Сформулируйте одномерный массив , содержащий полученные суммы, расположенные по возрастанию (убыванию)
2. В массиве Q(x;e) найти количество всех чисел по модулю, меньших заданного Т



0



ZigmundFr

7 / 7 / 4

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

Сообщений: 32

08.03.2009, 02:41

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
Находим суммы и записываем в новый массив
var
   i,j:integer;
   A:array[1..n,1..m] of integer; //исходный массив
   B:array[1..n]of integer;//массив для предварительного результата
   С:array[1..n] of integer; массив для конечного результата
   Suma:integer;
   Min,n:integer;
for i:=1 to n do
begin
   Suma:=0;
   for j:=1 to m do
   begin
      Suma:=Suma+A[i,j];
   end;
end;
 Для создания необходимого результата (сортировка по возростанию)
for j:=1 to n do
begin
   for i:=1 to n do
   begin
      if B[i]<>0 then
      begin
         if B[i]<Min then 
         begin 
            Min:=B[i];
            n:=i; 
         end;
      end; 
   end;
   B[n]:=0;
   C[j]:=Min;
end;

Только я не проверил работу!



1



Puporev

Почетный модератор

64287 / 47586 / 32739

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

Сообщений: 115,182

08.03.2009, 10:10

3

Вот поправил первую чтоб работала.

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
39
40
41
42
43
44
{Находим суммы и записываем в новый массив}
uses crt;
var
   n,m,i,j,sum,x:integer;
   a:array[1..50,1..50] of integer; {исходный массив}
   b:array[1..50]of integer;{массив для предварительного результата}
begin
clrscr;
randomize;
write('Kolichestvo strok n=');
readln(n);
write('Kolichestvo stolbcov m=');
readln(m);
writeln('Matrica:');{создание матрицы}
for i:=1 to n do
  begin
    for j:=1 to m do
      begin
        a[i,j]:=random(20);
        write(a[i,j]:4);
      end;
    writeln;
  end;
for i:=1 to n do
  begin
    Sum:=0;
    for j:=1 to m do
    Sum:=Sum+a[i,j]; {считаем суммы в строках}
    b[i]:=sum;   {создаем из них массив}
  end;
{Для создания необходимого результата (сортировка по возрастанию)}
for i:=1 to n-1 do
for j:=i+1 to n do
if b[i]>b[j] then
   begin
     x:=b[i];
     b[i]:=b[j];
     b[j]:=x;
   end;
writeln('Otsortirovannyj massiv summ');
for i:=1 to n do
write(b[i],' ');
readln
end.



1



schdub

Эксперт С++

3069 / 1407 / 425

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

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

08.03.2009, 10:30

4

Вторая

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
uses crt;
 
const MAX = 10;
 
var  q          : array[1..max, 1..max] of Integer;
     c, x, e, T : integer;
     row, col   : integer;
 
begin
  ClrScr;
  
  Write('Введите количество строк    = '); ReadLn(x); if x>max then x := max;
  Write('Введите количество столбцов = '); ReadLn(e); if e>max then e := max;
  Write('Введите число Т = '); ReadLn(T);
 
  T:=abs(T);
 
  {ввод данных}
  for row:= 1 to x do
    for col:= 1 to e do
    begin
      Write('Введите Q[',row:2,';',col:2,'] = ');
      ReadLn(q[row, col]);
    end;
    
  {проверка условия}
  c:=0;
  for row:= 1 to x do
    for col:= 1 to e do
      if abs(q[row, col])<T then
        Inc(c);
 
  WriteLn('В массиве Q(',x,';',e,') количество всех чисел по модулю, меньших ',T,' = ',c);
  ReadKey;   
end.



0



0 / 0 / 0

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

Сообщений: 23

10.03.2009, 23:30

 [ТС]

5

Огромнейшее спасибо! Вы мне Очень помогли!



0



192 / 0 / 1

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

Сообщений: 20

23.04.2009, 20:19

6

помогите пл3 решить подобную первой задаче.
Найти сумму элементов строки, содержащей минимальный элемент.



0



Puporev

Почетный модератор

64287 / 47586 / 32739

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

Сообщений: 115,182

23.04.2009, 20:23

7

Находишь минимальный и строку где он находится.

Pascal
1
2
3
4
5
6
7
8
min:=a[1,1];imin:=1;
for i:=1 to n do
for j:=1 to m do
if a[i,j]<min then
   begin
     min:=a[i,j];
     imin:=i;
   end;

Сейчас в этой строке считаешь сумму.

Pascal
1
2
3
s:=0;
for j:=1 to m do
s:=s+a[imin,j];



0



192 / 0 / 1

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

Сообщений: 20

23.04.2009, 20:26

8

это же надо вставить перед тем как считаю сумму ???



0



Почетный модератор

64287 / 47586 / 32739

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

Сообщений: 115,182

23.04.2009, 20:38

9

Что вставить? Ты здесь как раз и считаешь сумму в строке.



0



192 / 0 / 1

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

Сообщений: 20

23.04.2009, 20:59

10

мне даже так собрать сложно (
пишет summ0

Код

uses crt;
var
 s,min,imin,n,m,i,j,sum,x:integer;
   a:array[1..50,1..50] of integer;
   begin
   clrscr;
   randomize;
   write('koli4estvo strok n=');
   readln(n);
   write('koli4estvo stolbov m=');
   readln(m);
   min:=a[1,1]; imin:=1;
   for i:=1 to n do
   for j:=1 to n do
   if a[i,j]<min then
   begin
   min:=a[i,j];
   imin:=i;
   end;
   begin
   s:=0;
   for j:=1 to m do
   s:=s+a[imin,j];
   writeln('summa',s);
   readln(s);
   end;
end.



0



Puporev

Почетный модератор

64287 / 47586 / 32739

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

Сообщений: 115,182

23.04.2009, 21:11

11

Я Вам просто поражаюсь, чем Вы думаете. Не создав матрицу, не введя никих значений в программу, Вы ищете какой-то минимум, какую-то сумму. Вообще полное безмыслие.

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
uses crt;
var
s,min,imin,n,m,i,j,sum,x:integer;
a:array[1..50,1..50] of integer;
begin
clrscr;
randomize;
write('koli4estvo strok n=');
readln(n);
write('koli4estvo stolbov m=');
readln(m);
writeln('Matrica:');
for i:=1 to n do
 begin
  for j:=1 to m do
    begin
     a[i,j]:=random(10);
     write(a[i,j]:3);
    end;
  writeln;
 end;
min:=a[1,1]; imin:=1;
for i:=1 to n do
for j:=1 to n do
if a[i,j]<min then
   begin
     min:=a[i,j];
     imin:=i;
   end;
writeln('Min=',min,'  stroka=',imin);
s:=0;
for j:=1 to m do
s:=s+a[imin,j];
writeln('summa',s);
readln
end.



1



192 / 0 / 1

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

Сообщений: 20

24.04.2009, 11:26

12

спасибо )) я просто только на днях начал изучать все это ))

Добавлено через 14 часов 10 минут 29 секунд
скажите еще пл3, если эту прогу делать в процедурном, то сколько процедур будет ???



0



Puporev

Почетный модератор

64287 / 47586 / 32739

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

Сообщений: 115,182

24.04.2009, 11:48

13

сколько процедур будет

Думаю 3х хватит.
1. Процедура ввод матрицы.
2. Процедура поиск строки с минимумом.
3. Процедура сумма в строке с минимумом.

Добавлено через 3 минуты 41 секунду

Pascal
1
2
3
4
type matr=array[1..50,1..50] of integer;
procedure Vvod(n,m:byte;var mt:matr);
procedure MinStr(n,m:byte;mt:matr; var imin:byte);
procedure Summ(imin,m:byte;mt:matr; var sum:integer);



1



Перейти к содержанию

Суммы строк и столбцов матрицы

Просмотров 10.7к. Обновлено 15 октября 2021

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

Поскольку двумерный массив обычно перебирается построчно, то сумму строк считать проще. Можно, заполняя строку матрицы и выводя ее элементы на экран, накапливать в переменной сумму элементов строки и выводить ее в конце строки.

Для сумм столбцов можно предусмотреть отдельный массив, в ячейках которого накапливать сумму каждого столбца. При построчном проходе по матрице, каждый новый элемент следует суммировать с соответствующим ему элементом массива сумм столбцов. Индекс элемента в строке матрицы будет совпадать с индексом элемента в массиве сумм.

Выводить суммы столбцов следует в отдельном цикле.

Pascal


const
M = 10;
N = 5;
var
a: array[1..N,1..M] of integer;
i, j: byte;
s: integer;
sc: array[1..M] of integer;
begin
for i:= 1 to M do
sc[i] := 0;

for i:=1 to N do begin
s := 0;
for j:=1 to M do begin
a[i,j] := random(10);
write(a[i,j]:6);
s := s + a[i,j];
sc[j] := sc[j] + a[i,j]
end;
writeln (' |', s);
end;
for i:= 1 to M do
write('--':6);
writeln;
for i:= 1 to M do
write(sc[i]:6);
writeln;

end.



Пример выполнения программы:

5 5 7 8 6 8 5 8 4 6 |62
6 3 4 2 8 0 9 2 3 4 |41
7 8 5 4 5 3 9 8 0 3 |52
0 6 0 3 8 9 7 1 8 8 |50
9 4 7 8 4 5 7 6 1 7 |58
-- -- -- -- -- -- -- -- -- --
27 26 23 25 31 25 37 25 16 28

Язык Си

сумма элементов каждого столбца матрицы c++


#include < stdio.h>
#define M 10
#define N 5
main() {
int a[N][M];
int sc[M];
int s, i, j;
srand(time(NULL));
for (i=0; i< M; i++) sc[i] = 0;
for (i=0; i< N; i++) {
s = 0;
for (j=0; j< M; j++) {
a[i][j] = rand() % 10;
printf("%5d", a[i][j]);
s += a[i][j];
sc[j] += a[i][j];
}
printf(" |%dn", s);
}
for (i=0; i< M; i++)
printf("%5s", "--");
printf("n");
for (i=0; i< M; i++)
printf("%5d", sc[i]);
printf("n");
}

Python

сумма элементов строки матрицы python (питон)


from random import random
M = 10
N = 5
a = []
for i in range(N):
b = []
for j in range(M):
b.append(int(random()*11))
print("%3d" % b[j], end='')
a.append(b)
print(' |', sum(b))

for i in range(M):
print(" --", end='')
print()

for i in range(M):
s = 0
for j in range(N):
s += a[j][i]
print("%3d" % s, end='')
print()



Пример(ы) выполнения программы на языке Python:

6 7 3 10 10 10 4 2 6 5 | 63
2 8 0 9 0 4 9 3 6 3 | 44
5 3 1 10 5 6 5 2 0 9 | 46
10 9 10 8 7 8 5 2 10 9 | 78
3 3 6 0 4 1 6 10 10 3 | 46
-- -- -- -- -- -- -- -- -- --
26 30 20 37 26 29 29 19 32 29
В Python используется немного иной алгоритм решения задачи. Сначала создается пустой список - будущая матрица. Далее в цикле в нее добавляются вложенные списки.

Суммы строк матрицы вычисляются с помощью функции sum(), которой передается текущий список-строка цикла.

Суммы столбцов вычисляются путем прохода по каждому столбу матрицы. Обратите внимание, что здесь наоборот: внешний цикл - проход по столбцам, внутренний - по строкам.

КуМир


алг суммы строк столбцов
нач
цел M = 10, N = 5
цел таб a[1:N,1:M], sc[1:M]
цел i, j, s
нц для i от 1 до M
sc[i] := 0
кц

нц для i от 1 до N
s := 0
нц для j от 1 до M
a[i,j] := int(rand(0,10))
вывод a[i,j], " "
s := s + a[i,j]
sc[j] := sc[j] + a[i,j]
кц
вывод " |", s, нс
кц

нц для i от 1 до M
вывод "---"
кц
вывод нс
нц для i от 1 до M
вывод sc[i], " "
кц
кон

Basic-256


M = 10
N = 5
dim a(N,M)
dim sc(M)
for i = 0 to N-1
s = 0
for j=0 to M-1
a[i,j] = int(rand*10)
print a[i,j] + " ";
s = s + a[i,j]
sc[j] = sc[j] + a[i,j]
next j
print " |" + s
next i

for i=0 to M-1
print "-- ";
next i
print
for i=0 to M-1
print sc[i] + " ";
next i
print

Дана квадратная
матрица NxN,
содержащая вещественные числа. Найти
сумму элементов первого столбца.

Program pr2;

CONST N=3;

TYPE MAS=array [1..N,1..N]
of real;

Var a: MAS;

i: 1..3;

j : 1..3;

s:real;

BEGIN

Writeln(‘Введите
элементы массива’);

For i:=1 to n do

For j:=1 to n do

Readln(a[i,j]);

{Вывод значений
массива}

For i:=1 to n do

begin

For j:=1 to n do

Write
(a[i,j]:5:1);

Writeln;

end;

s:=0; j=1;

For i:=1 to n do

s:=s+a[i,j];

Writeln(‘Сумма
элементов
первого
столбца
= ’,s:5:2);

end.

5.Вычисление суммы элементов всего двумерного массива.

……

S:=0;

for i:=1 to m do

for j:=0 to n do

S:=S+a[i,j];

………….

6. Задача поиска максимального (минимального) элемента и его индексов.

Ищем максимальный
элемент каждой строки :

For i:=0 to m do

begin

max:=a[i,1];

ind_L:=i;
{сохраняем номер строки}

ind_C:=1;
{заносим номер 1 — первый столбец}

for
j:=1 to n do

if a[i,j]>max then
begin

max:=a[i,j];

ind_C:=j
{сохраняем
номер
j-ого
столбца}

end;

writeln(‘max
строки
’,i,’=’,max)

end;

Ищем минимальный
элемент каждого столбца :

For
j:=0
to
n
do
{ перемещаемся по столбцу}

begin

min:=a[1,j];

ind_L:=1;
{сохраняем номер строки}

ind_C:=j;
{сохраняем номер столбца}

for
i:=1 to m do

if a[i,j]<min then
begin

min:=a[i,j];

ind_L:=i
{сохраняем
номер
j-ой
строки}

end;

writeln(‘min
‘,j,’ столбца’,min)

end;

7. Алгоритм поиска минимального элемента и его индексов для всего массива.

Min:=a[1,1];

ind_L:=1;

ind_C:=1;

for i:=1 to m do

for j:=1 to n do

if a[i,j]<min then
begin

min:=a[i,j];
ind_L:=i; ind_C:=j;

end;

8. Квадратные матрицы.

Type mas4x4=array[1..4,1..4]
of integer;

var a: mas4x4;

a11

a12

a13

a14

a21

a22

a23

a24

a31

a32

a33

a34

a41

a42

a43

a44

Главная диагональ —

элементы a11,
a22,
a33,
a44
(индексы элементов, расположенных на
главной диагонали (i=j)

Побочная диагональ
— элементы
a41,
a32,
a23,
a14
(сумма индексов элементов на 1 больше
размерности строки (или столбца), т.е.
i+j=4=1
или i+j=n+1.
На рисунке главная диагональ закрашена
сплошным серым цветом, побочная — черным.

a12

a13

a14

a23

a24

a34

Элементы,
расположенные над главной диагональю,
Для индексов элементов, расположенных
над главной диагональю выполняется
отношение
i<j;

a21

a31

a32

a41

a42

a43

Элементы,
расположенные под главной диагональю,
Для индексов элементов, расположенных
под главной диагональю выполняется
отношение
i>j;

Примеры :

1) Найти
сумму элементов главной диагонали:

S:=0;

for i:=1 to n do

S:=S+a[i,i];

2) Найти
минимальный элемент побочной диагонали:

min:=a[1,n];

for i:=1 to n do

if a[i,n+1-i]<min then
min:=a[i,n+1-i];

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

На занятии будет рассмотрен двумерный массив в 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.

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

    проверь себя

    Понравилась статья? Поделить с друзьями:

    Не пропустите также:

  • Как в инстаграмме найти аккаунт контакта
  • Как найти радиус окружности с помощью диаметра
  • Прямое плечо у собаки как исправить
  • Как составить меню при заболевании поджелудочной железы
  • Ламинат ходит как исправить

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии