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

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


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

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

Выпуск № 376
от 21.05.2007, 19:35

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


Вопрос № 87055: Как пишется программа для преобразования целых и дробных чисел из десятеричной в шестнадцатеричную?...
Вопрос № 87065: Люди добрые! Пожалуйста, помогите с курсовиком! Естественно я не жду целого курсовика, мне нужны только советы и помощь в написании процедур. Вся сложность для меня заключается в том, что курсач делается через динамику. Спасибо всем заранее....
Вопрос № 87098: Даны три точки на плоскости: A B C, которые образуют треугольник, и точка D... определить где находится эта точка D (внутритреугольника, на границе или вне треугольника)?...
Вопрос № 87099: дан текст, выделите в тексте заданные фрагменты (символов текста должно быть 512)...
Вопрос № 87216: Здравствуйте! Помогите пожалуйста дописать курсовик. Надо выполнить операции над матрицей. В 6-м зада нии надо сформировать вектор, элементы которого представляют собой суммы элементов строк и столбцов, пеерсекающихся на соответствующих элементах глав...

Вопрос № 87.055
Как пишется программа для преобразования целых и дробных чисел из десятеричной в шестнадцатеричную?
Отправлен: 15.05.2007, 20:21
Вопрос задал: Evglena (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

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

Для перевода целой части десятичного числа в шестнадцатеричное, необходимо брать остатки от деления этого числа на 16 в обратном порядке. Перевод дробной части, напротив, производится умножением на 16 (в ответ берутся целые части, а умножение продолжается только для дробной). Можете почитать об этом вот здесь:
http://www.distant-school.ru/modules.php?name=Articles&pa=showarticle&articles_id=146
А код - в приложении. Удачи!

Приложение:

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

Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 15.05.2007, 21:17
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое, программа работает.


Вопрос № 87.065
Люди добрые! Пожалуйста, помогите с курсовиком! Естественно я не жду целого курсовика, мне нужны только советы и помощь в написании процедур. Вся сложность для меня заключается в том, что курсач делается через динамику. Спасибо всем заранее.

Приложение:

Отправлен: 15.05.2007, 21:25
Вопрос задал: Ведерников Кирилл Игоревич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Verena
Здравствуйте, Ведерников Кирилл Игоревич!

Напишу о динамической памяти. Для работы с ней в Паскале есть функции выделения и освобождения, например, getmem (переменная, размер) в паре с freemem (переменная, размер) или new (переменная) в паре с dispose (переменная). Вы не указали, в каком виде должны храниться данные статистики в программе. Тут два наиболее подходящих пути: динамический массив и динамический список. Для примера я написала Вам реализацию добвления нового элемента в динамический массив и добавдения элемента, освобождения и нахождения максимального для динамического списка.
С динамическим массивом вся работа происходит также, как с обычным, только обращение к элементу будет не просто a[i], а a^[i]. Дополнительное действие - только однократное (обычно) выделение памяти и освобождение памяти, как првило, в конце программы. Так что написать какие-либо функции с использование такого массива Вам не должно быть сложным. Реализацию динамического массива смотрите в приложении, пример 1 (процедуру написала из расчёта, что массив и размерность буфера будут глобальными переменными (доступными во всей программе, не переопределёнными в процедурах), а вообще можете добавить их параметры, если использовать глобальные переменные не будете).
Список - динамическая структура данных, где каждый элемент содержит ссылку на следующий (однонаправленный линейный список), а последний содержит ссылку на nil. Каждый элемент списка - запись, состоящая из минимум двух полей - информации и ссылки. Пример реализации списка в приложении, пример 2.
Подробней о списках можете почитать тут:
http://declic.narod.ru/ossio/files/book/part_7_2.html
О динамической памяти вообще и о работе с динамическими массивами можете почитать тут:
http://declic.narod.ru/ossio/files/book/part_7_1.html#head
По обоим ссылкам содержатся и теория, и примеры.
Удачи!

Приложение:

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

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


Вопрос № 87.098
Даны три точки на плоскости: A B C, которые образуют треугольник, и точка D... определить где находится эта точка D (внутритреугольника, на границе или вне треугольника)?
Отправлен: 16.05.2007, 00:54
Вопрос задал: Антон Ульянов (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: Устинов С.Е.
Здравствуйте, Антон Ульянов!

Решение задачи в приложении, здесь попробую объяснить теорию.
Точка D лежит между A и B (на одном отрезке) если AD+DB=AB.
Проверив не лежит ли точка одном из отрезков можно говорить о том лежит она на границе или нет.
Теперь насчет вхождения внутрь треугольника. Так как сначала обработаем вариант, что точка лежит на границе, то остается только варианты "вне треугольника" или "внутри треугольника".
Предлагаю проверить на "вхождение в треугольник" таким образом (другого просто что-то в голову не приходит): Если сумма площадей треугольников ABD+ACD+BCD равна площади треугольника ABC, то точка D лежит внутри треугольника ABC. (постройте рисунок и Вы увидите, почему так).
Теперь насчет функций: функция Ras(T1,T2:dot):real; возвращает длину отрезка между точками T1 и T2 (параметрами функции).
Функция S(T1,T2,T3:dot):real; возвращает площадь треугольника с вершинами T1, T2, T3.
Ну а теперь самое "странное".
Я верху объяснял про проверку принадлежности точки отрезку, и вроде-бы логично было бы проверять так (с учетом введенных функций): если (Ras(A,D)+Ras(D,B))=Ras(A,B) то D лежит на одном отрезке с A и B между ними (т.е. принадлежит границе).
Но в Паскале точность переменной real составляет 11-12 знаков. И поэтому сумма двух отрезков не всегда получится равной третьему, даже если эти три точки лежат "так как надо".
Для этого я ввел понятие константу "точность", и проверяю не (Ras(A,D)+Ras(D,B))=Ras(A,B) (что равносильно (Ras(A,D)+Ras(D,B)-Ras(A,B)=0) а Ras(A,D)+Ras(D,B)-Ras(A,B) < toch - т.е. меньше какой-то погрешности.
Аналогичная ситуация с подсчетом сумм площадей.

Будут вопросы - обращайтесь.

Удачи!

Приложение:

---------
Ждешь квалифицированного ответа? Задай правильно вопрос!

Ответ отправил: Устинов С.Е. (статус: Практикант)
Ответ отправлен: 16.05.2007, 02:11

Отвечает: Gh0stik
Здравствуйте, Антон Ульянов!

Я предлагаю рассматривать такое произведение:
f(A,B,D)*f(A,C,D)*f(C,B,D), где соответственно f(Q,W,E) - значение функции, которая построена на точках Q,W, в точке E.
Путем несложных вычислений можно заметить что f(A,B,D)*f(A,C,D)*f(C,B,D) < 0 - тогда и только тогда когда точка D лежит внутри треугольника ABC. Если f(A,B,D)*f(A,C,D)*f(C,B,D) > 0 - это говорит о том что точка лежит вне треугольника.

Остается рассмотреть только при f(A,B,D)*f(A,C,D)*f(C,B,D) = 0, это может быть достигнуто только тогда когда точка D лежит на одной из прямой на которых построен треугольник. Остается определить лежит ли данная точка на границе треугольника, решение этой проблемы я позаимствовал у эксперта Устинова С.Е. (находил сумму площадей соответствующих составляющих треугольников и если она была равна площади всего треугольника, следовательно точка лежит на границе), но использовал формулу, которую предложил в мини-форуме эксперт Сухомлин Кирилл Владимирович.

Good Luck!!!

Приложение:

---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 17.05.2007, 01:42


Вопрос № 87.099
дан текст, выделите в тексте заданные фрагменты (символов текста должно быть 512)
Отправлен: 16.05.2007, 00:57
Вопрос задал: Антон Ульянов (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Устинов С.Е.
Здравствуйте, Антон Ульянов!

Решение в приложении.
Немного прокомментирую: m - количество символов текста (для проверки работы не обязательно набирать 512 символов - можно и меньше, но будет работать и для более чем 512 символов).
Массив v будет хранить результат, который нужно вывести на экран. Его размер равен 3*m по тем соображениям, что можно "слову" присвоить один символ и только этим символом забить весь текст, тогда каждому введенному символу должно будет соответствовать 3 символа для вывода.

Удачи!

Приложение:

---------
Ждешь квалифицированного ответа? Задай правильно вопрос!

Ответ отправил: Устинов С.Е. (статус: Практикант)
Ответ отправлен: 16.05.2007, 03:49


Вопрос № 87.216
Здравствуйте! Помогите пожалуйста дописать курсовик. Надо выполнить операции над матрицей. В 6-м задании надо сформировать вектор, элементы которого представляют собой суммы элементов строк и столбцов, пеерсекающихся на соответствующих элементах главной диагонали. (исходная матрица=матрица полученная в 4 пункте, в коде все пункты выделены)
в 7 задании, рассматривая строки и столбцы исходной матрицы как векторы, вычислить скалярное произведение строки и столбца, на пересечении которых находится наибольший по модулю элемент (предполагается, что такой элемент единственный)

или хотя бы алгоритм напишите. Заранее спасибо

Приложение:

Отправлен: 16.05.2007, 19:10
Вопрос задал: Мирослав (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

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

Смотрите приложение.
Удачи!

Приложение:

---------
И только наступив на грабли мы преобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 17.05.2007, 12:31


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100

В избранное