Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2012, 19:46   #1
Nerotim
Пользователь
 
Регистрация: 28.10.2012
Сообщений: 16
Вопрос Delphi 7.0 Сумма эл-тов матрицы

Задача
Составить функцию вычисляющую сумму тех эл-тов матрицы "a", сумма номеров строк и столбцов, которой равна K, заданному в основном массиве.

Происходит зацикливание
Код:
 program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils, math;
 type A=array [1..20,1..10] of integer;


  Function sum(a:A; k:integer; var ni,nj: integer):integer;
  var i,j,sum:integer;

begin

        if i+j=k then
        sum:=sum+a[i,j];


end;
//=================================

     Procedure vvod (var a:A; ni,nj:integer);
     var i,j,k:integer;
     Begin for i := 1 to ni do
             begin
               for j := 1 to nj do
                 read (a[i,j]);
            readln;

             end;
             writeln('vvedite K');
             readln(k);
     End;


     //=============================
     Procedure vivod( a:A; sum,ni,nj:integer   );
     var i,j:integer;
     Begin
       writeln('matrica');
         for i := 1 to ni do
             begin
               for j := 1 to nj do
               writeln (a[i,j]);
               writeln;
             end;
             writeln('summa=', sum);
             readln;
     End;
     //-------------------------------------
     var a1:A; m,n,S,I: integer;
     begin
     writeln ('razmer');
     readln(m,n);
     writeln  ('vvedite matr');
     vvod(a1,m,n);
     S:=sum(a1,m,n,S);
     vivod (a1, m,n,S);
     readln;
     readln;








  try
    { TODO -oUser -cConsole Main : Insert code here }
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Nerotim вне форума Ответить с цитированием
Старый 30.10.2012, 20:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, ЗАЧЕМ объявлять переменную с таким же именем, как и имя функции?!! (я вообще потрясён, что Delphi это позволяет!)

во-вторых, измените код так:
Код:
 Function sum(a:A; k:integer; var ni,nj: integer):integer;
  var i,j, sumLoc :integer;

begin
     sumLoc := 0;
     for i := 1 to ni do
         for j := 1 to nj do
            if (i+j)=k then
                sumLoc :=  sumLoc + a[i,j];
     sum := sumLoc; {или, что тоже самое, можно 
                                написать и так:
                                Result := SumLoc;}
end;

   Procedure vvod (var a:A; var K : integer; ni,nj:integer);
     var i,j:integer;
     Begin for i := 1 to ni do
             begin
               for j := 1 to nj do
                 read (a[i,j]);
            readln;

             end;
             writeln('vvedite K');
             readln(k);
     End;




Procedure vivod( a:A; sum,ni,nj:integer   ); - вроде нормально. только обратите внимание на порядок параметров!

....
     var a1:A; m,n,S, KK: integer;
     begin
     writeln ('razmer');
     readln(m,n);
     writeln  ('vvedite matr');
     vvod(a1, KK, m,n);
     S:=sum(a1, KK, m,n);
     vivod (a1, S, m,n);
     readln;
     readln;
end.
в данном случае ваш try .. except вообще ни при делах! Или используйте его корректно или выбросите из кода напрочь!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.10.2012, 21:39   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я вообще потрясён, что Delphi это позволяет!
В данном случае позволяет, потому что для результата используется директива Result (сам же сказал )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сумма элементов матрицы Paulsan Общие вопросы C/C++ 7 07.01.2012 10:49
Открытие док-тов, выбранных в ListBox, в OLEСontainer (Delphi) spirit_102 Помощь студентам 0 16.12.2011 13:17
Сумма эл-тов кратных 3м Сristina Паскаль, Turbo Pascal, PascalABC.NET 5 02.03.2011 20:52
Сумма положительных эл-тов в матрице Student_1 Паскаль, Turbo Pascal, PascalABC.NET 3 25.12.2010 20:03
Сумма четных элементов матрицы. Произведение элементов 3-го столбца. Минимальный элемент матрицы. renovare Помощь студентам 2 03.07.2009 21:13