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

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


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

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

Выпуск № 449
от 25.09.2007, 10:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 248, Экспертов: 53
В номере:Вопросов: 3, Ответов: 8


Вопрос № 102645: Помогите пожалуйста написать программы на Pascal: 1) Определить является ли число n простым? 2) Покупатель должен заплатить а кассу S руб. У него имеются 1,2,5,10,50,100,500 руб. Сколько купюр разного достоинства отдаст покупатель, если он на...
Вопрос № 102686: Уважаемые эксперты! Помогите, пожалуйста, решить 3 задачи: 1. Дана непустая последовательность натуральных чисел, оканчивающаяся числом, являющимся факториалом некоторого натурального числа. Определить в этой последовательности порядковый номер ч...
Вопрос № 102696: Задана матрица M (N,M). Упорядочить по возврастанию элементы каждой строки матрицы N<=15, M<=10. ...

Вопрос № 102.645
Помогите пожалуйста написать программы на Pascal:
1) Определить является ли число n простым?
2) Покупатель должен заплатить а кассу S руб. У него имеются 1,2,5,10,50,100,500 руб. Сколько купюр разного достоинства отдаст покупатель, если он начинает платить с самых крупных?
3) Дан треугольник на координатной плоскости (х1у1,х2у2,х3у3) нужно определить попадает ли точка ху в треугольник или нет,лежит ли она на одной из его сторон, где она на ходится относительно треугольника.
Отправлен: 19.09.2007, 15:04
Вопрос задал: Leeryhomer (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Дмитрий С.
Здравствуйте, Leeryhomer!
вот набросал функцию - она вернёт результат ИСТИНА если число простое или ЛОЖЬ в противном случае

Приложение:

---------
Наши программисты самые программистые программисты!..

Ответ отправил: Дмитрий С. (статус: 4-ый класс)
Ответ отправлен: 19.09.2007, 15:54

Отвечает: _killhunter_
Здравствуйте, Leeryhomer!
Решение задачи 2
1) определяем кол-во n1 купюр достоинством 500 (n1 := S div 500)
2) вычитаем из суммы S сумму уплаченую купюрами достоинством 500
3) аналогично определяем кол-во купюр остального достоинства.

Решение задачи 3
Проще всего задача решается через площади.
Для решения нам понадобится функция вычисляющая площадь треугольника через координаты вершин. Я использую векторное произведение, при желании его можно заменить другим способом вычисления.
Пусть точка A1 имеет координаты (x1,y1), A2(x2,y2), A3(x3,y3), A(x,y)
1) вычисляем площадь треугольника A1 A2 A3.
2) последовательно вычисляем площади треугольников A A1 A2, A A1 A3, A A2 A3.
3) если какая-то из этих площадей (например А А1 А2) будет 0, то А лежит на стороне треугольника А1 А2 А3 (в примере на стороне А1 А2).
4) вычитаем из площади треуг. А1 А2 А3 площади 3-х других треугольников и смотрим на знак разности.
5) если разность меньше нуля, то точка А вне треугольника
6) если разность 0, то точка А внутри или на границе треугольника.

Приложение:

Ответ отправил: _killhunter_ (статус: 1-ый класс)
Ответ отправлен: 19.09.2007, 17:56

Отвечает: Багиев Александр
Здравствуйте, Leeryhomer!
1. Пробегаешь от 2 до trunc(sqrt(n)) и смотришь, делится ли на эти числа n. Если хоть на какое-либо делится, то n - составное, иначе - простое.
2. см. в приложении
3. Проведи от данной точке к вершине особый отрезок и смотри, находится ли он в меньшем из углов, составленный из соседних отрезков треуг. (угол внутри треуг. не может быть больше или равен 180). Если это верно для всех трех особых отрезков, то точка - внутри треуг., иначе если особый отрезок лежит на прямой, содержащий одну из сторон треуг., но и данная точка лежит на этой стороне, иначе - вне треугольника.

Приложение:

Ответ отправил: Багиев Александр (статус: 2-ой класс)
Ответ отправлен: 19.09.2007, 18:37

