IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
Closed Topic Открыть новую тему 
> Матрица, Поменять max c элементом a[1,3]
Аделина
сообщение 13.02.2005 18:39
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Женский

Репутация: -  0  +


Здрям^ки! smile.gif
Не могу понять почему не идет программа.
Нужно определить min элемент главной диагонали, и поменять местами max элемент с a[1,3] , ещё вывести строку где находится min.
:low:
Код

program primer_3;
uses crt;
var i,j,min,k,max,n,m,p:word;
     a:array[1..5] of array[1..5] of word;
begin
randomize;
for j:=1 to 5 do
begin
for i:=1 to 5 do
begin
a[i,j]:=random(25);
write(a[i,j]:2,' ');
end;
writeln;
end;
min:=a[1,1];
max:=a[1,1];
for j:=1 to 5 do
begin
for i:=1 to 5 do
begin
if i=j then
 begin
 if min>a[i,j] then
  begin
  min:=a[i,j];
  k:=j;
  end;
 if max<a[i,j] then
  begin
  max:=a[i,j];
  n:=i;
  m:=j;
  end;
 end;
end;
end;
writeln('min=',min,' ','max=',max);
for j:=1 to 5 do
begin
for i:=1 to 5 do
begin
if j=k then
write(a[i,j]:2,' ');
end;
end;
a[3,1]:=p;
a[3,1]:=a[n,m];
a[n,m]:=p;
for j:=1 to 5 do
begin
for i:=1 to 5 do
begin
write(a[i,j]:2,' ');
end;
writeln;
end;
writeln;

readln;
end.


--------------------
Лучше ужасный конец, чем ужасы без конца...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 13.02.2005 18:57
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Код
uses crt;
const n=5;
var x:array[1..n,1..n] of integer;
   i,j,max,min,t:integer;
   nfind:integer;
   imax,jmax:integer;

Begin
  clrscr;
  randomize;
  for i:=1 to n do
   begin
      for j:=1 to n do
       begin
          x[i,j]:=random(11);
          write(x[i,j]:2);
          write(' ');
       end;
      writeln;
   end;

   min:=x[1,1];
   nfind:=1;

    for i:=2 to n do
     if x[i,i]<min then
      begin
         min:=x[i,i];
         nfind:=i;
      end;

   writeln;
   writeln('nfind=',nfind);

  max:=x[1,1];
  imax:=1;
  jmax:=1;
  for i:=1 to n do
   for j:=1 to n do
    if x[i,j]>max then
     begin
        imax:=i;
        jmax:=j;
        max:=x[i,j]
     end;
  t:=x[imax,jmax];
  x[imax,jmax]:=x[1,3];
  x[1,3]:=t;

  for i:=1 to n do
   begin
      for j:=1 to n do
       begin
          write(x[i,j]:2);
          write(' ');
       end;
      writeln;
   end;
  readln;
  end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 13.02.2005 19:12
Сообщение #3


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


ребят, вы сошли сума? Почему такие большие коды?


Const
n=5;
Var
a:array[1..n,1..n] of integer;
i,j,min,max,si,sj:integer;
begin
{поиcк мин элемента}
Min:=a[1,1];
For i:=2 to n do if Min<a[i,i] then begin min:=a[i,i]; j:=i end;
{выводим строку с мин. элементом}
For i:=1 to n do write(a[j,i],' ');
{Ищем макс. элемент }
max:=0;
For i:=1 to n do for j:=1 to n do
begin
 If a[i,j]>max then begin si:=i; sj:=j; max:=a[i,j] end;
end;
{меняем a[1,3] на max}
min:=a[1,3];
a[1,3]:=max;
a[si,sj]:=min;
end.

p.s. я нарушил правила, и не проверял прогу, если что, считайте, что я просто хотел продемонстрировать алгоритм. smile.gif

Ввод данных я не стал реализовывать, это элементарно...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.02.2005 19:14
Сообщение #4


Гость






Цитата(Аделина @ 13.02.05 17:39)
Нужно определить min элемент главной диагонали, и поменять местами max элемент с a[1,3], ещё вывести строку где находится min.

Уточните, пожалуйста: max во всей матрице или max в главной диагонали...
 К началу страницы 
+ Ответить 
klem4
сообщение 13.02.2005 19:19
Сообщение #5


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Если во всей матрице то решение мое или Oleg_z'a.
Тока у меня полное а у него выч.часть :P


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 13.02.2005 19:22
Сообщение #6


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Между прочим, давать полные коды плохо - тогда тот, кому помогают совсем думать перестанет, и это буцдет медвежья услуга... На сурсах вообще запрещено давать полные коды- volvo свидетель.... smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Аделина
сообщение 13.02.2005 20:24
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Женский

