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

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


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

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

Выпуск № 315
от 26.02.2007, 21:05

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


Вопрос № 76337: Здравствуйте. Дана матрица и надо вычислить определитель и сделать "обращение матрицы" с помощью LU-метода. Я так понимаю, что матрицу надо разложить в виде А=LU, а потом отдельно вычилить определитель матрицы L, матрицы U и затем их пе...
Вопрос № 76433: Здравствуйте, эксперты. У меня проблема с графикой в Pascal 7.0, а точнее программки вылетают когда в программе имеются части с графикой с ссылкой на ошибку процессора, процессор - Sempron....
Вопрос № 76445: Как составить алгоритм таблица умножения 1-9 цифр...
Вопрос № 76715: Здравствуйте уважаемые эксперты. Нужна помощь. Создается бинарное упорядоченное дерево, заполняющееся псевдослучайными числами. Затем осуществляется его вывод при обходе дерева симметричным порядком. Код программы в приложении. Вопрос: ка...
Вопрос № 76732: Написать фрагмент программы, который распечатывает таблицу A(MxN) по спирали против часовой стрелки, начиная с правого верхнего угла...

Вопрос № 76.337
Здравствуйте.
Дана матрица и надо вычислить определитель и сделать "обращение матрицы" с помощью LU-метода. Я так понимаю, что матрицу надо разложить в виде А=LU, а потом отдельно вычилить определитель матрицы L, матрицы U и затем их перемножить - это и будет искомый определитель, так? Точно также с обращением матрицы(т.е. это метод поиска обратной матрицы насколько я понимаю), - разложить ее на две LU, найти обратные к L и U, а затем перемножить их и получится обратная матрица к изначальной. Правильно ли я рассуждаю?
Отправлен: 18.02.2007, 21:09
Вопрос задал: Sager (статус: Практикант)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Яна
Здравствуйте, Sager!
Определитель каждой из этих матриц будет равен произведению диагональных элементов. У одной из этих двух матриц определитель будет равен 1.
(LU)^(-1)=U^(-1)*L^(-1)
Ответ отправила: Яна (статус: 7-ой класс)
Ответ отправлен: 18.02.2007, 21:56


