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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2009, 13:51   #1
pancho
Пользователь
 
Аватар для pancho
 
Регистрация: 25.01.2009
Сообщений: 18
Смущение проблемы с двумерным массивом

здраствуйте снова..у меня опять проблема..никак не могу понять как считать строки в двумерном массиве..вот код
PHP код:
function MaxSum(b:TMas;m,n:integer):integer;
Var 
Sum,MaxS,h,i,j,Max,Maxi,Maxj:integer;
begin
Sum
:=0;
i:=1;//начинаем с первого столбца
for j:=1 to m do begin
   Sum
:=Sum+b[i,j];//суммируем элементы..допустим b[1,1]:=1+0;
end;
  
inc(i);//смотрим следущий столбец
MaxSum:=Sum;
end
мне надо чтобы он всю строчку просчитал,перешёл на другую строку,её посчитал..в такой форме он мне считает только первую строку..
проблема видно в том куда поставить inc(i) а вот куда его ставить я так и не пойму...помогите пожалуйста..ступор с этим.заранее спасибо)
учусь по ходу написания программы..кхх)
pancho вне форума Ответить с цитированием
Старый 26.01.2009, 14:05   #2
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Код:
repeat
for j:=1 to m do begin 
   Sum:=Sum+b[i,j];//суммируем элементы..допустим b[1,1]:=1+0; 
end; 
  inc(i);
until i>n;
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 26.01.2009, 14:10   #3
Bayazet
Форумчанин
 
Регистрация: 08.12.2008
Сообщений: 156
По умолчанию

я бы сказал, не мудрено, что он считает только первую, Вы ведь не используете второй цикл, чтобы перебирать строки.

Код:
For i := 1 to length(Mas) do
  For j := 1 to length(Mas[i]) do
    sum := sum + Mas[i,j];
и вообще, компьютерный счет начинается с нуля
Bayazet вне форума Ответить с цитированием
Старый 26.01.2009, 14:14   #4
pancho
Пользователь
 
Аватар для pancho
 
Регистрация: 25.01.2009
Сообщений: 18
По умолчанию

не люблю repeat)
лучше с while
PHP код:
While i<do begin
showmessage
(IntToStr(i));
for 
j:=1 to m do begin
   Sum
:=Sum+b[i,j];
end;
  
inc(i);
end;
MaxSum:=Sum;
end
и тем более в цикле с вайл можно прибавлять счётчик?
по моему там он даже не смотрит..то есть пока выполняется условие считать сумму..
вообщем так оно не работает..он туда даже не заходит.
учусь по ходу написания программы..кхх)
pancho вне форума Ответить с цитированием
Старый 26.01.2009, 14:18   #5
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Ты бы n присвоил вначале какое нибудь значение и все будет ок
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 26.01.2009, 14:19   #6
pancho
Пользователь
 
Аватар для pancho
 
Регистрация: 25.01.2009
Сообщений: 18
По умолчанию

Bayazet насчёт нуля я бы поспорил)так как мы должны же взять чтото за начало а начало соответственно Sum:=0
в итоге работает вот так
PHP код:
Sum:=0;
For 
:= 1 to length(b) do
  For 
:= 1 to length(b[i]) do
    
Sum := Sum b[i,j];
MaxSum:=Sum;
end
только программа считает сумму всех элементов,а мне нужно чтобы он выводил в мемо сумму каждой строки с помощью memo1.lines.add(MaxSum(B,m,n))
учусь по ходу написания программы..кхх)
pancho вне форума Ответить с цитированием
Старый 26.01.2009, 14:20   #7
pancho
Пользователь
 
Аватар для pancho
 
Регистрация: 25.01.2009
Сообщений: 18
По умолчанию

maladoy у меня n-это n:=StrToInt(Edit1.text) и n я ему даю
учусь по ходу написания программы..кхх)
pancho вне форума Ответить с цитированием
Старый 26.01.2009, 14:46   #8
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Цитата:
Сообщение от pancho Посмотреть сообщение
вообщем так оно не работает..он туда даже не заходит.
раз не заходит значит не так даешь))
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 26.01.2009, 19:07   #9
pancho
Пользователь
 
Аватар для pancho
 
Регистрация: 25.01.2009
Сообщений: 18
По умолчанию

всё)проблема решена)после отдыха сел и сделал)конечно полазял по сайтам)всем спасибо)
если кому нада вот код который получился:
PHP код:
function SumStrok(b:TMas;m,n:integer):integer;
Var 
i,j,sum,summax,isummax:integer;
begin
isummax
:=1;
summax:=0;
    for 
j:=1 to n do
      
begin
        sum
:=0;
        for 
i:=1 to m do begin
        sum
:=sum+b[i,j];
        if 
sum>summax then
          begin
           summax
:=sum;
           
isummax:=j;
          
end;
          
end;
       
end;
      
SumStrok:=isummax;
end
PHP код:
procedure TForm1.MaxStrokaClick(SenderTObject);
Var 
m,n:integer;
begin
   m
:=StrToInt(Edit1.text);
   
n:=StrToInt(Edit2.text);
   
Edit5.Text:=IntToStr(SumStrok(B,m,n))+'  '+'строка';
end
всем ещё раз большое спасибо)
учусь по ходу написания программы..кхх)
pancho вне форума Ответить с цитированием
Старый 28.01.2009, 13:29   #10
Bayazet
Форумчанин
 
Регистрация: 08.12.2008
Сообщений: 156
По умолчанию

pancho, обязательно скопирую этот код и повешу в рамочку над кроватью, буду с утра просытаться и негодовать от величия великих программистов
Bayazet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с двумерным массивом. svobodys Паскаль, Turbo Pascal, PascalABC.NET 0 14.12.2008 18:09
Задача в Delphi с двумерным массивом SirLionheART Помощь студентам 2 14.12.2008 13:11
Задача с двумерным массивом. svobodys Помощь студентам 3 13.12.2008 15:44
задача с двумерным массивом Ras Помощь студентам 1 22.12.2007 19:58