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

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

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

 
 Ответить  Открыть новую тему 
> Задача на матрицу
Гость
сообщение 20.01.2006 15:47
Сообщение #1


Гость






Дана матрица размерности N*N, найти минимальный (максимальный) элемент, и заменить нулями элементы в строке и столбце, на пересечении которых расположен данный элемент.
А вот с эти разобраться не получается, подскажите пожалуйста...

На надо пихать в одну тему сто разных задач, перемещено

Сообщение отредактировано: klem4 - 20.01.2006 15:54
 К началу страницы 
+ Ответить 
klem4
сообщение 20.01.2006 15:53
Сообщение #2


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

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

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


Что конкретно н получается ? Не можешь найти мин. элемент ? Не можешь обнулить ? Для начала сходи сюда :
FAQ : Массивы, матрицы + воспользуйся поиском, задача решалась сотни раз.

Будут конкретные впросы, задавай.


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


Гость






Так я вроде в своей теме вопрос задавала smile.gif
Что не получается, все не получается sad.gif
Пробую найти миниммальный элемент, а вместо этого нахожу максимальный:
Код

program test1;
const n=3;
      m=3;
var
a : array[1..n, 1..m] of integer;
i,j,min : integer;
begin
writeln('Vvod elementov', n, 'x', m);
  min:=a[1,1];
  for i:=1 to n do
   for j:=1 to m do
  begin
   readln(a[i,j]);
   if min < a[i,j] then
   min:=a[i,j];
  end;
  writeln(min);
  readln;
end.


Как элементы заменить я вообще не представляю, как указать ту строку и столбец в которой мне надо заменять и как сказать, чтобы заменилось на 0 ???
 К началу страницы 
+ Ответить 
klem4
сообщение 20.01.2006 16:12
Сообщение #4


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

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

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


Во первых для решения этой задачи тебе надо искать не значение мин. элемента, а его координаты в матрице, чтобы после это обнулить соответствующую строку и столбец

поиск мин. элемента :


imin := 1;
jmin := 1;

for i := 1 to n do
for j := 1 to m do
if a[i,j] < a[imin,jmin] then begin
imin := i;
jmin := j;
end;

// теперь imin содержит искомую строку, которую надо обнулить, а jmin искомый столбец



Сообщение отредактировано: klem4 - 20.01.2006 16:13


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


Гость






Тоесть надо jmin=0 и imin=0 сделать и показать матрицу a[a,j] и ВСЕ ?
 К началу страницы 
+ Ответить 
klem4
сообщение 20.01.2006 16:21
Сообщение #6


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

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

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


Нет .. надо обнулить строку с номером imin, показываю как это делается, столбец сделаешь самостоятельно


(*
обнуление строк с номером imin
*)
for j := 1 to m do a[imin,j] := 0;



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


Гость






Но ведь и значение мин элемента тоже надо показать ???
 К началу страницы 
+ Ответить 
klem4
сообщение 20.01.2006 16:46
Сообщение #8


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

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

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


И что мешает ? writeln(a[imin, jmin]);

Настоятельно рекомендую взять лекции у одногруппников ...


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


Гость






Посмотрите пожалуйста:
Код
program test1;

const n=3; m=3;

var
a : array[1..n, 1..m] of integer;
i,j,sum,s,jmin,imin : integer;

begin
  writeln('Vvod elementov', n, 'x', m);
  imin := 1;
  jmin := 1;

  for i:=1 to n do
    for j:=1 to m do
     begin
       readln(a[i,j]);
     end;

  for i:=1 to n do
    begin
     writeln;
      for j:=1 to m do
      write(a[i,j]);
    end;

    writeln;

  if a[i,j] < a[imin,jmin] then
    begin
     imin := i;
     jmin := j;
    end;

  for j:=1 to m do
    a[imin,j]:=0;
  for i:=1 to n do
    a[i,jmin]:=0;

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


На нули меняется пересечение перdой строки первго столбца ???
И минимальный элемент мне так и не удалось вывести, выводится только наибольший sad.gif
 К началу страницы 
+ Ответить 
klem4
сообщение 20.01.2006 16:58
Сообщение #10


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

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

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


Посмотри, подправил :

program test1;

const n=3; m=3;

var
a : array[1..n, 1..m] of integer;
i,j,sum,s,jmin,imin : integer;

begin

writeln('Vvod elementov', n, 'x', m);

imin := 1;
jmin := 1;

for i:=1 to n do
for j:=1 to m do
begin
readln(a[i,j]);
if a[i,j] < a[imin, jmin] then begin
imin := i;
jmin := j;
end;
end;

for i:=1 to n do
begin
writeln;
for j:=1 to m do
write(a[i,j],' ');
end;

writeln;

for j:=1 to m do
a[imin,j]:=0;
for i:=1 to n do
a[i,jmin]:=0;

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


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


Гость






Цитата
На нули меняется пересечение перdой строки первго столбца ???
Это смотря какие данные ты вводишь... Говорили же неоднократно - приводите данные, на которых тестировалась программа !!!

klem4, так и будем полностью решать все время? dry.gif
 К началу страницы 
+ Ответить 
Гость
сообщение 20.01.2006 17:05
Сообщение #12


Гость






Все с нулями разобрались, кстати а чем я ошиблась...
И еще минимальное число так и не удалось вывести при написании элементарного
writeln(a[imin, jmin]) выводится 0, хотя мин - 1, а при writeln(a[i,j]) выводится максимум sad.gif
 К началу страницы 
+ Ответить 
volvo
сообщение 20.01.2006 17:08
Сообщение #13


Гость






Ты уже затерла минимальное значение нулем... Чтобы этого не происходило - замени
for j:=1 to m do
a[imin,j]:=0;
for i:=1 to n do
a[i,jmin]:=0;


на
  for j:=1 to m do
if j <> jmin then a[imin,j]:=0;
for i:=1 to n do
if i <> imin then a[i,jmin]:=0;

Больше ничего в программе не добавляй, все прекрасно отрабатывает...
 К началу страницы 
+ Ответить 
Alla
сообщение 20.01.2006 17:11
Сообщение #14


Гость






klem, Volvo, вы лучшие, СПАСИБО !!!
 К началу страницы 
+ Ответить 

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

 



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