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

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

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

 
 Ответить  Открыть новую тему 
> Матрицы, min и max.
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Женский
Реальное имя: Надежда

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


Очень нужно решить контрольную в универ по турбо паскалю. Я его учила 2 года назад, но почти ничего не помню. Помоги пожалуйста. Буду очень презнательна.
Вот задачка:
Задана матрица А[M/M] действительных чисел. Поменять местами максимальный и минимальный элементы главной диагонали. Вывести преобразованную матрицу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


1. найти минимум и максимум, запомнить их индексы. точнее, запомнить одно число, т.к. элементы на главной диагонали имеют индексы вида [1,1] [2,2] и т.д.
2. поменять местами.
на каком этапе проблемы?


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





Группа: Пользователи
Сообщений: 7
Пол: Женский
Реальное имя: Надежда

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


Минимум и максимум вроде нашла, а вот как поменять их местами возникла проблемка! Подскажи пожалуйста что делать?? [quote name='мисс_граффити' date='29.11.2006 20:30' post='81201']
give_rose.gif Буду очень благодарна!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


DopPerem:=a[mini,mini];
a[mini,mini]:=a[maxi,maxi];
a[maxi,maxi]:=DopPerem;


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





Группа: Пользователи
Сообщений: 7
Пол: Женский
Реальное имя: Надежда

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


Пыталась найти минимальный и максимальный, вроде написала, но ничего не получается. Не могу собрать все в кучу. Матрица не вводиться. Пишет введите 'n' а дальше данные вводятся в столбик. И все.
Что мне делать??? unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


или можно без ввода доп. переменной:

a[max;max]:=a[max+min;max+min]
a[min;min]:=a[max-min;max-min]
a[max;max]:=a[max-min;max-min]

Цитата(nadia @ 29.11.2006 21:48) *

Пыталась найти минимальный и максимальный, вроде написала, но ничего не получается. Не могу собрать все в кучу. Матрица не вводиться. Пишет введите 'n' а дальше данные вводятся в столбик. И все.
Что мне делать??? unsure.gif


for i:=1 to M do
for j:=1 to M do
readln(a[i,j]);

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


--------------------
Ignoscito saepe alteri, nunquam tibi.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 7
Пол: Женский
Реальное имя: Надежда

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


Написала вот такую программу:

Program xxx;
Uses crt;
Var a:array[1..10,1..10] of integer;
i,j,min,imin,jmin,max,n,m: integer;
BEGIN
ClrScr;
Write ('m=');
ReadLn (m);
Write ('n=');
ReadLn (n);
for i:= 1 to m do
for j:= 1 to n do
Read (a[i,j]);
begin
max:= a[1,1];
for i:= 1 to m do
for j:= 1 to n do
if (i=j) and (a[i,j]>max) then
max:= a[i,j];
end;
begin
min:=a[1,1]; imin:=1; jmin:=1;
for i:= 1 to m do
for j:= 1 to n do
if (i=j) and (a[i,j]<min) then
begin
min:=a[i,j];
imin:= i;
jmin:= j;
end;
end;
WriteLn ('max', max);
WriteLn ('min', min);
End.


А вот как сделать так чтоб она правильно работала не могу понять??? Подскажите пожалуйста в чем ошибка и как правильно вывести НОВУЮ ПРЕОБРАЗОВАННУЮ МАТРИЦУ! И как сделать чтоб матрица имела вид матрицы а не одного длинного столбца. Помогите очень прошу!!!! Заранее большое спасибо!
give_rose.gif

Теги !!!

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 7
Пол: Женский
Реальное имя: Надежда

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


[quote name='мисс_граффити' date='29.11.2006 20:30' post='81201']
Теперь коечто изменила и получилось, что минимальный и максимальный элементы находятся правильно, а вот как поменять их местами - с этим большущая проблемка. Помогите пожалуйста, скажите где проблемка.
Program xxx;
Uses crt;
Var a:array[1..10,1..10] of integer;
i,j,min,imin,jmin,max,n: integer;
BEGIN
ClrScr;
Write ('n=');
ReadLn (n);
for i:= 1 to n do
for j:= 1 to n do
Read (a[i,j]);
begin
max:= a[1,1];
for i:= 1 to n do
for j:= 1 to n do
if (i=j) and (a[i,j]>max) then
max:= a[i,j];
end;
begin
min:=a[1,1]; imin:=1; jmin:=1;
for i:= 1 to n do
for j:= 1 to n do
if (i=j) and (a[i,j]<min) then
begin
min:=a[i,j];
imin:= i;
jmin:= j;
end;
end;
WriteLn ('max', max);
WriteLn ('min', min);
End.
no1.gif

