Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2012, 01:58   #1
manifest07
Новичок
Джуниор
 
Регистрация: 20.01.2012
Сообщений: 2
По умолчанию Разработка многомодульных программ с выделением процедур.

Здравствуйте уважаемые форумчане. При решении задачи возникли некоторые трудности. Вот условие задачи:

В прямоугольной матрице в каждом столбце поставить на первое место максимальный элемент столбца и, если среди полученных элементов первой строки не окажется элементов, по модулю меньших заданной величины, разделить элементы последней строки на соответствующие элементы первой строки.

естественно имеется наработка:

Код:
program zad433_1;
const n=2; m=3;
Type matr = array[1..n,1..m] of real;
var A:matr;    
i,j:integer;
procedure plus;
begin
i:=i+1;
end;
procedure poisk(Var A:matr);
Var i,j:integer;
    max,tmp:real;
Begin
    For j:= 1 to m do
  begin
  max:=a[1,j];
   For i:= 1 to n do
    begin
      if a[i,j]>max
         then
        begin
         tmp:=a[1,j];
             a[1,j]:=a[i,j];
                 a[i,j]:=tmp;
                    plus;
                     end;
    end;
    end;
End;
procedure delenie(Var A:matr);
Var j:integer;
begin
For j:= 1 to m do
      a[n,j]:=a[n,j]/a[1,j];
end;
procedure zamena(Var A:matr);
Var j:integer;
    k:real;
Begin
write('vvedite velechinu - ');ReadLn(k);
      For j:= 1 to m do
        begin
         if abs(a[1,j])>=abs(k) then delenie(A)
        end;
End;        
BEGIN
For i:= 1 to n do
      For j:= 1 to m do
        begin
          Write('A[',i,',',j,']= ');
          ReadLn(A[i,j])
        end;
    WriteLn('Matrix A:');
     For i:= 1 to n do
       begin
         For j:= 1 to m do
           Write(A[i,j]:5:1);
           WriteLn
       end;
poisk(A);
zamena(A);
 WriteLn('Matrix A:');
     For i:= 1 to n do
       begin
         For j:= 1 to m do
           Write(A[i,j]:5:1);
           WriteLn
       end;
ReadLn;
END.
Вроде делал проверку и все сходилось, но преподаватель сказал что по условию деление должно происходить 1 раз, а у меня не так. Хотя вроде проверял, получал верные ответы.
Буду очень благодарен за помощь! Спасибо.
manifest07 вне форума Ответить с цитированием
Старый 20.01.2012, 09:05   #2
zhan313
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 44
По умолчанию

Код:
procedure zamena(Var A:matr);
Var j:integer;
    k:real;
Begin
write('vvedite velechinu - ');ReadLn(k);
      For j:= 1 to m do
        begin
         if abs(a[1,j])>=abs(k) then begin delenie(A); break; end;
        end;
End;
Нужно оборвать цикл. Таких элементов может быть несколько.
zhan313 вне форума Ответить с цитированием
Старый 20.01.2012, 10:22   #3
manifest07
Новичок
Джуниор
 
Регистрация: 20.01.2012
Сообщений: 2
По умолчанию

Большое спасибо! Именно это мне и нужно было.)
manifest07 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать программ с использованием процедур: Ulmas Паскаль, Turbo Pascal, PascalABC.NET 1 01.04.2011 20:41
Многофункциональная программа с выделением процедур pascal Biggie Smalls Помощь студентам 1 25.02.2011 08:45
разработка структурированных программ с использованием процедур в Delphy Makino Помощь студентам 2 27.11.2010 16:29
Разработка программ с использованием процедур(Unit) FeT Помощь студентам 7 04.12.2007 17:49
Разработка программ с использованием процедур(Unit) FeT Помощь студентам 3 02.12.2007 20:42