Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ работа с матрицами

Автор: Schumi 10.04.2007 22:50

Ребята, помощь нужна, очень.
Учительница ничего не объясняет, а хочет чтобы мы все делали, да еще и я болел много, всего усвоить не удалось.
Надо решить 2 задачи:

Код
Дан массив N*N. Заполнить его случайными числами и отобразить симметрично главной диагонали.

и
Код
Дан массив 10*10, заполнить случ. числами. Упорядочить его по возрастанию и транспанировать его.

Заранее премного благодарен.

С уважением,Schumi.

З.Ы. Да и сдавать завтра, поэтому надо позарез.

Автор: мисс_граффити 10.04.2007 22:58

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

Автор: Schumi 10.04.2007 23:08

Извините, я новенький и не знал, что тут все так.
Первую я тока заполнил массив, а как отобразить по диагонали не знаю.
А со второй вообще не получается unsure.gif
Пожалуйста помогите.

З.Ы. Еще раз извините. Впредь не повториться.

Автор: мисс_граффити 11.04.2007 0:33

отобразить симметрично относительно главной - это так, например:
1 2 3
4 5 6
7 8 9
после преобразования:
1 4 7
4 5 8
7 8 9
?

тогда смотри, какие элементы на какие заменяются (по индексам):
1,1 1,2 1,3
2,1 2,2 2,3
3,1 3,2 3,3

1,2 -> 2,1
1,3 -> 3,1
2,3 -> 3,2
i,j ->j,i для половины матрицы (найди, как изменяются i и j)

закономерность сохранится и для массивов других размеров (лишь бы был квадратным).
теперь сможешь реализовать?

Автор: Schumi 11.04.2007 0:34

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

Автор: мисс_граффити 11.04.2007 0:37

А в чем проблема написать, если ты это все знаешь?

Автор: Schumi 11.04.2007 0:51

это знаю, а как написать нет.
как индексы заменить?
Можете помочь?

Автор: мисс_граффити 11.04.2007 2:04

a[i,j]:=a[j,i] 

осталось определить границы циклов. но это ты сказал, что и так знаешь.

Автор: Schumi 11.04.2007 2:09

Я знаю главную теорию, а писать проги не умею. mega_chok.gif
Вот в чем проблема. unsure.gif

Автор: КМА 11.04.2007 2:32

Цитата
Я знаю главную теорию, а писать проги не умею.
Вот в чем проблема


*ROFL*

Что значит знаю главную теорию? Если ты знаешь как это записать, то в чем проблема? Программы писать - это пожалуй и есть теория, а написанная программа это уже практика. Твоя задача чисто теоретическая.

Посатараюсь объяснить по-русски.

 
buf:=a [i, j]; {сохраняем значение в перменной такого же типа что и массив}
a[i, j]:=a[j, i]; {меняем элементы местами}
a[j, i]:=buf; {т. к. элемент массива с индексами i, j, уже хранит нужное значение элемента с индексом j, i,
то мы пользуемся ранее заведенной перменной buf в которой и
храниться начальное значение элемента с номером i, j}



Теперь тебе сверху осталось только добавить


for i:= .. to .. do
for j:= .. to .. do
begin
{сюда включаешь обмен}
end;



Вместо .. ты поставишь границы для циклов.

Автор: Schumi 11.04.2007 2:35

У нас как раз практическая, т.к. училка завтра заставит написать в паскаль и показать, что все работает.
А можешь целиком написать?
от program....до end?

Плиз.
Заранее благодарен.

Добавлено через 11 мин.
Пожалуйста, если щас есть время, помогите написать программы до утра.
В 8 утра мне уходить.

Очень надо.

Заранее Спасибо.
С уважением,Schumi.

Автор: мисс_граффити 11.04.2007 3:01

Schumi, у тебя же уже есть заполнение. Так что все составные части ты имеешь... Потратив 5 минут, получишь готовую работающую программу.

КМА, насколько я понимаю, в первом задании (в отличие от второго) идет не обмен, а замена. То есть буферная переменная не нужна.

Автор: КМА 11.04.2007 3:04

Цитата
У нас как раз практическая, т.к. училка завтра заставит написать в паскаль и показать, что все работает.
А можешь целиком написать?
от program....до end?


Честное слово, не в моих правилах приводить полные решения (получается что я решаю эту задачу, а не ты, мне от этого толку никакого да и тебе пользы нет), т. к. задача действительно не сложная, и основные моменты я объяснил (где как правило у новичков бывают ошибки), я сам еще в школе учусь и преподаватели у меня тоже не ласковые, да и объясняют порой так, будто сами с собой разговаривают, но ничего, разобраться же можно. Почитай книжечки, почерти схемки.

Реально, когда прошли тему "Массивы", то такие задачи щелкались за 5 минут (это базовый уровень). И ты сможешь. Когда основная часть назреет, тогда пожалуйста, приводи код, а мы (я точно) скажем где ошибка Главное разобраться. Почитай FAQ здесь действительно много стоящего, я думаю большинство ответов ты все же найдешь. Поищи в интернете книги по Паскалю.

Уважаемая администрация, простите за флуд, постараюсь больше так не делать.

Автор: Schumi 11.04.2007 11:06

Цитата
получается что я решаю эту задачу, а не ты, мне от этого толку никакого да и тебе пользы нет

польза бы была, особенно от первой задачи(