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

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


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

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

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

Выпуск № 500
от 27.11.2007, 01:35

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


Вопрос № 110439: Здраствуйте!!!! Помогите, пожалуйста, с лабой.... Никак не могу решить. А задача заключается в следующем: составить подпрограмму вычисления К-й степени матрицы размером n x n элементов, используя подпрограмму умножения двух матриц. За...
Вопрос № 110443: Здравсвуйте эксперты, пара вопросов: 1) вещественный тип- это ведь extended? 2)почему пишет что для его компиляции нужен 8087 процессор?...
Вопрос № 110449: Здраствуйте всезнайки! Пожалуйста, в кого есть время напишыте программу на паскале: дано два массивы. Получить из них с помощью слития массив (с уже сортированными числами) массив С, елементы, что совпадают вставлять один раз. Подсчитать количество е...
Вопрос № 110451: Здраствуйте Уважаемые эксперты, помогите решить задачу: Создать связный список, написать процедуру, которая выбрасывает с списка найменьшый елемент и выводит на экран список без найменьшего елемента. Список заполняем сами, сразу указываем сколько...
Вопрос № 110463: Здравствуйте уважаемые эксперты! Помогите плз решить задачу: Пусть даны координаты трех точек на плоскости. Если они мо- гут быть вершинами прямоугольного треугольника, вычислите его площадь. Заранее всем спасибо!...

Вопрос № 110.439
Здраствуйте!!!!
Помогите, пожалуйста, с лабой....
Никак не могу решить.
А задача заключается в следующем: составить подпрограмму вычисления К-й степени матрицы размером n x n элементов, используя подпрограмму умножения двух матриц.
Заранее благодарен!!!!
Отправлен: 21.11.2007, 19:48
Вопрос задал: Sergey1 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Vassea
Здравствуйте, Sergey1!
Программа в приложении.
Для хранения матрицы я использовал массив (type TA)
Процедура FF -- производит умножение матрицы
Параметры A и B
в А хранится первый множитель и одновременно помещается результат
в B хранится второй множитель
Чтобы умножить одну матрицу на другу, мы должны элементы каждой строки умножить на соответствующие элементы каждого столбца.
циклы с i и j дают все комбинации строк и столбцов (их номера)
После чего мы z-ый элемент i-той строки умножаем на z-Ый элемент j-того столбца

Процедура VV -- для вывода матрицы

Программа
I) вводим размер матрицы n (n -- глобальная переменная)
II) вводим саму матрицу по строкам
III) вводим степень К. Если захотите то уже сами сделаете проверку К, чтоьы оно было больше 2

K-1 раз умножаем матрицу X на исходную матрицу
В первый раз X содержит матрицу А, а потом результат возведения матрицы А в i-ю степень

Выводим результат.
Будут вопросы, задавайте.

Приложение:

Ответ отправил: Vassea (статус: 9-ый класс)
Ответ отправлен: 23.11.2007, 21:26


