Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 13.12.2012, 12:25   #1 (permalink)
hamchuk250894
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль, подпрограммы

В коде есть ошибка, помогите пожалуйста найти её и исправить. Задание такое: 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.
hamchuk250894 вне форума   Ответить с цитированием

Старый 13.12.2012, 12:25
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Наверняка вы сможете найти решение своей проблемы в похожих обсуждениях

Подпрограммы Turbo Pascal
Подпрограммы

Старый 13.12.2012, 13:08   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,429
Сказал(а) спасибо: 297
Поблагодарили 538 раз(а) в 181 сообщениях
Репутация: 95593
По умолчанию

Цитата:
Сообщение от hamchuk250894 Посмотреть сообщение
В коде есть ошибка, помогите пожалуйста найти её и исправить.
Отладил:
Код:
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.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 13.12.2012, 14:00   #3 (permalink)
hamchuk250894
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большое Владимир)
hamchuk250894 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 17:56.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.