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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 19:43   #1
torah
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 19
Восклицание Подпрограмма и матрица.Pascal

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

Подскажите, пожалуйста решение !
torah вне форума
Старый 01.12.2010, 11:08   #2
torah
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 19
По умолчанию

Код:
  type Mas=array of array of integer;

procedure maxmin(a:mas);
  var max, min, z, Xmax,Ymax,Xmin,Ymin,j,i :integer;

begin
max:=a[0,0]; min:=a[0,0];Xmax:=0; Ymax:=0; Xmin:=0; Ymin:=0; i:=-1; j:=0;
  while i<=(-2+length(a)) do
   begin inc(i); j:=0;
  while j<=(-1+length(a[1])) do
   begin
    if(i>0) or (j>0) then begin {чтобы он в [0,0] не заходил}
       if a[i,j]>max then begin  max:=a[i,j];Xmax:=i; Ymax:=j; end; {в цикле ищем max и его координаты}
       if a[i,j]<min then begin  min:=a[i,j];Xmin:=i; Ymin:=j; end; {в цикле ищем min  и его координаты}
       end;
   inc(j);

    end;
   end;

z:=a[Xmax,Ymax]; a[Xmax,Ymax]:=a[Xmin,Ymin]; a[Xmin,Ymin]:=z;  {меняем местами}

  for i:=0 to -1+length(a) do
  for j:=0 to -1+length(a[1]) do
 begin if j=-1+length(a[1]) then begin write(a[i,j]); writeln; end
                             else write(a[i,j], ' ');end;
end;

var a:Mas; d,s,j,i: integer;
begin
writeln ('vvedite dliny matrici'); readln(d);
writeln ('vvedite shiriny matrici');readln(s);
setlength(a,d,s);
randomize;
 for i:=0 to d-1 do
 for j:=0 to s-1 do
 begin a[i,j]:=random(51); if j=s-1 then begin write (a[i,j], ' ');writeln; end
                                    else write (a[i,j], ' ');end; writeln;

  maxmin(a);
 readln;
end.
Мне нужно сделать так, чтобы при первом входе в эти циклы i и j уже были не равны [0,0], а [0,1], а в последствии, каждая строка начиналась сначала, а не с элементами с индексами 1.
Ну вот внутренний цикл while он проходит по строке, если изначально j будем устанавливать =1 до начала цикла, то первую строку он будет проходить, начиная с первого индекса, а после окончания внутреннего цикла, если я каждый раз буду устанавливать j=o, следующую строку он будет проходить с самого начала ... Надо изменить. Помогите, пожалуйста.
torah вне форума
Старый 01.12.2010, 13:25   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

закрыто.
Кросс-пост.



тема развивается здесь:
Pascal. Подпрограмма и матрица.
Serge_Bliznykov вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица N на N Pascal kostazs Помощь студентам 9 03.10.2010 21:17
Матрица в Pascal Nastik Помощь студентам 2 07.06.2010 21:55
Матрица в Pascal Стасссс Помощь студентам 8 13.03.2009 16:05
подпрограмма-процедура в Pascal Танюсик Помощь студентам 6 21.04.2008 07:28
Матрица в Pascal W_P Помощь студентам 7 05.03.2008 05:51