Отвечает: Tribak
Здравствуйте, Leeryhomer!
вот 2ая задача:
program www;
uses crt;
var
s,i,j:integer;
begin
write('s=');
readln(s);
i:=0;
while s>=500 do
begin
s:=s-500;
inc(i);
end;
while s>=100 do
begin
s:=s-100;
inc(i);
end;
while s>=50 do
begin
s:=s-50;
inc(i);
end;
while s>=10 do
begin
s:=s-10;
inc(i);
end;
i:=i+s;
writeln(i);
readln;
end.
Ответ отправил: Tribak (статус: 3-ий класс)
Ответ отправлен: 19.09.2007, 20:39


Вопрос № 102.686
Уважаемые эксперты! Помогите, пожалуйста, решить 3 задачи:
1. Дана непустая последовательность натуральных чисел, оканчивающаяся числом, являющимся факториалом некоторого натурального числа. Определить в этой последовательности порядковый номер числа, имеющего максимальную сумму цифр.
2. Дано натуральное число n. Вычислить значение выражения 11+22+33+44+…+(n-1)n-1+nn.
3. Составить алгоритм, в соответствии с которым с клавиатуры вводится последовательность различных чисел, признак окончания ввода – число, оканчивающееся нулём. Определить, сколько чисел было введено между максимальным и минимальным числами.
Заранее огромное спасибо! Swallow.
Отправлен: 19.09.2007, 20:35
Вопрос задала: Ласточка (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

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

Смотрите приложение 3-и задачи.
1)программа сделана с учетом, что последовательность натуральных чисел, оканчивающаяся числом, являющимся факториалом
2)размер массива можно сделать и больше,
учитывается если n=67, то последнее число будет 6767;
3)возможно нужно корректировать строку writeln(abs(y-z-1));
Удачи!

Приложение:

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

Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 19.09.2007, 22:32
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо за решение, Константин Николаевич! Мне важно было его знать. Вы мне очень помогли.

Отвечает: Багиев Александр
Здравствуйте, Ласточка!
1. Не ясно в задании сколько чисел и какая это последовательность.
2.
11+22+33+...+nn =
= 11 * (1+2+...+9) +
+ 101 * (10+11+...+99) +
+ 1001 * (100+101+..+999) + ...
и так далее в зависимости от n.

Далее, для любых a<b верно:
a+(a+1)+(a+2)+...+(b-1)+b = (b-a+1)*(b-a+2)/2, значит:

11+22+33+...+nn =
= 11 * (9*10/2) +
+ 101 * (90*91/2) +
+ 1001 * (900*901/2) + ...

Например, пусть n=777, тогда
11+22+33+...+777777 =
= 11 * (9*10/2) +
+ 101 * (90*91/2) +
+ 1001 * ( (777-100+1)*(777-100+2)/2 ) =
= 495 + 413595 + 230411181 = 230825271

Как видно, формула зависит от количества разрядов в числе n.
3. Просто записывать числа в массив A, пока не встретится число n такое, что (n mod 2=0).
Далее найдем позиции imin и imax соответственно минимального и максимального числа min и max:

Приложение:

Ответ отправил: Багиев Александр (статус: 2-ой класс)
Ответ отправлен: 19.09.2007, 23:47
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо за помощь, Багиев Александр!


Вопрос № 102.696
Задана матрица M (N,M). Упорядочить по возврастанию элементы каждой строки матрицы N<=15, M<=10.
Отправлен: 19.09.2007, 22:14
Вопрос задал: Сидоров, Александр, Иванович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Verena
Здравствуйте, Сидоров, Александр, Иванович!
Сортировку проводим самым обычным методом - методом пузырька. Каждыйэлемент в строке сравнивается с последующими, и если находится меньший - меняем их местами. Таким образом элементы постепенно "всплывают" нужном порядке. Чтобы отсортировать по срокам, необходимо три цикла - один по строкам и два по столбцам. Решение в приложении.
Удачи!

Приложение:

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

Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 19.09.2007, 22:44
Оценка за ответ: 5

Отвечает: Артём1983
Здравствуйте, Сидоров, Александр, Иванович!
В нежеприведённой программе в первом цикле осуществляется заполнение матрицы случайными числами и вывод на экран во втором цикле происходит сортировка а в третьем вывод на экран отсортированного массива.

Приложение:

Ответ отправил: Артём1983 (статус: 3-ий класс)
Ответ отправлен: 21.09.2007, 18:38
Оценка за ответ: 3


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

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

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

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

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


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


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

В избранное