Автор Тема: Помогите дописать прогу!  (Прочитано 977 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Finder

  • Ветеран
  • *****
  • Сообщений: 1450
  • Карма: -1
  • Пол: Мужской
    • Просмотр профиля
Вобщем за вознаграждение прощу помочь мне доделать прогу в Паскале. Написал бы сам, но нету времени, чтоб с этим разобраться!
матрица выводится, числа К, L, Z считает. Надо лишь только оформить подпрограмму по определению K и L,
и работу с файлом. вот текст проги:

{Dana matrica A razmernisti N*N. Vichislit' K ravnoe maximal'noy summe
elementov 'i' stroki, L ravnoe maximal'noy summe elementov 'j' stolbca.
Naiti men'wee iz etikh chisel Z. Vivesti iskhodnuy matricy,  chisla: K,
L, Z. Opredelenie maximuma oformit' podprogrammoy.}
program Dima;
uses crt;
var x: array [1..10, 1..10] of real;
    y: array [1..10] of real;
    n: integer; i: byte; j: byte; sumstr, sumstol, s1,  s2, z: real;

begin
 clrscr;
 writeln('Vvedite rang matrici n<=10');
 readln(n);
 randomize;
 writeln;
 for i:=1 to n do
  begin
   for j:=1 to n do
    x[i, j]:=random*200-100;
  end;
 for i:=1 to n do
  begin
   writeln;
   for j:=1 to n do
    write(x[i, j]:8:2);
  end;
 writeln;
 readln;
 sumstr:=0;
 for i:=1 to n do
  begin
   sumstr:=0;
   for j:=1 to n do
    begin
     sumstr:= sumstr+x[i, j];
    end;
   y:=sumstr;
  end;
 s1:=0;
 for j:=1 to n do
  write(y[j]:8:2);
 for j:=1 to n do
  begin
   if s1<y[j] then s1:=y[j];
  end;
 writeln;
 write('K= ', s1:8:2);

 readln;
 s2:=0;
 writeln;
 sumstol:=0;
 for j:=1 to n do
  begin
   sumstol:=0;
   for i:=1 to n do
    begin
     sumstol:= sumstol+x[i, j];
    end;
   y[j]:=sumstol;
  end;
 for j:=1 to n do
  write(y[j]:8:2);
 for j:=1 to n do
  begin
   if s2<y[j] then s2:=y[j];
  end;
 writeln;
 write('L= ', s2:8:2);
 readln;
 writeln;
 z:=s1;
 if z>s2 then writeln('Z= ', s2:7:2) else writeln('Z= ', z:7:2);
 readln;
end.


Оффлайн Nimak

  • Старожил
  • ****
  • Сообщений: 304
  • Карма: -666
    • Просмотр профиля
Re: Помогите дописать прогу!
« Ответ #1 : 02.12.07, 19:10:57 »
Вот держы свою задачку. Кажется так, если я условие понял правильно. Я нашел суммы всех строк и столбцов, и нашел из них максимумы.
« Последнее редактирование: 02.12.07, 19:19:31 от Nimak »

Оффлайн LEND

  • Пользователь
  • **
  • Сообщений: 95
  • Карма: 155
  • Истина как всегда где-то рядом
    • Просмотр профиля
Re: Помогите дописать прогу!
« Ответ #2 : 02.12.07, 22:11:35 »
Вообще задача не сложная.
Оставил начальные ВАШИ данные.
Можно применить один раз процедуру MAX. Можно поставить друг за другом. Можно вводить параметры и т.д.


(*Вобщем за вознаграждение прощу помочь мне доделать прогу в Паскале. Написал бы сам, но нету времени, чтоб с этим разобраться!
матрица выводится, числа К, L, Z считает. Надо лишь только оформить подпрограмму по определению K и L,
и работу с файлом. вот текст проги:*)

{Dana matrica A razmernisti N*N. Vichislit' K ravnoe maximal'noy summe
elementov 'i' stroki, L ravnoe maximal'noy summe elementov 'j' stolbca.
Naiti men'wee iz etikh chisel Z. Vivesti iskhodnuy matricy,  chisla: K,
L, Z. Opredelenie maximuma oformit' podprogrammoy.}
program Dima;
uses crt;
var x: array [1..10, 1..10] of real;
    n: integer; i: byte; j: byte;
    K,L,Z:real;
{================ Процедура нахождения Max числа ======}
PROCEDURE Max;
var
sumst,sumsl:real;
begin
 for i:=1 to n do begin
   sumst:=0;
   sumsl:=0;
     for j:=1 to n do begin
                       sumst:=sumst+x[i,j];
                       sumsl:=sumsl+x[j,i];
                          end;
                        if i=1 then begin
                                     K:=sumst;
                                     L:=sumsl;
                                     end
                                     else begin
                           if K<=sumst then K:=sumst;
                           if L<=sumsl then L:=sumsl;
                                          end;
                       end;
end;
{======================================================}

BEGIN
 Repeat
 clrscr;
 writeln('Vvedite rang matrici n<=10');
 readln(n);
 if n>10 then begin
       writeln('Надо до n<=10. Снова сделать ввод - любая клавиша.');
       READLN;
              end;
 until n<=10;
 { --------------------- Твои начальные данные --------------- }
 randomize;
 for i:=1 to n do
  begin
   for j:=1 to n do
    x[i, j]:=random*200-100;
  end;
 for i:=1 to n do
  begin
   writeln;
   for j:=1 to n do
    write(x[i, j]:8:2);
  end;
{ ----------------------------------------------------------}
 writeln;
 writeln;
  K:=0;L:=0;
  Max; { Процедура }
 if K>=L then Z:=K else Z:=L;
 writeln('K=',K:5:2,' L=',L:5:2,' и Z=',Z:5:2);
writeln('Для выхода нажмите любую клавишу.');
Readkey;
END.


Проверил ВАШ листинг программы в работе.
Есть ошибки


program Dima;
uses crt;
var x: array [1..10, 1..10] of real;
    y: array [1..10] of real;
    n: integer; i: byte; j: byte; sumstr, sumstol, s1,  s2, z: real;

begin
 clrscr;
 writeln('Vvedite rang matrici n<=10');
 readln(n);
 randomize;
 writeln;
 for i:=1 to n do
  begin
   for j:=1 to n do
    x[i, j]:=random*200-100;
  end;
 for i:=1 to n do
  begin
   writeln;
   for j:=1 to n do
    write(x[i, j]:8:2);
  end;
 writeln;
 readln;
 sumstr:=0;
 for i:=1 to n do
  begin
   sumstr:=0;
   for j:=1 to n do
    begin
     sumstr:= sumstr+x[i, j];
    end;
   y:=sumstr;     {Вот здесь ошибка - подумай сам}
  end;
 s1:=0;
 for j:=1 to n do
  write(y[j]:8:2);
 for j:=1 to n do
  begin
   if s1<y[j] then s1:=y[j];
  end;
 writeln;
 write('K= ', s1:8:2);

 readln;
 s2:=0;
 writeln;
 sumstol:=0;
 for j:=1 to n do
  begin
   sumstol:=0;
   for i:=1 to n do
    begin
     sumstol:= sumstol+x[i, j];
    end;
   y[j]:=sumstol;
  end;
 for j:=1 to n do
  write(y[j]:8:2);
 for j:=1 to n do
  begin
   if s2<y[j] then s2:=y[j];
  end;
 writeln;
 write('L= ', s2:8:2);
 readln;
 writeln;
 z:=s1;
 if z>s2 then writeln('Z= ', s2:7:2) else writeln('Z= ', z:7:2);
 readln;
end.

С уважением
LEND
В мире временном, сущность которого - тлен,
Не сдавайся вещам несущественным в плен. © О.Х.