Теги !!!

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





Группа: Пользователи
Сообщений: 7
Пол: Женский
Реальное имя: Надежда

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


Program xxx;
Uses crt;
Var a:array[1..10,1..10] of integer;
i,j,min,imin,jmin,max,n: integer;
BEGIN
ClrScr;
Write ('n=');
ReadLn (n);
for i:= 1 to n do
for j:= 1 to n do
Read (a[i,j]);
begin
max:= a[1,1];
for i:= 1 to n do
for j:= 1 to n do
if (i=j) and (a[i,j]>max) then
max:= a[i,j];
end;
begin
min:=a[1,1]; imin:=1; jmin:=1;
for i:= 1 to n do
for j:= 1 to n do
if (i=j) and (a[i,j]<min) then
begin
min:=a[i,j];
imin:= i;
jmin:= j;
end;
end;
WriteLn ('max', max);
WriteLn ('min', min);
End.

Написала вот что. Максимальный и минимальный элементы находятся, а вот чтоб поменять их местами - с этим оказалась проблемка. Помогите кто нибудь пожалуйста!!!
М
nadia, при вставлении программных текстов, пожалуйста, используй теги!
Видишь над окном ввода окошко выбора со словом CODE? Выдели свою программу блоком, ткни туда и выбери, что надо. Lapp

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


nadia, во-первых, правила форума к тебе тоже относятся.
Зачем создавать новую тему?
И при размещении программ пользуйся тэгами - невозможно же читать!
как менять местами элементы - я, по-моему, вполне четко написала. что непонятно?

Цитата
a[max;max]:=a[max+min;max+min]
a[min;min]:=a[max-min;max-min]
a[max;max]:=a[max-min;max-min]

blink.gif
допустим, максимальный элемент на позиции 1,1
минимальный на 3,3
a[3,3]:=a[4,4];
a[1,1]:=a[-2,-2]
a[3,3]:=a[-2,-2]
YnickYM, что ты этим хотел сказать?
или max - это не индекс максимального, а он сам? тогда еще интереснее...

Сообщение отредактировано: мисс_граффити -


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


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Я причесал твою прогу, чтоб читалась нормально.
Убрал несколько begin/end'ов.
При нахождении минимума ты запоминала индексы, а при нахождении максимума - нет sad.gif. Я добавил.
В конце два очевидных оператора решают твою проблему.. smile.gif
Все добавления снабжены комментариями.
Uses
crt;

Var
a:array[1..10,1..10] of integer;
i,j,min,imin,jmin,max,imax,jmax,n: integer; {imax and jmax added}

BEGIN
ClrScr;
Write ('n=');
ReadLn (n);
for i:=1 to n do for j:=1 to n do Read(a[i,j]);
max:=a[1,1]; imax:=1; jmax:=1; {2 statements added}
for i:=1 to n do for j:=1 to n do if (i=j)and(a[i,j]>max) then begin
max:=a[i,j];
imax:=i; {Added}
jmax:=j; {Added}
end;
min:=a[1,1]; imin:=1; jmin:=1;
for i:=1 to n do for j:=1 to n do if (i=j)and(a[i,j]<min) then begin
min:=a[i,j];
imin:=i;
jmin:=j;
end;
WriteLn ('max', max);
WriteLn ('min', min);
{Below the min and max interchange goes}
a[imin,jmin]:=max;
a[imax,jmax]:=min
End.

PS
В названии темы, пожалуйста, не пиши просьбы помочь - здесь 99.9% просьбы о помощи. Пиши краткое описание задачи. Успехов!


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


lapp, а ничего, что в соседней теме мы решаем ЭТУ же задачу, выложенную nadia?

2 мисс_граффити: извини, не заметил. Спасибо за наводку. Объединяю темы.
2 nadia: предупреждение!! angry.gif

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


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


Гость






Цитата(YnickYM @ 29.11.2006 20:58) *

или можно без ввода доп. переменной:

a[max;max]:=a[max+min;max+min]
a[min;min]:=a[max-min;max-min]
a[max;max]:=a[max-min;max-min]

А вылететь за границы матрицы не боишься? если max - min < 0, например?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14





Группа: Пользователи
Сообщений: 7
Пол: Женский
Реальное имя: Надежда

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