Репутация: -  0  +


Спасибки!!!
Oleg_Z: не в моем случае, я ещё только в 10 классе, а в школе требуют обьяснять каждую буковку. А чё такое clrscr? И ещё, как текст с форматированием извлечь из паскаля? я просто, заменила .pas на .txt надо попробовать на .dos <_<
А счет того какой максимум не знаю, скорее всего всей програмки, хотя если будет нужно думаю смогу сделать.

Сообщение отредактировано: Аделина - 13.02.2005 20:31


--------------------
Лучше ужасный конец, чем ужасы без конца...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 13.02.2005 20:27
Сообщение #8


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


clrscr - очитска экрана.
writeln('nfind=',nfind) вывод на кэран 'nfind=' и занчения перменной nfind

p.s. а в вашем случае как раз это обязательно - что бы вы сами думали!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Аделина
сообщение 14.02.2005 19:17
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Женский

Репутация: -  0  +


Цитата(Oleg_Z @ 13.02.05 20:27)
clrscr - очитска экрана.
writeln('nfind=',nfind) вывод на кэран 'nfind=' и занчения перменной nfind

p.s. а в вашем случае как раз это обязательно - что бы вы сами думали!

:nono: Какое значение? Выводится номер строки, присвоенной раньше nfind:=i, нужно где-то в цикле выводить a[i,j]. А вот clrscr очь хороший оператор, мне его очь не хватало :flowers: . и ещё не подскажите ли, зачем нужно uses crt?
Выяснила: мне нужен был max элемент главой диагонали. Программу сделала. :D
Код

Uses crt;
const n=5;
var a:array[1..n] of array[1..n] of word;
   i,j,min,max,imax,imin,k:word;
Begin
clrscr;
randomize;
for i:=1 to n do
begin
 for j:=1 to n do
  begin
  a[i,j]:=random(25);
  write(a[i,j]:2,' ');
  end;
 writeln;
end;
min:=a[1,1];
max:=a[1,1];
for i:=2 to n do
begin
if max<a[i,i] then
 begin
  max:=a[i,i];
  imax:=i;
 end;
if min>a[i,i] then
 begin
  min:=a[i,i];
  imin:=i;
 end;
end;
writeln;
For i:=imin to imin do
begin
 for j:=1 to n do
  begin
   write(a[i,j]:2,' ');
  end;
  writeln;
 end;
if a[1,1]=max then imax:=1;
writeln;
write('max',' ',max,' ','min',' ',min);
writeln;
writeln;
k:=a[3,1];
a[3,1]:=a[imax,imax];
a[imax,imax]:=k;
for i:=1 to n do
begin
 for j:=1 to n do
  begin
   write(a[i,j]:2,' ');
   end;
   writeln;
end;
readln;
end.

Ещё раз спасиб^ки, почерпнула некоторое количество информации,
ЗЫ: Oleg_Z, не хочу спорить, но мне полный код программы, очь помог, в изучении TP7. Ну, а вообще, конечно ты прав, респект.


--------------------
Лучше ужасный конец, чем ужасы без конца...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 14.02.2005 19:21
Сообщение #10


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


uses - подключение модулей (библиотек), которые содержат различные процедуры и.т.д

Вот например модуль CRT содержит процедуру clrscr , с которой ты уже знакома smile.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 14.02.2005 19:29
Сообщение #11


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


У тебя что-то не очень понятное там в коде...

Поиск максимума главной диоганали и замена [1,3] ->-<- max

Код

{var nf:integer;}

max:=x[1,1];
  nf:=1;
  for i:=2 to n do
   if x[i,i]>max then
    begin
       max:=x[i,i];
       nf:=i;
    end;
  t:=x[nf,nf];
  x[nf,nf]:=x[1,3];
  x[1,3]:=t;


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 14.02.2005 19:33
Сообщение #12


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
Какое значение? Выводится номер строки

А номер строки, хранящийся в переменной, это уже не значение этой перменной? smile.gif

Цитата
Oleg_Z, не хочу спорить, но мне полный код программы, очь помог, в изучении TP7. Ну, а вообще, конечно ты прав, респект.

Еще бы он не помог! smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 14.02.2005 19:41
Сообщение #13


Гость






klem4
Ну почему же вас так тянет делать лишнее в программах?
Код
max_ix := 1;
for i := 2 to n do
 if x[max_ix, max_ix] < x[i, i] then max_ix := i;


и все, макс. элемент главной диагонали найден, не нужно никаких лишних переменных...
 К началу страницы 
+ Ответить 

Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 6:46
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"