1

Тема: Програма має використовувати підпрограму

Зробив завдання,але викладач сказав що трохи не так:в шапці його слова.
Не підкажете як то має бути?

program Ind;

{$APPTYPE CONSOLE}
type matr = array[1..15, 1..15] of integer;
 
function Sum(a: matr; n: integer): integer;
var i, s: integer;
begin
  s := 0;
  for i := 1 to n do
    s := s + a[i, i];
  Sum := s;
end;
 
  var
  a: array[1..15,1..15] of integer;
  n,i,j,s,v: integer;
begin
  randomize;
  repeat
    write('Write the size of the matrix n (n <= 15): '); readln(n);
  until n in [1..15];
  writeln('matrix:');
  s:=0;
  for i:=1 to n do
    for j:=1 to n do
    begin
        write('a[',i,',',j,']=');
  readln(a[i,j]);
      if i=j then s:=s+a[i,j];
      end;
writeln('matrix:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
  writeln('summ = ',s);
  readln;
end.

2

Re: Програма має використовувати підпрограму

А в чому проблема зробити це? Я от не вірю, що якщо ви написали цей код, то не знаєте, як це зробити. Якщо це не ваш код - то ви не програміст і не збираєтеся ним ставати, то що ви робите на цьому форумі?

3

Re: Програма має використовувати підпрограму

Отут почитайте: http://pascal.org.ua/procedures-functions

4

Re: Програма має використовувати підпрограму

Претензія викладача, очевидно, в тому, що функція Sum ніде в тілі програми не викликається — сума натомість обчислюється в тілі програми безпосередньо під час вводу (змінна s).

5

Re: Програма має використовувати підпрограму

ох, наскільки я згадую паскаль, то підпрограми там ідуть через процедуру

6

Re: Програма має використовувати підпрограму

reverse2500 написав:

ох, наскільки я згадую паскаль, то підпрограми там ідуть через процедуру

Залежить від термінології конкретного викладача. В одних «підпрограма» — це збірний термін для процедур і функцій, в інших — лише процедура.

7

Re: Програма має використовувати підпрограму

Підпрограма - subroutine, процедура - procedure, функція - function.
Ну і очевидно, що тут мова йде про функцію.

Подякували: reverse25001

8 Востаннє редагувалося darsteba (28.05.2018 22:01:56)

Re: Програма має використовувати підпрограму

Ось так .

program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
type matr = array[1..15, 1..15] of integer;
 
function Sum(a: matr; n: integer): integer;
var i, s: integer;
begin
s := 0;
for i := 1 to n do
s := s + a[i, i];
Sum := s;
end;
 
var  a:matr;
     n,i,j: integer;
begin
repeat
write('Write the size of the matrix n (n <= 15): ');
readln(n);
until n in [1..15];
for i:=1 to n do
for j:=1 to n do
 begin
  write('a[',i,',',j,']=');
  readln(a[i,j]);
 end;
writeln('matrix:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
writeln('summ = ',sum(a,n));
readln;
end.

9

Re: Програма має використовувати підпрограму

koala написав:

Підпрограма - subroutine, процедура - procedure, функція - function.
Ну і очевидно, що тут мова йде про функцію.

Те, що на паскалі зветься procedure, на фортрані зветься subroutine, а на сішці це взагалі функція (навіть якщо void). Якою мовою викладач думає, такіу термінологію й використовує.

10

Re: Програма має використовувати підпрограму

koala написав:

А в чому проблема зробити це? Я от не вірю, що якщо ви написали цей код, то не знаєте, як це зробити. Якщо це не ваш код - то ви не програміст і не збираєтеся ним ставати, то що ви робите на цьому форумі?

Отак використовує?

program ind_;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
type matr = array[1..15, 1..15] of integer;
 
function Sum(a: matr; n: integer): integer;
var i, s: integer;
begin
s := 0;
for i := 1 to n do
s := s + a[i, i];
Sum := s;
end;
 
var  a:matr;
     n,i,j: integer;
begin
repeat
write('Write the size of the matrix n (n <= 15): ');
readln(n);
until n in [1..15];
for i:=1 to n do
for j:=1 to n do
 begin
  write('a[',i,',',j,']=');
  readln(a[i,j]);
 end;
writeln('matrix:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
writeln('summ = ',sum(a,n));
readln;
end.