– Составить алгоритм решения задачи с алгоритмического языка и с блок-схем, используя конструкцию линейного алгоритма: вычислить периметр и площадь прямоугольного треугольника по длинам двух его катетов.
А) 1. const x0=0; xk=pi; h=pi/2; var x,y:real; i:integer; begin x:=x0-h; for i:=0 to round((xk-x0)/h) do begin x:=x+h; y:=0.5*x+sqr(sin(x)); writeln(x:5:2,' ',y:6:4); end; end.
2. const x0=0; xk=pi; h=pi/2; var x,y:real; i:integer; begin x:=x0-h; while x<xk do begin x:=x+h; y:=0.5*x+sqr(sin(x)); writeln(x:5:2,' ',y:6:4); end; end.
3. const x0=0; xk=pi; h=pi/2; var x,y:real; i:integer; begin x:=x0-h; repeat x:=x+h; y:=0.5*x+sqr(sin(x)); writeln(x:5:2,' ',y:6:4); until x>=xk; end.
Результат: 0.00 0.0000 1.57 1.7854 3.14 1.5708
б) var x,y:real; begin readln(x); y:=(3-sin(2*x))*cos(x/3); writeln('y = ',y:6:4); if y<0 then writeln('Функция отрицательна') else if y>0 then writeln('Функция положительна') else writeln('Функция = 0'); end.
begin // а) writeln('Результаты сдачи экзамена:'); var a:=ArrRandom(15,2,5); a.Println; // генерируем и выводим массив оценок var k:=a.Where(x->x=2).Count; // подсчитываем количество двоек writeln('Не сдали экзамен: ',k,' чел. Это ',100*k/15:4:1,'%'); // выводим на эран результаты // б) writeln('Данные по продаже компьютеров:'); var b:=ArrRandom(7,5,20); b.Println; // генерируем и выводим результаты продаж writeln('По возрастанию:'); b.Sorted.Println; // сортируем по возрастанию и выводим end.
Пример: Результаты сдачи экзамена: 3 3 3 2 4 3 4 4 3 3 5 2 2 5 5 Не сдали экзамен: 3 чел. Это 20.0% Данные по продаже компьютеров: 16 20 16 14 5 18 16 По возрастанию: 5 14 16 16 16 18 20
const x0=0; xk=pi; h=pi/2;
var x,y:real; i:integer;
begin
x:=x0-h;
for i:=0 to round((xk-x0)/h) do
begin
x:=x+h;
y:=0.5*x+sqr(sin(x));
writeln(x:5:2,' ',y:6:4);
end;
end.
2.
const x0=0; xk=pi; h=pi/2;
var x,y:real; i:integer;
begin
x:=x0-h;
while x<xk do
begin
x:=x+h;
y:=0.5*x+sqr(sin(x));
writeln(x:5:2,' ',y:6:4);
end;
end.
3.
const x0=0; xk=pi; h=pi/2;
var x,y:real; i:integer;
begin
x:=x0-h;
repeat
x:=x+h;
y:=0.5*x+sqr(sin(x));
writeln(x:5:2,' ',y:6:4);
until x>=xk;
end.
Результат:
0.00 0.0000
1.57 1.7854
3.14 1.5708
б)
var x,y:real;
begin
readln(x);
y:=(3-sin(2*x))*cos(x/3);
writeln('y = ',y:6:4);
if y<0 then writeln('Функция отрицательна')
else if y>0 then writeln('Функция положительна')
else writeln('Функция = 0');
end.
Пример:
1.5
y = 2.5089
Функция положительна
begin
// а)
writeln('Результаты сдачи экзамена:');
var a:=ArrRandom(15,2,5); a.Println; // генерируем и выводим массив оценок
var k:=a.Where(x->x=2).Count; // подсчитываем количество двоек
writeln('Не сдали экзамен: ',k,' чел. Это ',100*k/15:4:1,'%'); // выводим на эран результаты
// б)
writeln('Данные по продаже компьютеров:');
var b:=ArrRandom(7,5,20); b.Println; // генерируем и выводим результаты продаж
writeln('По возрастанию:');
b.Sorted.Println; // сортируем по возрастанию и выводим
end.
Пример:
Результаты сдачи экзамена:
3 3 3 2 4 3 4 4 3 3 5 2 2 5 5
Не сдали экзамен: 3 чел. Это 20.0%
Данные по продаже компьютеров:
16 20 16 14 5 18 16
По возрастанию:
5 14 16 16 16 18 20