Darina_Ferliy
1

Сумма элементов матрицы

18.05.2010, 20:30. Показов 8624. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Надо написать программу в ПАСКАЛЕ!!!
Вычислить сумму всех элементов двумерного массива X(10,10) (элемент массива Xij,где i=1,2,..10; j=1,2,..10).
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2010, 20:30
Ответы с готовыми решениями:

Сумма элементов матрицы
в общем нужно скоро сдавать лабу, я всё никак не могу решить задачу.. задана квадратная матрица...

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

Сумма диагональных элементов матрицы
Условие: Задана квадратная матрица A(8, 8). Найти сумму диагональных элементов матрицы (по главной...

Сумма элементов столбца матрицы
Задана матрица (3*3). Найти сумму любого столбца (номер ввести с клавиатуры). Вычисление суммы...

14
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
18.05.2010, 20:32 2
Pascal
1
2
3
4
sum := 0;
for i := 1 to N do
  for j := 1 to M do
    Inc(sum, a[i, j]);
0
8 / 8 / 2
Регистрация: 03.03.2010
Сообщений: 90
18.05.2010, 23:11 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
Program Matr;
 Uses crt;
 Const n=10;m=10;
 Type
  Mas=array[1..n,1..m] of real;
 Var
  A:Mas;
  i,j:integer;
  S:real;
 
 Procedure Vvod (Var A:mas);
 Begin
  For I:=1 to n do
   For j:=1 to m do
    A[i,j]:=random;
 End;
 
 Procedure sum (Var A:mas);
 Begin
  S:=0;
   For i:=1 to n do
    for j:=1 to m do
      S:=S+A[i,j];
       Writeln ('Сумма всех элементов матрицы = ',S:2:1);
  End;
 
  Begin
   ClrScr;
   vvod (a);
   Sum (a);
   Readln
  End.
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
18.05.2010, 23:14 4
good91, по-моему тебе надо бы почитать о параметрах процедур/функций, потому как везде вставлять var некорректно.
0
8 / 8 / 2
Регистрация: 03.03.2010
Сообщений: 90
18.05.2010, 23:18 5
Цитата Сообщение от Inadequate Посмотреть сообщение
потому как везде вставлять var некорректно.
Как учили, так и вставляю... По-моему это не на что не влияет .
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
18.05.2010, 23:25 6
good91, влияет на то, как на тебя посмотрят со стороны. Если тебя действительно так учат, то хреновые у тебя преподы, тогда прочти самостоятельно
Цитата Сообщение от Справка
Параметры, указываемые при описании подпрограммы, называются формальными. Параметры, указываемые при вызове подпрограммы, называются фактическими.

Если формальный параметр описан со служебным словом var, то его называют параметром-переменной и говорят, что он передается по ссылке. Если же параметр описан без слова var, то его называют параметром-значением и говорят, что он передается по значению.

Если параметр передается по значению, то при вызове подпрограммы значения фактических параметров присваиваются соответствующим формальным параметрам. Например, пусть имеется следующее описание процедуры:

Pascal
1
2
3
4
procedure PrintSquare(i: integer);
begin
  writeln(i*i);
end;
Тогда при вызове PrintSquare(5*a-b) значение 5*a-b будет вычислено и присвоено переменной i, после чего выполнится тело процедуры.
Если параметр передается по ссылке, то при вызове подпрограммы фактический параметр заменяет собой в теле процедуры соответствующий ему формальный параметр. В итоге любые изменения формального параметра-переменной внутри процедуры приводят к соответствующим изменениям фактического параметра. Например, если описана процедура

Pascal
1
2
3
4
procedure Mult2(var a: integer);
begin
  a:=a*2;
end;
то после вызова Mult(d) значение d увеличится в 2 раза.
1
8 / 8 / 2
Регистрация: 03.03.2010
Сообщений: 90
18.05.2010, 23:34 7
Цитата Сообщение от Inadequate Посмотреть сообщение
то хреновые у тебя преподы
Да уж верно... Теперь всё понятно. Спасибо.

Добавлено через 2 минуты
Т. е. , когда я задал сразу:

Цитата Сообщение от good91 Посмотреть сообщение
Var
Pascal
1
2
3
A:Mas;
 i,j:integer;
 S:real;
Потом в процедуре можно не задавать?
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
18.05.2010, 23:37 8
Нет, если в процедуре/функции собираешься изменять массив, то ставишь var, а если не собираешься, то не ставишь. Т.е в случае с процедурой ввода использование var корректно, а в случае подсчета суммы нет.
1
8 / 8 / 2
Регистрация: 03.03.2010
Сообщений: 90
18.05.2010, 23:40 9
Цитата Сообщение от Inadequate Посмотреть сообщение
Нет, если в процедуре собираешься изменять массив, то ставишь var, а если не собираешься, то не ставишь.
Ясненько...Т. е. в этом случае можно не ставить, так как я же его не изменяю, а нахожу сумму элементов матрицы
1
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
18.05.2010, 23:41 10
good91, да, именно так
0
11 / 14 / 1
Регистрация: 13.05.2010
Сообщений: 94
18.05.2010, 23:44 11
Цитата Сообщение от good91 Посмотреть сообщение
По-моему так :

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
Program Matr;
 Uses crt;
 Const n=10;m=10;
 Type
  Mas=array[1..n,1..m] of real;
 Var
  A:Mas;
  i,j:integer;
  S:real;
 
 Procedure Vvod (Var A:mas);
 Begin
  For I:=1 to n do
   For j:=1 to m do
    A[i,j]:=random;
 End;
 
 Procedure sum (Var A:mas);
 Begin
  S:=0;
   For i:=1 to n do
    for j:=1 to m do
      S:=S+A[i,j];
       Writeln ('Сумма всех элементов матрицы = ',S:2:1);
  End;
 
  Begin
   ClrScr;
   vvod (a);
   Sum (a);
   Readln
  End.

солидарен. проще способа я невижу.
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
18.05.2010, 23:45 12
CeKaC, с чем ты солидарен ? Этот вариант далеко не самый простой и далеко не самый полный. Нет вывода матрицы, переменные i,j,S описаны вне процедур (что делать не рекомендуется) да и процедуры тут не нужны. А ты солидарен...
0
8 / 8 / 2
Регистрация: 03.03.2010
Сообщений: 90
18.05.2010, 23:51 13
Вот окончательная прога, что бы было солидарно и корректно

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
Program Matr;
 Uses crt;
 Const n=10;m=10;
 Type
  Mas=array[1..n,1..m] of real;
 Var
  A:Mas;
  i,j:integer;
  S:real;
 
 Procedure Vvod;
 Begin
  For I:=1 to n do
   For j:=1 to m do
    A[i,j]:=random;
 End;
 
 Procedure sum;
 Begin
  S:=0;
   For i:=1 to n do
    for j:=1 to m do
      S:=S+A[i,j];
       Writeln ('Сумма всех элементов матрицы = ',S:2:1);
  End;
 
  Begin
   ClrScr;
   vvod;
   Sum;
   Readln
  End.
CeKaC, нравятся сложные способы, пожалуйста решай сложным способом... Главное, что бы правильно было
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
19.05.2010, 00:05 14
А зачем ты убрал параметры вообще ? Да и потом настоятельно рекомендуется заносить вспомогательные переменные в тело процедуры/функции. Твой код должен выглядеть в по-хорошему так
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
45
46
47
48
49
50
51
52
53
program Matr;
uses
  Crt;
 
const
  N = 3;
  M = 4;
 
type
  MyArr = array [1..N, 1..M] of integer;
 
var
  a: MyArr;
procedure Writing(var a: MyArr);
var
  i,j: integer;
begin
  for i := 1 to N do
    for j := 1 to N do
      a[i, j] := Random(8) - 4;
end;
 
procedure Print(a: MyArr);
var
  i,j: integer;
begin
  for i := 1 to N do
  begin
    for j := 1 to M do
      Write(a[i, j]);
    WriteLn;
  end;
end;
 
procedure Sum;
var
  i,j,s: integer;
begin
  s := 0;
  for i := 1 to N do
    for j := 1 to M do
      Inc(s, a[i, j]);
  Writeln ('Result:  ', S:2:1);
end;
 
begin
  ClrScr;
  Randomize;
  Writing(a);
  Print(a);
  Sum;
  ReadLn;
end.
А вообще как я и писАл тут процедуры не нужны, достаточно вот этого
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
uses
  Crt;
 
const
 N = 3;
 M = 3;
 
var
  a: array [1..N, 1..M] of integer;
  i,j,sum: integer;
 
begin
  ClrScr;
  Randomize;
  for i := 1 to N do
  begin
    for j := 1 to M do
    begin
      a[i, j] := Random(8) - 4;
      Inc(sum, a[i, j]);
      Write(a[i, j]:2, ' ');
    end;
    WriteLn;
  end;
  WriteLn('Result: ', sum);
  ReadLn;
end.
2
11 / 14 / 1
Регистрация: 13.05.2010
Сообщений: 94
19.05.2010, 00:09 15
Цитата Сообщение от Inadequate Посмотреть сообщение
CeKaC, с чем ты солидарен ? Этот вариант далеко не самый простой и далеко не самый полный. Нет вывода матрицы, переменные i,j,S описаны вне процедур (что делать не рекомендуется) да и процедуры тут не нужны. А ты солидарен...

думаю, что человеку, который просит помощи в такой программе особо неважно КАК оно написано.
и согласен я не с кодом, а с алгоритмом в том плане, что он поозрачен и легко доступен для понимания.
а то что глабальные переменные лучше не использовать, так это не дают на начальных этапах обучения программированию. лично мне это рассказали когда мне закончили преподавать ОСНОВЫ программирования (основной целью является дать понять принципы программирования) и начали давать всеми любимый Си.
использование var у автора проги - это недоконца понимание продцедур и функций и передачи параметров. этому учат.

процедуры и функции использовать никто же не запрещает. это всего лишь стиль и почерк программиста. и в конце-то концов можно все засунуть в отдельные подключаемые можули и непариться особо)) главное же пашет )))
1
19.05.2010, 00:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2010, 00:09
Помогаю со студенческими работами здесь

Произведение и сумма элементов матрицы
Найти произведение элементов матрицы А(5,5) без остатка делящихся на 3, и сумму чётных элементов...

Сумма положительных элементов матрицы
Вычислить и запомнить суммы положительных элементов каждой строки матрицы A(10,20),B(15,10).

Сумма элементов столбцов матрицы.
Найти сумму элементов тех СТОЛБЦОВ матрицы А размерностью N*M, на главной диагонали которых стоят...

сумма элементов в нечетных строках матрицы
Найти сумму элементов,стоящих в нечетных строках матрицы размера M на N.Создание и вывод матриц...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru