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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

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

Лучшие эксперты данной рассылки

Орловский Дмитрий
Статус: Академик
Рейтинг: 4844
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2630
∙ повысить рейтинг »
Роман Селиверстов
Статус: Академик
Рейтинг: 2482
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Pascal (Паскаль)

Номер выпуска:1179
Дата выхода:17.05.2011, 14:30
Администратор рассылки:Boriss (Академик)
Подписчиков / экспертов:175 / 174
Вопросов / ответов:1 / 1

Вопрос № 183150: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Помогите мне решить 3 задачи, но они должны быть решены в такой форме: 1) Постановка; 2) Алгоритмизация; 3) Формализация; 4) Сама программа. Пожалуйста сделайте и распишите, та...



Вопрос № 183150:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Помогите мне решить 3 задачи, но они должны быть решены в такой форме:
1) Постановка;
2) Алгоритмизация;
3) Формализация;
4) Сама программа.
Пожалуйста сделайте и распишите, так же как указано в этих пунктах(которые выше)!!!Пожалуйста сделайте и распишите, так же как указано в этих пунктах(которые выше)!!!
Ну вот и сами задачи:
1) Найти площадь круга, вписанного в треугольник с заданными сторонами.

2) Вычислить число и месяц в невисокосном году по номеру дня.

3) Вычислить сумму кодов всех символов, которые в цикле вводятся с клавиатуры до нажатия на клавишу ESC.

Отправлен: 12.05.2011, 14:02
Вопрос задал: Посетитель - 372181 (Посетитель)
Всего ответов: 1
Страница вопроса »


Отвечает lamed (Академик) :
Здравствуйте, Посетитель - 372181!

Задание 1.
1. Постановка задачи. Требуется найти площадь круга, вписанного в треугольник. Входные данные: длины сторон a,b,c типа real; выходные данные: площадь круга s типа real. Ограничения: Стороны строго положительны, сумма двух любых сторон больше третьей
2. Формализация.
Полупериметр p=(a+b+c)/2
Радиус вписанной окружности r= √(p•(p-a)•(p-b)•(p-c)/p)
Площадь вписанной окружности s = pi•r2

3. Блок-схема


4.Программа
Код:
// Найти площадь круга, вписанного в треугольни
 к с заданными сторонами
// Pascal-ABC
// lamed, RFPRO, 05.2011
var
a,b,c: real; // стороны
p: real; // полупериметр
r: real; // радиус вписанного круга
s: real; // площадь вписанного круга
begin
writeln('Введите стороны треугольника:');
write('a=');
readln(a);

write('b=');
readln(b);

write('c=');
readln(c);

if (a<=0) or (b<=0) or (c<=0) or (a+b<=c) or (a+c<=b) or (b+c<=a) then
writeln('Треугольник нельзя построить')
else
begin
p := (a+b+c)/2;
r := sqrt(p*(p-a)*(p-b)*(p-c)/p);
s := pi*r*r;
writeln('Площадь вписанного круга =', s:0:3);
end;
end.


Задание 2.
1. Постановка задачи. Требуется вычислить число и месяц в невисокосном году по номеру дня. Входными данными является номер дня в году DayInYear типа integer. Выходными данными являются номер месяца i и номер дня в месяце day типа integer. Число месяцев и число дней в месяцах считаются справочными. Ограничения. Номер дня должен лежать в диапазоне от 1 до 365.
2. Формализация. Для определения месяца по номеру дня нужно сравнить этот номер с числом дней, накопленных к началу месяца, то есть должно быть выполнено условие
Imin:s=∑1iДнейВМесяцеi>=НомерДняВГоду
ДеньВМесяце = НомерДняВГоду - s

3. Блок-схема


4. Программа.
Код:
// Вычислить число и месяц в невисокосном году по номеру дня.
// P ascal-ABC.
// RFPRO. lamed. Kovrov-city. 13.05.2011

const n=12;
var
months: array[1..n] of integer; // массив чисел дней в месяце
day: integer; // День в месяце
DayInYear: integer; // День с начала года
s: integer; // Число дней до начала текущего месяца
i: integer; // Счетчик цикла
begin
// Заполнение массива дней
for i:= 1 to n do
if i=2 then
months[i] := 28
else if i in [4,6,9,11] then
months[i] := 30
else
months[i] := 31;

readln(DayInYear);
if (DayInYear < 1) or (DayInYear > 365) then
writeln('Ошибочная дата')
else
begin
// Проход по массиву и получения месяца и дня
s:= 0;
i:= 1;
while (DayInYear>s+months[i]) do // если день не в текущем месяце
begin
s:= s+months[i];
i:= i+1;
end;

day := DayInYear - s;
writeln('Дата ', day, '.', i);
end;
end.


Удачи!

Ответ отправил: lamed (Академик)
Ответ отправлен: 13.05.2011, 17:26
Номер ответа: 267136
Россия, Ковров
Тел.: +79107793141

Оценка ответа: 5

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 267136 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

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

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное