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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2016, 17:00   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код ищет один непрерывный участок с максимальной суммой по всем строкам матрицы. А не для каждой строки. И в цикле ни чего не нужно выдавать. На этот комент посмотри
Код:
//s1 - max сумма, i1,j1 - координаты начала
Если нужно для каждой строки, то там переделать чуть-чуть. Сам придумай
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 12.06.2016 в 17:02.
Аватар вне форума Ответить с цитированием
Старый 13.06.2016, 11:35   #12
fool.rzn
Новичок
Джуниор
 
Регистрация: 12.06.2016
Сообщений: 10
По умолчанию

Прошу прощения, но все равно никак не могу я корректно вывести данные, не подскажешь как сделать чтобы он в каждой строчке искал и вывести по каждой строчке что то вроде этого:

Код:
(Uchastok s ',i,' do ',i+9,'- imeet maximalnuyu summu elementov= ',s);
по каждой строчке

Правда не пойму как сделать. Буду очень благодарен за помощь((((

Последний раз редактировалось fool.rzn; 13.06.2016 в 12:00.
fool.rzn вне форума Ответить с цитированием
Старый 13.06.2016, 11:48   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
  const n = 20;
  var m: array [1..n,1..n] of Integer;
  ...
  s1:=-1;
  for i:=1 to n do begin
    s:=0;
    s2:=-1;  // добавил
    for j:=1 to n do begin
      Inc(s,m[i,j]);
      if j>=10 then begin
        if s>s1 then begin s1:=s; i1:=i; j1:=j-9; end;
        if s>s2 then begin s2:=s; j2:=j-9; end;    // добавил
        Dec(s,m[i,j-9]);
      end;
    end;
    //здесь выдавай по каждой строчке: s2 - max сумма в строчке, i,j2 - координаты начала
  end;
  //s1 - max сумма по всем строчкам, i1,j1 - координаты начала
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.06.2016, 12:54   #14
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Аватар,
почему
Код:
s1 := -1 
s2 := -1
а не
Код:
s1 := m[1,1]
s2 := m[i,1]
?
Не могут в строке все елементы < -1?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 13.06.2016, 12:57   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

У ТС рандомно не отрицательными матрицы заполняются. Почему бы и не -1? Если бы там были и отрицательные, то так нельзя, так же как и m[1,1]
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.06.2016, 13:04   #16
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
У ТС рандомно не отрицательными матрицы заполняются. Почему бы и не -1?
Пардон, не смотрел код ТС

Цитата:
Сообщение от Аватар Посмотреть сообщение
Если бы там были и отрицательные, то так нельзя, так же как и m[1,1]
А почему не m[1,1]? MIN_INT?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 13.06.2016, 14:00   #17
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
А почему не m[1,1]?
с отрицательными m[1,1] может быть больше максимума
Цитата:
MIN_INT?
Это можно и задать стартовую позицию 0,0
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.06.2016, 19:36   #18
fool.rzn
Новичок
Джуниор
 
Регистрация: 12.06.2016
Сообщений: 10
По умолчанию

Сейчас чувствую себя последним нубом, но добавив все у меня выходит лажа:

Код:
program a1;
uses crt;
var
 a,b,sum,mas: array [1..20,1..20] of integer;
 m,n,i,j,s1,s2,s,i1,j1,j2: integer;
begin
 clrscr;
 write('Vvedite kolichestvo strok matric: ');
 readln(n);
 If (n>0) and (n<20) then
 begin
  write('Vvedite kolichestvo stolbcov matric: ');
 readln(m);
  If (m>0) and (m<20) then
  begin
   begin
   randomize;
   writeln;
   writeln ('matrica a:');
   for i:=1 to n do
    begin
     writeln;
     for j:=1 to m do
      begin
       a[i,j]:=random(10);
       write(a[i,j],' ');
      end;
    end;
   writeln;
   writeln;
   writeln('matrica b:');
   for i:=1 to n do
    begin
     writeln;
     for j:=1 to m do
      begin
       b[i,j]:=random(10);
       write(b[i,j],' ');
      end;
    end;
    end;

   begin
    writeln;
    writeln;
    writeln('Summa: ');
    for i:=1 to n do
     begin
     writeln;
     for j:=1 to m do
      begin
       sum[i,j]:=a[i,j]+b[i,j];
       write(sum[i,j],' ');
      end;
    end;
    end;
    end
     else
 Writeln ('Vvedite znachenie ot 1 do 20');
    end
 else
 Writeln (' Vvedite znachenie ot 1 do 20');
 Writeln;
 Writeln;
 Writeln ('Neprerivniy uchastok is 10 elementov:');
 Writeln;
  s1:=-1;
  s:=0;
  s2:=-1;
  for i:=1 to n do begin

    for j:=1 to m do begin
      Inc(s,mas[i,j]);
      if i>=10 then begin
        if s>s1 then begin s1:=s; i1:=i; j1:=j-9; end;
        if s>s2 then begin s2:=s; j2:=j-9; end;
        Dec(s,mas[i,j-9]);
      end;

    end;
     Writeln ('Uchastok s ',i,' do ',j2,' - imeet maximalnuyu summe elementov= ',s2);
  end;
   Writeln;
   Writeln ('Uchastok s ',i,' do ',j1,' - imeet maximalnuyu summu elementov po vsey matrice= ',s1);
 readkey;
end.
А в результат вылетает вот так:
fool.rzn вне форума Ответить с цитированием
Старый 13.06.2016, 20:00   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Внимательно сравни каждую строку своего кода с кодом из #13. Как минимум 3 ошибки есть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.06.2016, 20:34   #20
fool.rzn
Новичок
Джуниор
 
Регистрация: 12.06.2016
Сообщений: 10
По умолчанию

У меня же вроде все тоже самое, только значения s и s2 присвоил перед циклом, переменная m вместо n, а так же название массива другое, остальное же все так
fool.rzn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти числа X и Y, сумма которых равно A, а сумма квадратов равна B. (на C++) Алина92 Помощь студентам 12 04.10.2021 10:14
Дана матрица (4;6). Определить и вывести номер столбца, сумма элементов которого максимальна stdlife Паскаль, Turbo Pascal, PascalABC.NET 4 22.11.2012 00:01
Разработка программы поиска двух соседних элементов массива, сумма которых максимальна Esterlen Помощь студентам 13 27.05.2012 18:58
Найти номер первой пары соседних элементов с разными знаками, сумма которых меньше заданного числа sofiya Помощь студентам 4 20.02.2011 23:05