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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2010, 11:20   #1
torah
Пользователь
 
Регистрация: 02.11.2010
Сообщений: 19
Сообщение Pascal. Подпрограмма и матрица.

Решите, пожалуйста программу, стану хорошим программистом - обязательно выручу.
Задание такое:
Создать подпрограмму, находящую в матрице минимальный и максимальный элементы и меняющую их местами. ( динамическая матрица )
torah вне форума Ответить с цитированием
Старый 17.11.2010, 11:43   #2
Риндера
Delphi, учу С
Форумчанин
 
Аватар для Риндера
 
Регистрация: 20.10.2010
Сообщений: 178
По умолчанию

Цитата:
Решите, пожалуйста программу, стану хорошим программистом - обязательно выручу.
Не станешь.

Код:
max := a[1][1]; min := a[1][1];
for i := 1 to N do
  for j := 1 to M do
    begin
    if a[i][j] > max then
      begin
      max := a[i][j];
      continue;
      end;
    if a[i][j] < min then min := a[i][j];
    end;
Надеюсь, как их поменять местами, ты догадаешься.
Риндера вне форума Ответить с цитированием
Старый 17.11.2010, 12:03   #3
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Цитата:
Сообщение от Риндера Посмотреть сообщение
Надеюсь, как их поменять местами, ты догадаешься.
Надо было не сами значения, а индексы сохранять
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 17.11.2010, 13:03   #4
Риндера
Delphi, учу С
Форумчанин
 
Аватар для Риндера
 
Регистрация: 20.10.2010
Сообщений: 178
По умолчанию

Цитата:
Надо было не сами значения, а индексы сохранять
Да, действительно. Как-то не сообразила сразу)
Риндера вне форума Ответить с цитированием
Старый 17.11.2010, 13:41   #5
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

И ваще, почему решили, что матрица двумерная??? Об этом в задании не говорилось...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 17.11.2010, 14:00   #6
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Цитата:
Сообщение от Grag Посмотреть сообщение
И ваще, почему решили, что матрица двумерная??? Об этом в задании не говорилось...
Цитата:
Ма́трица — математический объект, записываемый в виде прямоугольной таблицы элементов кольца или поля, которая представляет собой совокупность строк и столбцов, на пересечении которых находятся её элементы. Количество строк и столбцов матрицы задают размер матрицы.
Ну даже если и больше измерений, на что это повлияет? На количество циклов и переменных? Так это не проблема
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 01.12.2010, 11:07   #7
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 вне форума Ответить с цитированием
Старый 08.12.2010, 11:37   #8
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Вот в ЭТО вы превратили задачу по смене максимального и минимального элемента?
Запоминайте индексы искомых элементов. Задача решается в один цикл
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Ответ


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



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