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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2009, 23:13   #1
Knife
 
Регистрация: 03.03.2009
Сообщений: 8
По умолчанию [Pascal] Задачи на матрицы. Прошу подсказки.

1. Задача: "Найти наибольший и наименьший элемент прямоугольноматрицы и поменять их местами." Вот я решил задачу, нашел наибольший и нименьший элемент. Помоги плз, что нужно дописать чтобы поменять их местами.

Код:
Program Mass2;
const n=3; m=2;
var a:array[1..n,1..m] of integer;
i,j,maxi,maxj,mini,minj:integer;
max,min:real;
begin
Writeln('Vvod elementov po strokam');
for i:=1 to n do
begin
for j:=1 to m do
Read(a[i,j]);
//Readln;
end;
for i:=1 to n do
begin
for j:=1 to m do
Writeln(a[i,j]);
// Writeln;
end;
//readln;
max:=a[1,1]; min:=a[1,1];
// maxi:=1; maxj:=1; mini:=1; minj:=1;
for i:=1 to n do
for j:=1 to m do
begin
if max<=a[i,j] then
begin
max:=a[i,j]; //maxi:=i; maxj:=j;
end;
if min>a[i,j] then
begin
min:=a[i,j]; //mini:=i; minj:=j;
end;
end;
//a[mini,minj]:=max; a[maxi,maxj]:=min;
// for i:=1 to n do
// begin
// for j:=1 to m do
// Write(a[i,j]:7:1);
// Writeln;
//end;
// readln;
write('Ioaao mao=');
writeln(max);
write('min=');
writeln(min);

end.


2 Задача: "решить матрицу." Тут у меня маленький вопрос. За что отвечает переменная "s" я вот не знаю. прошу подсказать, если не трудно.
Вот само решение:

Код:
uses crt;
const n=6; {строки}
m=6; {столбцы}
var a:array[1..n,1..m] of integer;
i,s:byte;
begin
s:=1;
while s<>m+1 do
begin
if s mod 2 = 1 then
begin
for i:=1 to n do
begin
a[s,i]:=1;
end;
end
else
begin
for i:=1 to n do
begin
if i mod 2 = 1 then
a[s,i]:=1
else
a[s,i]:=0;
end;
end;
inc(s);
end;
begin
for i:=1 to n do {вывод массива}
begin
for s:=1 to m do
write (a[i,s],' ');
writeln;
end;
end;
end.

Последний раз редактировалось Stilet; 14.04.2009 в 08:58.
Knife вне форума Ответить с цитированием
Старый 13.04.2009, 23:37   #2
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

1) используй какую-нибудь переменную, например х, запомни в нее мах, вместо мах поставь min, а вместо min - переменную х
2) это просто вспомогательная переменная, хоть как ее назови

совет: пиши коды в тегах (см правила) и используй отступы.
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума Ответить с цитированием
Старый 14.04.2009, 00:17   #3
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

1. Вы практически ее сами и решили. ТОлько почему-то правильные строки как раз закомментировали. Нужно искать по сути дела не сами элементы(их значения), а места куда их переставлять, то есть только индексы.
Код:
Program Mass2;
uses crt;
const n=3; m=2;
var a:array[1..n,1..m] of integer;
i,j,maxi,maxj,mini,minj,temp:integer;
max,min:real;
begin
Writeln('Vvod elementov po strokam');
for i:=1 to n do
begin
for j:=1 to m do
Read(a[i,j]);
end;
clrscr;
for i:=1 to n do
begin
for j:=1 to m do
Write(a[i,j]:3);
Writeln;
end;
 maxi:=1; maxj:=1; mini:=1; minj:=1;
 for i:=1 to n do
  for j:=1 to m do
    begin
     if a[maxi,mini]<a[i,j] then
     begin
      maxi:=i; maxj:=j;
     end
     else if a[mini,minj]>a[i,j] then
              begin
               mini:=i; minj:=j;
              end;
    end;
 temp:=a[mini,minj];
 a[mini,minj]:=a[maxi,maxj];
 a[maxi,maxj]:=temp;
 writeln('==============');
 writeln;
 for i:=1 to n do
begin
for j:=1 to m do
Write(a[i,j]:3);
Writeln;
end;
end.
2. Как я понял задача - прописать в четных столбцах четных строк 0. Тогда s - строка с которой мы работаем в данный момент.
Можно было покороче написать
uses crt;
Код:
const n=6; 
m=6; 
var a:array[1..n,1..m] of integer;
i,j:byte;
begin
for i:=1 to n do
 begin
 for j:=1 to n do
  begin
   if (i mod 2=0) and (j mod 2=0) then a[i,j]:=0
      else a[i,j]:=1;
   write(a[i,j]:2);
  end;
  writeln;
 end;
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось Stilet; 14.04.2009 в 08:59.
alex_fcsm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помощи. Снова Матрицы Diez Помощь студентам 13 07.02.2009 17:09
Прошу помощи в решении задачи на языке Free Pascal Refenement Помощь студентам 7 21.12.2008 15:27
Помогите решить две задачи! очень прошу... DmT Фриланс 1 23.10.2007 23:19