Вопрос № 110.443
Здравсвуйте эксперты, пара вопросов:
1) вещественный тип- это ведь extended?
2)почему пишет что для его компиляции нужен 8087 процессор?
Отправлен: 21.11.2007, 20:18
Вопрос задал: Tribak (статус: 4-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Tribak!

Все вещественные типы (из хелпа Pascal):
Real | 2.9e-39..1.7e38 | 6
Single | 1.5e-45..3.4e38 | 4

Double | 5.0e-324..1.7e308 | 8
Extended | 3.4e-4932..1.1e4932 | 10

Comp | -9.2e18..9.2e18 | 8
Turbo Pascal поддерживает две модели генерации объектного кода для чисел с плавающей запятой :
- Программная поддержка чисел с плавающей запятой {$N-}
- Аппаратная (80x87) поддержка чисел с плавающей запятой {$N+}

Сопроцессор(FPU-Floatins Point Unit) х87 может работать только с данными 8 и 10 байт, его использование ускоряет время работы программы, уменьшает длину кода. По умолчанию включана программая поддержка. Она только тем и занимается, что перед каждым использованием вещественного числа(Real | Single) добавляет код который переводит их в 8(10) байтное представление т.е. в числа (Double | Extended) и после этого обрабатывается сопроцессором, а после использования преводит результат обратно. А это лишний код, лишнее время.
Удачи!
---------
И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 21.11.2007, 20:57
Оценка за ответ: 5

Отвечает: Маренич Владимир
Здравствуйте, Tribak!
В настройках компилятора надо разрешить генерацию команд сопроцессора.
У меня обычно установлены:
меню "Options"
Compiler...
Numeric Processing
[x] 8087/80287
[x] Emulation

Если не поможет, то пишите в мини-форум - будем разбираться подробнее.
Ответ отправил: Маренич Владимир (статус: Студент)
Ответ отправлен: 22.11.2007, 00:41
Оценка за ответ: 5


Вопрос № 110.449
Здраствуйте всезнайки! Пожалуйста, в кого есть время напишыте программу на паскале: дано два массивы. Получить из них с помощью слития массив (с уже сортированными числами) массив С, елементы, что совпадают вставлять один раз. Подсчитать количество елементов в массиве С. Пожалуйста!!! И если можно с коментариями! СПАСИБО
Отправлен: 21.11.2007, 21:18
Вопрос задал: Н_и_к_о_л_а_й (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Verena
Здравствуйте, ЗВЕРЬ!
Применять здесь чистый алгоритм сортировки слиянием (из задания не очень ясно, необходимо это или нет) не слишком удобно, поэтому возьмём только его принцип. Чтобы результирующий массив сразу был отсортирован, мы сначала сортируем оба исходных массива, а потом производим слияние по следующему алгоритму: пишем в новый массив меньший элемент из текущих. Выглядеть это будет так:
А В С А В С A B C A B C (То есть из массивов А и В выбирается минимальный
1 2 3 2 1 3 4 1 5 4 1 элемент сверху (сначала) и записывается в С)
3 4 5 4 5 2 2
5 3
Реализация в приложении, комментарии помогут Вам разобраться.
Удачи!

Приложение:

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

Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 22.11.2007, 18:38
Оценка за ответ: 5
Комментарий оценки:
Спассибки! Точно и умело!!!


Вопрос № 110.451
Здраствуйте Уважаемые эксперты,
помогите решить задачу: Создать связный список, написать процедуру, которая выбрасывает с списка найменьшый елемент и выводит на экран список без найменьшего елемента. Список заполняем сами, сразу указываем сколько в нём елементов, затем вводим их. Помогите пожалуйста с кодом, т.к. я непредставляю сибе как это зделать, желательно побольше коментариев :)
Заранее спасибо.
Отправлен: 21.11.2007, 21:38
Вопрос задал: Станислав (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Verena
Здравствуйте, Станислав!
Про работу о списками рассказывалось уже тысячу раз, потому повторять не буду, а предложу ссылку, по которой можно почитать теорию и посмотреть примеры: ссылка. А реализация Вашей задачи в приложении, из комментариев будет понятно, что происходит, но только если иметь хоть общее представление о вопросе.
Удачи!

Приложение:

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

Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 22.11.2007, 19:22


Вопрос № 110.463
Здравствуйте уважаемые эксперты!

Помогите плз решить задачу:

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

Заранее всем спасибо!!!
Отправлен: 21.11.2007, 23:40
Вопрос задал: Игнатов Андрей Сергеевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Игнатов Андрей Сергеевич!

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

Код:
var x1,y1,x2,y2,x3,y3,d1,d2,d3,s:real;
begin
  write('x1=');read(x1);write('y1=');read(y1); {ввод данных}
  write('x2=');read(x2);write('y2=');read(y2);
  write('x3=');read(x3);write('y3=');read(y3);
  d1:=sqr(x1-x2)+sqr(y1-y2); {вычисляем квадраты длин соответствующих отрезков}
  d2:=sqr(x1-x3)+sqr(y1-y3);
  d3:=sqr(x2-x3)+sqr(y2-y3);
  if (d1+d2=d3) or (d2+d3=d1) or (d1+d3=d2) < font color=green>{непосредственно делаем проверку по Т. Пифагора, a2+b2=c2}
     then writeln('S=',(ord(d1+d2=d3)*d1*d2+ord(d2+d3=d1)*d2*d3+ord(d1+d3=d2)*d1*d3)/2:4:3); {выводим значение площади}
end.


Oстановимся подробнее на строке (я думаю, что она Вас повергла в шок :))):
(ord(d1+d2=d3)*d1*d2+ord(d2+d3=d1)*d2*d3+ord(d1+d3=d2)*d1*d3)/2

ord(d1+d2=d3) - эта запись возвращает значени 1, если d1+d2=d3 и 0 в противном случае.
соответственно при рассмотрении выражение ближе, видим что если выполняется хотябы одно условие - все остальные не выполняются. Для случая когда d1+d2=d3, получаем такую запись:
(1*d1*d2+0*d2*d3+0*d1*d3)/2 = d1*d2/2 (искомая площадь), аналогично и для других случаев.


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

Отвечает: Зиновьев Дмитрий Владимирович
Здравствуйте, Игнатов Андрей Сергеевич!
предположим, что вы храните координаты в переменных ax, ay, bx, by, cx, xy, если в массиве, думаю без проблем переделаете самостоятельно.
Все переменные имеют тип real;
//Находим длины сторон
a = sqrt(sqr(bx - cx) + sqr(by - cy));
b = sqrt(sqr(ax - cx) + sqr(ay - cy));
c = sqrt(sqr(bx - ax) + sqr(by - ay));
//Проверяем, существует ли треугольник
// и если да, то находим площадь
if (a+b > c) AND (a+c > b) and (b+c > a) then
begin
p := (a + b + c) / 2;
S := sqrt(p * (p - a) * (p - b) * (p - c));
WriteLn('Площадь треугольника = ', S);
end else
WriteLn('Треугольника не существует');
Ответ отправил: Зиновьев Дмитрий Владимирович (статус: 8-ой класс)
Ответ отправлен: 22.11.2007, 09:25


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

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

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

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

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


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


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

В избранное