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

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

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

> Двумерные массивы, Вывод, поиск, операции с двумерными массивами
DaryllDixonn
сообщение 21.12.2014 19:37
Сообщение #1





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

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


Дана матрица A[5,4] масс грузов P-отправителей, Q-получателя; P=5;Q=4 при распечатке:
1) Ввести матрицу по строкам и получить распечатку матрицы.
2) Определить сумму элементов каждой строки.
3) Определить строку с максимальной суммой и разместить её первой (поменяв при необходимости местами).
4) Реализовать выбор всех элементов матрицы > больше 10 т. и вывод их значений и индексов.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Федосеев Павел
сообщение 23.12.2014 3:24
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 298
Пол: Мужской
Реальное имя: Федосеев Павел

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


Круто!

Возможно, ты был невнимателен, но в условии говорится о матрице А[5,4], а ты определяешь A[4,5]. И в дальнейшем используешь обращения PQ[j, i] вместо привычных глазу PQ[i, j].

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

При вычислении суммы, ты обнуляешь переменную где-то в конце, а не перед вычислением суммы строки.


В итоге, сделал бы так:
uses
crt;

const
P = 5;
Q = 4;

var
i, j, IndexMaxSum: integer;
PQ: array[1..P, 1..Q] of real;
Sum, MaxSum, Mem: real;
QSummes: array[1..Q] of real;

procedure ShowTablePQ;
begin
clrscr;

for j := 1 to Q do
Write(' Q', j);
writeln;
writeln('---------------------------------------');

for i := 1 to P do
begin
Write('P', i);
for j := 1 to Q do
begin
Write(PQ[i, j]: 7: 2);
end;
writeln;
end;

end;

begin

for i := 1 to P do
for j := 1 to Q do
begin
Write(' P', i, ' --> Q', j, ' =');
Read(PQ[i, j]);
end;

ShowTablePQ;

Writeln('Суммы строк матрицы:');
for i := 1 to P do
begin
Sum := 0;
for j := 1 to Q do
Sum := Sum + PQ[i, j];
if (i = 1) or (Sum > MaxSum) then
begin
MaxSum := Sum;
IndexMaxSum := i;
end;
writeln(' Строка ', i, ' Sum=', Sum: 0: 2);
end;
writeln('Максимальная сумма (', MaxSum: 0: 2, ') в строке ', IndexMaxSum, '.');

writeln;
writeln('Выносим строку с максимальной суммой на первую позицию');
readln;
for j := 1 to Q do
begin
Mem := PQ[1, j];
PQ[1, j] := PQ[IndexMaxSum, j];
PQ[IndexMaxSum, j] := Mem;
end;

ShowTablePQ;

writeln;

writeln('Выводим все элементы c грузом > 10');
readln;
writeln('-START-------------------');
for i := 1 to P do
for j := 1 to Q do
if PQ[i, j] > 10 then
writeln(' P', i, ' --> Q', j, ' =', PQ[i, j]);
writeln('---------------------END-');
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 23.12.2014 17:55
Сообщение #3


Гость






Цитата(Федосеев Павел @ 23.12.2014 3:24) *

Круто!

Возможно, ты был невнимателен, но в условии говорится о матрице А[5,4], а ты определяешь A[4,5]. И в дальнейшем используешь обращения PQ[j, i] вместо привычных глазу PQ[i, j].

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

При вычислении суммы, ты обнуляешь переменную где-то в конце, а не перед вычислением суммы строки.
В итоге, сделал бы так:
uses
crt;

const
P = 5;
Q = 4;

var
i, j, IndexMaxSum: integer;
PQ: array[1..P, 1..Q] of real;
Sum, MaxSum, Mem: real;
QSummes: array[1..Q] of real;

procedure ShowTablePQ;
begin
clrscr;

for j := 1 to Q do
Write(' Q', j);
writeln;
writeln('---------------------------------------');

for i := 1 to P do
begin
Write('P', i);
for j := 1 to Q do
begin
Write(PQ[i, j]: 7: 2);
end;
writeln;
end;

end;

begin

for i := 1 to P do
for j := 1 to Q do
begin
Write(' P', i, ' --> Q', j, ' =');
Read(PQ[i, j]);
end;

ShowTablePQ;

Writeln('Суммы строк матрицы:');
for i := 1 to P do
begin
Sum := 0;
for j := 1 to Q do
Sum := Sum + PQ[i, j];
if (i = 1) or (Sum > MaxSum) then
begin
MaxSum := Sum;
IndexMaxSum := i;
end;
writeln(' Строка ', i, ' Sum=', Sum: 0: 2);
end;
writeln('Максимальная сумма (', MaxSum: 0: 2, ') в строке ', IndexMaxSum, '.');

writeln;
writeln('Выносим строку с максимальной суммой на первую позицию');
readln;
for j := 1 to Q do
begin
Mem := PQ[1, j];
PQ[1, j] := PQ[IndexMaxSum, j];
PQ[IndexMaxSum, j] := Mem;
end;

ShowTablePQ;

writeln;

writeln('Выводим все элементы c грузом > 10');
readln;
writeln('-START-------------------');
for i := 1 to P do
for j := 1 to Q do
if PQ[i, j] > 10 then
writeln(' P', i, ' --> Q', j, ' =', PQ[i, j]);
writeln('---------------------END-');
end.



Program1.pas(18) : Переменная цикла for должна описываться в том же блоке, что и цикл for
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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