Вопрос № 76.433
Здравствуйте, эксперты.
У меня проблема с графикой в Pascal 7.0, а точнее программки вылетают когда в программе имеются части с графикой с ссылкой на ошибку процессора, процессор - Sempron.
Отправлен: 19.02.2007, 15:04
Вопрос задал: Chinique (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Яна
Здравствуйте, Chinique!

= = =
Перенесено в мини-форум вопроса.
= = =
Климова М.
Ответ отправила: Яна (статус: 7-ой класс)
Ответ отправлен: 19.02.2007, 16:21

Отвечает: Присяжнюк Анатолий Васильевич
Здравствуйте, Chinique!
Если можно, приведите пример с кодом - будет проще что-то конкретное и существенное сказать и посоветовать...
Ответ отправил: Присяжнюк Анатолий Васильевич (статус: 1-ый класс)
Ответ отправлен: 19.02.2007, 17:50

Отвечает: Bingo
Здравствуйте, Chinique!
Интересно бы было узнать, программа вылетает после инициализации(initgraph) или же во время? Если же во время инициализации, возможно, программа не может найти подходящий драйвер. Попробуйте установить директорию, где хранятся дрова во время инициализации

var Driver, mode:integer;
...
begin
initgraph(driver,mode,'C:Bpgi');//дрова должны хранится в папке BGI, ищите ее.
...
end.

Если же не помогло, то не помешало бы указать код ошибки, с которой вылетает программа. На мой взгляд, проц не должен влиять на графический режим.
И еще, как совет, установите лучше Free Pascal. Это тот же Borland, но намного лучше. Идет он как и под Dos, так и под Win32. В частности для работы с графическим режимом у него 65536 цветов, а у Turbo и Borland'a - 16. Ну и наверно в нем Вы сможете нормально работать в графическом режиме.
---------
Все получится!
Ответ отправил: Bingo (статус: 1-ый класс)
Ответ отправлен: 19.02.2007, 18:35


Вопрос № 76.445
Как составить алгоритм таблица умножения 1-9 цифр
Отправлен: 19.02.2007, 16:04
Вопрос задала: Papikyan, Lusine, Georg / Lusine (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Verena
Здравствуйте, Papikyan, Lusine, Georg / Lusine!
Надо сделать два вложенных цикла от 1 до 9, произведение счётчиков и будет таблицей умножения
Программно выглядит так:
for i:=1 to 9 do
for j:=1 to 9 do
writeln (i, ' x ', j, ' = ', i*j);
---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 5-ый класс)
Ответ отправлен: 19.02.2007, 16:37

Отвечает: KDV
Здравствуйте, Papikyan, Lusine, Georg / Lusine!

Ответ удален, по одной из указанных причин
- неверный;
- вредный;
- не соответствует вопросу
и помещен для обсуждения в ветку форума "О деятельности экспертов и работе портала/Удаленные ответы для обсуждения".

=*=Gh0stik=*=
---------
Делай, что должно, и будет что будет
Ответ отправил: KDV (статус: 3-ий класс)
Ответ отправлен: 19.02.2007, 16:47

Отвечает: Bingo
Здравствуйте, Papikyan, Lusine, Georg / Lusine!
Это сделать довольно-таки просто. Достаточно использовать вложенный цикл. Чтобы таблица получилась "ровной", нужно отвести 2 позиции под ответ(см приложение).

Приложение:

---------
Все получится!

Ответ отправил: Bingo (статус: 1-ый класс)
Ответ отправлен: 19.02.2007, 18:16

Отвечает: Артём1983
Здравствуйте, Papikyan, Lusine, Georg / Lusine!
for i:=1 to 9 do
begin
for j:=1 to 9 do
begin
writeln(i,'*',j,'=',i*j);
end
end;
Ответ отправил: Артём1983 (статус: 1-ый класс)
Ответ отправлен: 19.02.2007, 18:41

Отвечает: Яна
Здравствуйте, Papikyan, Lusine, Georg / Lusine!
Цикл по первому множителю, цикл по второму множителю, внутри последнего цикла вывод на печать.
Ответ отправила: Яна (статус: 7-ой класс)
Ответ отправлен: 19.02.2007, 19:04


Вопрос № 76.715
Здравствуйте уважаемые эксперты. Нужна помощь.
Создается бинарное упорядоченное дерево, заполняющееся псевдослучайными числами. Затем осуществляется его вывод при обходе дерева симметричным порядком.
Код программы в приложении.
Вопрос: как сюда добавить функцию нахождения максимальной глубины этого дерева?
Например эту: function deptah(T:PTree):integer;
var r,l:integer;
begin
if T=nil then depth:=0
else
begin
l:=depth(T^.left);
r:=depth(T^.right);
if l>r then depth:=l+1
else depth:=r+1;
end
end;
Или какой-нибудь другой предложите.
Перепробовал все. Помогите плз. Заранее спасибо!

Приложение:

Отправлен: 21.02.2007, 10:06
Вопрос задал: Попов Евгений (статус: 3-ий класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Яна
Здравствуйте, Попов Евгений!
Название функции deptah
а в тексте depth.
Это просто опечатка. Если ее исправить, возможно, заработает.
Ответ отправила: Яна (статус: 7-ой класс)
Ответ отправлен: 21.02.2007, 10:16

Отвечает: Tek
Здравствуйте, Попов Евгений!
Классический способ - обход дерева в глубину:
function MaxDepth(pt curUzl, WORD curDepth):WORD
var leftDepth, rigthDepth:WORD;
begin
{ вот хоть убей не помню в бинарном дереве может ли быть один лист у узла или нет}
if (^curUzl.lson=nil AND (^curUzl.rson=nil) then
begin MaxDepth:= curDepth+1; return; end;
if (^curUzl.lson=nil) then
begin MaxDepth:= MaxDepth(^curUzl.rson, curDepth+1); return; end;
if (^curUzl.rson=nil) then
begin MaxDepth:= MaxDepth(^curUzl.lson, curDepth+1); return; end;

leftDepth := MaxDepth(^curUzl.lson, curDepth+1);
rightDepth := MaxDepth(^curUzl.rson, curDepth+1);
if leftDepth > rightDepth then
MaxDepth := leftDepth;
else
MaxDepth := rightDepth;
end;

Первый вызов функции (из основной программы) осуществляется с параметрами: указатель на корень и ноль (нулевая текущая глубина)
ЗЫ: за синтаксис, если он неверен где, прошу пардона - паскаль давно не юзал. :)

---------
WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 10-ый класс)
Ответ отправлен: 21.02.2007, 10:31

Отвечает: Verena
Здравствуйте, Попов Евгений!

Функцию надо поменять под ваше описание типов:

function depth (T:pt):integer;
var r,l:integer;
begin
if T=nil then depth:=0
else
begin
l:=depth(T^.lson);
r:=depth(T^.rson);
if l>r then depth:=l+1
else depth:=r+1;
end
end;

Я проверила, всё работает.
---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 5-ый класс)
Ответ отправлен: 21.02.2007, 15:45


Вопрос № 76.732
Написать фрагмент программы, который распечатывает таблицу A(MxN) по спирали против часовой стрелки, начиная с правого верхнего угла
Отправлен: 21.02.2007, 11:39
Вопрос задал: Wansdy (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Яна
Здравствуйте, Wansdy!
Первый цикл по номеру диагонали
Второй цикл по номеру элемента на диагонали
Внутри цикла персчитать первых два номера на координаты элемента в массиве
Ответ отправила: Яна (статус: 7-ой класс)
Ответ отправлен: 21.02.2007, 14:56

Отвечает: Verena
Здравствуйте, Wansdy!

Алгоритм обхода по спирали смотрите в приложении. Здесь элементы просто выводятся на экран в порядке хода спирали.

Приложение:

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

Ответ отправила: Verena (статус: 5-ый класс)
Ответ отправлен: 21.02.2007, 18:31


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.45 beta от 20.02.2007
Яндекс Rambler's Top100

В избранное