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

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

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

> Оптимизация процедурами
Tribunal
сообщение 22.12.2005 17:12
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

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


подскажите,пожалуйста,как текст этой программы упростить с помощью процедур?


Код

program rgr;
uses crt;

   const
      n=4;
      r=4;
   type
      matrix= array[1..n,1..n] of integer;
   var
      k,i,j,s1,s2:integer;
      a,b,c,d,m:matrix;

begin
clrscr;
   writeln('matrix A:');
   randomize;
   for i:=1 to n do
   begin
      for j:=1 to n do
      begin
      a[i,j]:=random(r)+1;
      write(a[i,j]:4);
      end;
      writeln;
   end;

   writeln;

   writeln('matrix B:');
   for i:=1 to n do
   for j:=1 to n do
   if i=1 then b[i,j]:=j
   else begin
           if j=1 then k:=n else k:=j-1;
           b[i,j]:=-b[i-1,k];
        end;
   for i:=1 to n do
        begin
           for j:=1 to n do
           write(b[i,j]:4);
           writeln;
        end;
  writeln;

  s1:=a[1,1];
  for i:=1 to n do
  for j:=1 to n do
  if a[i,j]>s1 then s1:=a[i,j];
  writeln('s1=',s1);

  s2:=b[1,1];
  for i:=1 to n do
  for j:=1 to n do
  if b[i,j]>s2 then s2:=b[i,j];
  writeln('s2=',s2);
  writeln;

  if s1<s2
  then
  begin
     for i:=1 to n do
     for j:=1 to n do
     begin
        c[i,j]:=0;
        for k:=1 to n do
        c[i,j]:=c[i,j]+a[i,k]*b[k,j];
     end;

     for i:=1 to n do
     for j:=1 to n do
     begin
        d[i,j]:=0;
        for k:=1 to n do
        d[i,j]:=d[i,j]+b[i,k]*a[k,j];
     end;

     for i:=1 to n do
     for j:=1 to n do
     m[i,j]:=c[i,j]-d[i,j];

     writeln('s1<s2,matrix M:');
     for i:=1 to n  do
     begin
        for j:=1 to n do
        write(m[i,j]:4);
        writeln;
     end;
  end
  else
  begin
     for i:=1 to n do
     for j:=1 to n do
     m[i,j]:=b[i,j]+2*a[i,j];

     writeln('s1>s2,matrix M:');
     for i:=1 to n do
     begin
        for j:=1 to n do
        write(m[i,j]:4);
        writeln;
     end;
  end;
end.


Сообщение отредактировано: Tribunal - 22.12.2005 17:12


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 22.12.2005 17:48
Сообщение #2


Гость






Вместо этого:
  for i:=1 to n do
for j:=1 to n do
m[i,j]:=b[i,j]+2*a[i,j];

и вот этого:
  for i:=1 to n do
for j:=1 to n do
m[i,j]:=c[i,j]-d[i,j];

пользуемся одной процедурой...
 К началу страницы 
+ Ответить 

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


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

 



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