• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль, подпрограммы

hamchuk250894

Новые
Регистрация
9 Дек 2012
Сообщения
45
Реакции
0
Баллы
0
Паскаль, подпрограммы

В коде есть ошибка, помогите пожалуйста найти её и исправить. Задание такое: 1.Создать функцию, определяющую в квадратном целочисленном массиве matrixnn сумму элементов, находящихся выше и ниже главной и побочной диагоналей (“песочные часы”). Элементы диагоналей в сумму не включать.
3. Код программы:

Program Variant_8;
uses crt;
type mas=array[1..20, 1..20] of integer;

var n, i, j : integer;
a:mas;

function sum(a:mas): integer;
var s: integer;
begin
s := 0;
for i := 1 to n do
for j := 1 to n do
if (i <> j) and (j <> n - i + 1) then
s := s + a[i, j];
sum := s;
end;

begin
write('n=');
readln(n);
writeln(‘Enter ',n*n,' of elements of a matrix:');
for i := 1 to n do
for j := 1 to n do
begin
write('a[',i,',',j,']=');
read(a[i,j]);
end;
writeLn('Initial matrix’);
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:4);
writeLn;
end;

writeln(' The sum ', sum(a));
end.
 
В коде есть ошибка, помогите пожалуйста найти её и исправить.
Отладил:
Код:
type
 mas=array[1..20, 1..20] of integer;

var
 n,i,j:integer;
 a:mas;

function sum(a:mas):integer;
var s,i,j,i1: integer;
begin
 s:=0;
 for i:=1 to (n div 2) do
  for j:=i+1 to n-i do
   s:=s+a[i,j];
 if (n mod 2)=1 then
  i1:=(n div 2)+2
 else
  i1:=(n div 2)+1;
 for i:=i1 to n do
  for j:=n-i+2 to i-1 do
   s:=s+a[i,j];
 sum:=s;
end;

Begin
 write('n=');
 readln(n);
 for i:=1 to n do
  for j:=1 to n do
   begin
    write('a[',i,',',j,']=');
    readln(a[i,j]);
   end;
 writeln;
 writeln('Initial matrix:');
 for i:=1 to n do
  begin
   for j:=1 to n do
    write(a[i,j]:4);
   writeln;
  end;
 writeln;
 writeln(' The sum= ', sum(a));
 readln;
End.
 
Назад
Сверху