Двумерные массивы, Поиска строки с макс суммой |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Двумерные массивы, Поиска строки с макс суммой |
Анька |
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: 0 |
Здравствуйте. Помогите решить такую задачу: дана прямоугольная матрица матрица. Найти строку с найбольшей и наименьшей суммой элементов. вывести на печать найденные строки и суммы их элементов. По форуму я искала, но не нашла. Помогите уж
Сообщение отредактировано: Анька - |
мисс_граффити |
Сообщение
#2
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
по-моему, решалось много раз....
ну, основная идея такая (например. вариантов множество): берешь первую строку, считаешь сумму элементов. присваиваешь это значение переменным minsum и maxsum, переменным maxi и mini (номера искомых строк) присваиваешь значение 1. дальше идешь циклом начиная со второй строки вниз. если сумма больше максимальной, присваиваешь maxsum и maxi соответствующие значения. Аналогично, если меньше минимальной. а потом печатаешь 4 найденные переменные. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Анька |
Сообщение
#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. |
volvo |
Сообщение
#4
|
Гость |
Добавь Begin/End там, где я показал, у тебя при каждом If выполняется только один оператор, а должны выполняться два...
for j:=1 to m do begin { <-- } |
Анька |
Сообщение
#5
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: 0 |
Да,ступила.. Большое спасибо.
|
мисс_граффити |
Сообщение
#6
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
вот эту строку не совсем поняла...
For i:=1 to i-(i-1) do ты фактически получишь только один проход, так что цикл не нужен. лучше напиши i:=1 или вообще убери эту непонятную строчку, а внутренный цикл исправь на такое: for j:=1 to m do то есть вместо i задай в явном виде номер строки. хотя работать будет и так.... Сообщение отредактировано: volvo - -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Текстовая версия | 20.09.2024 16:43 |