Огромное Вам человеческое спасибо!!! give_rose.gif Благодаря Вам я сделала свою контрольную в универ. Классно когда есть умные люди, которые разбираются в программировании. И что я нашла ваш сайт!!! Я от всей души вам благодарна. Еще раз БОЛЬШОЕ СПАСИБО!!!!!!!!! good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

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

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


Извиняюсь, чушь написал.

Вот мой вариант программы

Цитата

Uses
crt;

Var
a:array[1..10,1..10] of integer;
i,j,min,max,n: integer;
BEGIN
ClrScr;
Write ('n=');
ReadLn (n);
for i:=1 to n do for j:=1 to n do
begin
Read(a[i,j]);
if j=n then writeln; end;
max:=1;
for i:=1 to n do for j:=1 to n do if a[i,i]>a[max,max] then max:=i;
min:=1;
for i:=1 to n do for j:=1 to n do if a[i,i]<a[min,min] then min:=i;
i:=a[min,min];
a[min,min]:=a[max,max];
a[max,max]:=i;
for i:=1 to n do //вывод преобразованной матрицы
for j:=1 to n do
begin
write(a[i,j],' ');
if j=n then writeln;
end;
readln;
End.


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


--------------------
Ignoscito saepe alteri, nunquam tibi.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


замечательная программка.
скажи мне честно, ты ее ПОТЕСТИРОВАТЬ не пробовал?
как думаешь, имеет ли смысл строчка:
 if a[i,i]<a[max,max] then min:=i;

понимаешь, что меньше максимального элемента не только минимальный, но и многие другие?
a[max,max]:=a[min;min];
a[max,max]:=a[min,min];

пишем сценарий для мультфильма про Телепузиков? Это они все по два раза повторяют...
for i:=1 to n do for j:=1 to n do Read(a[i,j]);
for i:=1 to n do //вывод заданной матрицы
for j:=1 to n do
begin
write(a[i,j],' ');
if j=n then writeln;
end;

Сразу при вводе выводить нельзя? Или тоже принципиально отделяешь ввод от вывода -чтобы не запутаться?
i:=a[min,min];

и зачем ты это делаешь? потом же все равно затираешь значение, хранящееся в i
продолжить или хватит?


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


Новичок
*

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

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


Цитата(мисс_граффити @ 30.11.2006 21:29) *

замечательная программка.
скажи мне честно, ты ее ПОТЕСТИРОВАТЬ не пробовал?

Честно говоря, нет.
Цитата
как думаешь, имеет ли смысл строчка:
 if a[i,i]<a[max,max] then min:=i;

понимаешь, что меньше максимального элемента не только минимальный, но и многие другие?

Исправлено
Цитата
a[max,max]:=a[min;min];
a[max,max]:=a[min,min];

пишем сценарий для мультфильма про Телепузиков? Это они все по два раза повторяют...

Пардон, опечатка. Имелось ввиду:
i:=a[min,min];
a[min,min]:=a[max,max];
a[max,max]:=i;
Цитата
for i:=1 to n do for j:=1 to n do Read(a[i,j]);
for i:=1 to n do //вывод заданной матрицы
for j:=1 to n do
begin
write(a[i,j],' ');
if j=n then writeln;
end;

Сразу при вводе выводить нельзя? Или тоже принципиально отделяешь ввод от вывода -чтобы не запутаться?
Исправлено.
Цитата

продолжить?

Если вас не затруднит


--------------------
Ignoscito saepe alteri, nunquam tibi.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


так... вывод массива ты вообще убрал - ну правильно, пусть пользователь тренирует память. подумаешь, 100 чисел запомнить.

зачем 4 цикла:
max:=1; 
for i:=1 to n do for j:=1 to n do if a[i,i]>a[max,max] then max:=i;
min:=1;
for i:=1 to n do for j:=1 to n do if a[i,i]<a[min,min] then min:=i;

, когда достаточно 1?
и зачем начинать с 1, если можно с 2?

в общем, Правила:
Цитата
7. Проверяйте программы перед тем, как разместить их на форуме!!!


З.Ы. На будущее - делай человеческие отступы. Невозможно ж читать код!

Сообщение отредактировано: мисс_граффити -


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


Новичок
*

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

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


Цитата
так... вывод массива ты вообще убрал - ну правильно, пусть пользователь тренирует память. подумаешь, 100 чисел запомнить.

for i:=1 to n do for j:=1 to n do
begin
Read(a[i,j]);
if j=n then writeln; end;

какой вывод?

del

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


--------------------
Ignoscito saepe alteri, nunquam tibi.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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