Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Pascal. Подпрограмма и матрица.

57K
16 ноября 2010 года
Torah
12 / / 11.10.2010
Задание звучит так : Создать подпрограмму, находящую в матрице максимальный и минимальный элементы и меняющую их местами.

Прошу,помогите, пожалуйста, с решением !
14K
16 ноября 2010 года
Fenja
138 / / 20.03.2009
В чем проблема? В написании подпрограммы? Или в нахождении минимального/максимального элемента?
57K
17 ноября 2010 года
Torah
12 / / 11.10.2010
Да, проблема в написании только подпрограммы, как найти max и min я знаю.
Нет, лучше сказать так, я не знаю, как лучше применить подпрограмму в этом задании.
48K
17 ноября 2010 года
Fylh_if
5 / / 25.04.2009
Цитата: Torah
Да, проблема в написании только подпрограммы, как найти max и min я знаю.
Нет, лучше сказать так, я не знаю, как лучше применить подпрограмму в этом задании.



на вход подавай матрицу, на выходе изменённую матрицу.

247
18 ноября 2010 года
wanja
1.2K / / 03.02.2003
Или параметр-матрицу сделай var и ковыряйся в ней.
57K
01 декабря 2010 года
Torah
12 / / 11.10.2010
Код:
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, следующую строку он будет проходить с самого начала ... Надо изменить. Помогите, пожалуйста.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог