IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Двумерные массивы, Поиска строки с макс суммой
Анька
сообщение 7.07.2006 17:25
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Здравствуйте. Помогите решить такую задачу: дана прямоугольная матрица матрица. Найти строку с найбольшей и наименьшей суммой элементов. вывести на печать найденные строки и суммы их элементов. По форуму я искала, но не нашла. Помогите уж smile.gif


Сообщение отредактировано: Анька - 7.07.2006 17:31
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 7.07.2006 18:02
Сообщение #2


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


по-моему, решалось много раз....
ну, основная идея такая (например. вариантов множество):
берешь первую строку, считаешь сумму элементов. присваиваешь это значение переменным minsum и maxsum, переменным maxi и mini (номера искомых строк) присваиваешь значение 1.
дальше идешь циклом начиная со второй строки вниз. если сумма больше максимальной, присваиваешь maxsum и maxi соответствующие значения. Аналогично, если меньше минимальной.
а потом печатаешь 4 найденные переменные.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анька
сообщение 7.07.2006 21:42
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Вот что получилось. Максимальную/минимальную сумму находит правильно. А вот с номером строки проблема

Код
program matr;
var
   stroka:array[1..10,1..10] of integer;
   i,j,n,m,minsum,maxsum,maxi,mini:integer;
   s:integer;

begin
   writeln(' Введите n');
   readln(n);
   writeln('введите m');
   readln(m);
   for i:=1 to n do
   for j:=1 to m do
   begin
      write ('введите d[',i,',',j,']:');
      read(stroka[i,j]);
   end;

   For i:=1 to i-(i-1) do
   begin
     minsum:=0;
     for j:=1 to m do
        minsum:=minsum+stroka[i,j];
     maxsum:=minsum;
     mini:=1;
     maxi:=1;
   end;
   for i:=2 to n do
   begin
      s:=0;
      for j:=1 to m do
         s:=s+stroka[i,j];
         if s>maxsum then
            maxsum:=s;
            maxi:=i;
         If s<minsum then
            minsum:=s;
            mini:=i;
   end;
   writeln(строка с max значением',maxi );
   writeln('max значение ',maxsum);
   writeln('строка с мин значением',mini);
   writeln('min мин значение',minsum);
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.07.2006 22:02
Сообщение #4


Гость






Добавь Begin/End там, где я показал, у тебя при каждом If выполняется только один оператор, а должны выполняться два...
      for j:=1 to m do begin { <-- }
s:=s+stroka[i,j];
if s>maxsum then begin { <-- }
maxsum:=s;
maxi:=i;
end; { <-- }
If s<minsum then begin { <-- }
minsum:=s;
mini:=i;
end; { <-- }
end; { <-- }
 К началу страницы 
+ Ответить 
Анька
сообщение 8.07.2006 0:29
Сообщение #5





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Да,ступила.. Большое спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 8.07.2006 14:13
Сообщение #6


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


вот эту строку не совсем поняла...
For i:=1 to i-(i-1) do

ты фактически получишь только один проход, так что цикл не нужен. лучше напиши
i:=1


или вообще убери эту непонятную строчку, а внутренный цикл исправь на такое:
 for j:=1 to m do
minsum:=minsum+stroka[1,j];

то есть вместо i задай в явном виде номер строки.

хотя работать будет и так....

Сообщение отредактировано: volvo - 3.11.2006 20:04


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 17:22
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"