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

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

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

 
Closed Topic Открыть новую тему 
> Матрица, Поменять max c элементом a[1,3]
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


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

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

Репутация: -  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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






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

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


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

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

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


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


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


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

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

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


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


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


Новичок
*

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

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


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

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


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


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

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

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


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

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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


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

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

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


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

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

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

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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 





- Текстовая версия 10.05.2024 19:38
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name