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

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

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

 
 Ответить  Открыть новую тему 
> Двумерные массивы, Вывод, поиск, операции с двумерными массивами
сообщение
Сообщение #1





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

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


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


Знаток
****

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

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


Покажи, что ты уже успел реализовать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


Цитата(Федосеев Павел @ 21.12.2014 20:44) *

Покажи, что ты уже успел реализовать.

К сожаление нечего, ибо я в этом вообще не разбираюсь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

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

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


Попробуй научиться читать.

Кроме методичек и учебников, подобные темы "пережёвывались" поколениями учащихся.
Здесь есть FAQ - ссылка выделенная красным цветом в верху этой страницы. В FAQ должна быть статья с примерами и пояснениями.

Начни с чего-нибудь.

Лично мне не интересно делать целиком задачку за тебя. Помочь - да, помогу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


Цитата(Федосеев Павел @ 21.12.2014 21:04) *

Попробуй научиться читать.

Кроме методичек и учебников, подобные темы "пережёвывались" поколениями учащихся.
Здесь есть FAQ - ссылка выделенная красным цветом в верху этой страницы. В FAQ должна быть статья с примерами и пояснениями.

Начни с чего-нибудь.

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


Код
uses crt;

  const P = 5;
        Q = 4;

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

procedure ShowTablePQ;
begin
clrscr;

  for i := 1 to P do
      write('     P',i);
  writeln;
  writeln('---------------------------------------');

  for i := 1 to Q do
  BEGIN
   writeln('Q',i);
    for j := 1 to P do
      begin
        write('':6,PQ[i,j]);
        Sum:=Sum + PQ[i,j];
      end;

   if Sum > 0 then
     begin
       writeln(' ':5,'Sum=',Sum);
       if Sum > MaxSum then
          begin
            MaxSum:=Sum;
            IndexMaxSum:=i;
          end;
     end;
    
   Sum:=0;
  END;
  
end;

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

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


Сообщение отредактировано: DaryllDixonn -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Знаток
****

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

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


Круто!

Возможно, ты был невнимателен, но в условии говорится о матрице А[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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата(Федосеев Павел @ 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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата(Гость @ 23.12.2014 17:55) *

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

А почему не выводится сумма строк ? В коде же есть...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Знаток
****

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

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


Цитата
Переменная цикла for должна описываться в том же блоке, что и цикл for


Да, согласен. Нужно описать локальные переменные i и j в процедуре, а не пользоваться глобальными. Ошибся при копировании. wub.gif

Цитата
А почему не выводится сумма строк ? В коде же есть...


Сумма элементов строки выводится, просто не в том же блоке где и сама матрица.

Этого нет в условии задания. вот я и не стал выполнять, вернее - даже удалил. Основная причина - автор неправильно вычислял сумму. Сначала должно прийти понимание, а потом можно усложнять.

Поэтому не понятен вопрос - в каком коде есть? В моём - нет, в коде топикстартера - есть, но что там вычисляется?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 5.05.2024 14:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name