Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

Народное голосование ПРЕМИИ РУНЕТА-2007!
Голосуем за RusFAQ.ru >>

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 492
от 18.11.2007, 21:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 243, Экспертов: 46
В номере:Вопросов: 2, Ответов: 5


Вопрос № 109204: Уважаемые эксперты нужна ваша помощь в решении задачи В квадратном массиве (в константе задаётся имеется в виду матрица должна получится 3 на 3 или 4 на 4), выделить четыре четверти, ограниченные главной и побочной диагонали (без учёта элеме...
Вопрос № 109236: А постоянным клиентам скидки есть? Ну реально легкая задача, но что-то я туплю. Дана матрица, найти максимальный элемент в каждой строке. Ввод данных можно не писать....

Вопрос № 109.204
Уважаемые эксперты нужна ваша помощь в решении задачи

В квадратном массиве (в константе задаётся имеется в виду матрица должна получится 3 на 3 или 4 на 4), выделить четыре четверти, ограниченные главной и побочной диагонали (без учёта элементов расположенных на диагоналях) верхнюю, нижнюю, левую и правую. Поменять местами элементы верхней и нижней четверти.
Отправлен: 13.11.2007, 13:14
Вопрос задал: Андрей Логинов (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Verena
Здравствуйте, Андрей Логинов!
Понятия главной и побочной диагонали имеют смысл только в квадратных матрицах и выражаются простыми формулами.
Главная диагональ: элементы на ней имеют индексы i=j, элементы над ней - j > i, под ней - j < i .
Побочная диагональ: элементы на ней имеют индексы i+j=n+1, элементы над ней - i+j < n+1, под ней - i+j > n+1 .
Всё это Вы можете проверить опытным путём, и убедитесь, что это так. При таком раскладе разделить матрицу на четверти проще простого:
Верхняя: j > i and i+j < n+1
Нижняя: j < i and i+j > n+1
Левая: j < i and i+j < n+1
Правая: j > i and i+j > n+1
Не знаю, что в Вашей задаче подразумевалось под "выделить четыре четверти" - если надо было вывести элементы этих четвертей на экран, Вы легко сможете сделать это, воспользовавшись в цикле этими формулами. Ну а код, меняющийи местами элементы верхней и нижней четверти смотрите в приложении. Здесь кроме вышесказанного надо заметить, что соответствующий элементу верхней четверти элемент нижней четверти будет иметь тот же самый индекс по столбцу и индекс по строке, выражающийся формулой (n-i+1).
Удачи!

Приложение:

---------
Эта история - не для истории, понимаешь?

Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 13.11.2007, 18:42

Отвечает: Артём1983
Здравствуйте, Андрей Логинов!
Смотрите код программы в приложении. Программа только обозночает главную и побочную диагонали.

Приложение:

---------
Программирование - дело Путное!

Ответ отправил: Артём1983 (статус: 6-ой класс)
Ответ отправлен: 14.11.2007, 19:22


Вопрос № 109.236
А постоянным клиентам скидки есть? Ну реально легкая задача, но что-то я туплю. Дана матрица, найти максимальный элемент в каждой строке. Ввод данных можно не писать.
Отправлен: 13.11.2007, 16:14
Вопрос задал: Артем Глушков (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Стома С.С.
Здравствуйте, Артем Глушков!

Задайте матрицу размером в количество столбцов maxArray: array[1..M] of Real;

присвойте первые элементы столбцов исходной матрице NxM isxArray: array[1..N,1..M] of Real
for j:= 1 to M do
maxArray[j]:= isxArray[1, j];
и найдем максимум в каждом столбце
for j:= 1 to M do
for i:= 1 to N do
if maxArray[j] < isxArray[i, j] then maxArray[j]:= isxArray[i,j]
Ответ отправил: Стома С.С. (статус: 2-ой класс)
Ответ отправлен: 13.11.2007, 16:59
Оценка за ответ: 5
Комментарий оценки:
Даже если это решение не очень рационально мне оно будет полезно. Для общего развития так сказать.

Отвечает: Gh0stik
Здравствуйте, Артем Глушков!

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

Посему привожу свое решение, в котором генерируется матрица из произвольных чисел из диапазона [0; 33). А потом просто "пробегаем" матрицу посторочно - находим максимум и сразу выводим его на экран.

const n=3; m=4;
var a:array [1..n,1..m] of real;
   mx:real;
   i,j:integer;
begin
   randomize;
   for i:=1 to n do
   begin
     for j:=1 to m do
     begin
       a[i,j]:=random(33);
       write(a[i,j]:6:1);
     end;
     writeln;
   end;
   for i:=1 to n do
   begin
     mx:=a[i,1];
     for j:=2 to m do
       if mx < a[i,j] then mx:=a[i,j];
     writeln(mx:4:1);
   end;
end.


Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 13.11.2007, 17:28
Оценка за ответ: 5
Комментарий оценки:
Я даже не знаю какой комментарий написать. Еще раз спасибо!

Отвечает: Зиновьев Дмитрий Владимирович
Здравствуйте, Артем Глушков!

for i := 0 to n - 1 do
begin
max := a[0, i];
for j := 1 to m - 1 do
if max < a[i, j] then max := max < a[i, j]; // Если ищет не по строкам, а по столбцам,
//значит мы по разному выводим на экран, значит нужно поменять в массиве i и j
//местами, и в строчке № 3 тоже
WriteLN(max, ' ');
end;
Ответ отправил: Зиновьев Дмитрий Владимирович (статус: 6-ой класс)
Ответ отправлен: 13.11.2007, 22:20
Оценка за ответ: 5
Комментарий оценки:
И вам спасибо.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.62.1 от 14.11.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное