Вопрос № 183150: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Помогите мне решить 3 задачи, но они должны быть решены в такой форме: 1) Постановка; 2) Алгоритмизация; 3) Формализация; 4) Сама программа. Пожалуйста сделайте и распишите, та...
Вопрос № 183150:
Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Помогите мне решить 3 задачи, но они должны быть решены в такой форме: 1) Постановка; 2) Алгоритмизация; 3) Формализация; 4) Сама программа. Пожалуйста сделайте и распишите, так же как указано в этих пунктах(которые выше)!!!Пожалуйста сделайте и распишите, так же как указано в этих пунктах(которые выше)!!! Ну вот и сами задачи: 1) Найти площадь круга, вписанного в треугольник с заданными сторонами.
2) Вычислить число
и месяц в невисокосном году по номеру дня.
3) Вычислить сумму кодов всех символов, которые в цикле вводятся с клавиатуры до нажатия на клавишу ESC.
Задание 1. 1. Постановка задачи. Требуется найти площадь круга, вписанного в треугольник. Входные данные: длины сторон a,b,c типа real; выходные данные: площадь круга s типа real. Ограничения: Стороны строго положительны, сумма двух любых сторон больше третьей 2. Формализация. Полупериметр p=(a+b+c)/2 Радиус вписанной окружности r= √(p(p-a)(p-b)(p-c)/p) Площадь вписанной окружности s = pir2
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;
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.