Перевод кода с PABC - Turbo Pascal
Формулировка задачи:
Люди добрые, помоги пожалуйста. Написал 2 программы ( 2 программу писал не сам ) только сейчас узнал, что нужно написать на turbo pascal, но сколько ТП я скачивал, выдают несовместимость с системой.
Прошу, можете мои программы скинуть, на ТП?
Решение задачи: «Перевод кода с PABC»
textual
Листинг программы
function Arcsin (x : real) : real;
begin
Arcsin := Arctan(x/Sqrt(1-sqr(x)));
end;
function Power (number, exponent : real) : real;
begin
Power := Exp(exponent*Ln(number));
end;
var
x: Array [1..10] of real;
y: Array [1..10] of real;
a, b, n, i, k: integer;
h, y1min, y2min, y1max, y2max, sry, M, D: real;
dannye: text;
begin
writeln('y= (x^3)/((x[i]+1)*(x[i]+2)))+(arcsin(1-x[i])/(1-ln(x[i])^1/3))');
writeln('a:', ' b:', ' n:'); {// Ввод а, b, n}
read(a, b, n);
h := (b - a) / (n + 1); {// Нахождение h}
writeln('Массив x');
for i := 1 to (n) do
begin
x[i] := a + (i - 1) * h; {// Нахождение x[i]}
write( x[i]:10:3);
end;
writeln;
writeln;
writeln(' Массив y');
for i := 1 to (n) do
begin
{// Нахождение y[i]}
y[i] := (power(x[i], 3) / ((x[i] + 1) * (x[i] + 2)))
+ (arcsin(1 - x[i]) / (power(1 - ln(x[i]), 1 / 3)));
write(y[i]:10:3);
end;
writeln;writeln;
y1min := y[1];
y2min := y[2];
for i := 2 to (n) do
if y[i] < y1min then y1min := y[i]; {//Нахождение y1min}
if (y[i] < y2min) and (y2min <> y1min) then {//Нахождение y2min}
y2min := y[i];
writeln('y1min:', y1min:10:3);
writeln('y2min:', y2min:10:3);
writeln;writeln;
y1max := y[1];
y2max := y[2];
for i := 2 to (n) do
begin
if y[i] > y1max then y1max := y[i]; {//Нахождение y1max}
if ((y2max <> y1max) and (y[i] > y2max)) then {//Нахождение y2max}
y2max := y[i];
end;
writeln('y1max:', y1max:10:3);
writeln('y2max:', y2max:10:3);
sry := 0;
for i := 1 to (n) do
sry := sry + y[i]; {// //Нахождение среднего значения y}
writeln('sry:', sry / (n + 1):10:3);
M := 0;
for i := 1 to (n) do
begin
M := M + (sqr(y[i] - sry)) / (n + 1); {// Нахождение М}
D := sqrt(M); {// Нахождение D}
end;
writeln('M:', M:10:3, ' D:', D:10:3);
Assign(dannye, 'dannye.txt'); {// Запись результатов в файл}
rewrite(dannye);
writeln(dannye, 'Исходные данные');
writeln(dannye, 'f(x)=(x^3)/((x[i]+1)*(x[i]+2)))+(arcsin(1-x[i])/(1-ln(x[i])^1/3))');
writeln(dannye, 'Massiv X');
for i := 1 to 5 do
write(dannye, x[i]:10:3, '');
writeln(dannye, '');
for i := 6 to 10 do
write(dannye, x[i]:10:3, '');
writeln(dannye, '');
writeln(dannye, 'Massiv Y');
for i := 1 to 5 do
write(dannye, y[i]:10:3, '');
writeln(dannye, '');
for i := 6 to 10 do
write(dannye, y[i]:10:3, '');
writeln(dannye, '');
writeln(dannye, ' y1min:', y1min:5:3, ' y2min:', y2min:5:3);
writeln(dannye, ' y1max:', y1max:5:3, ' y2max:', y2max:5:3);
close(dannye); {// Закрытие файла и сохранение}
end.
Объяснение кода листинга программы
Этот код написан на языке Turbo Pascal и выполняет следующие действия:
- Переводит функцию Arcsin из PABC в код на Turbo Pascal.
- Определяет переменные и константы для задачи.
- Вводит значения а, b и n для массивов x и y с помощью функции read.
- Находит среднее значение y с помощью формулы средней арифметической.
- Находит максимальное и минимальное значения y с помощью условных операторов.
- Записывает результаты в файл dannye.txt с помощью функции Assign и функции Rewrite.
- Выводит исходные данные и результаты на экран с помощью функции Writeln.
- Выводит значения x и y в файл dannye.txt с помощью функции Write.
- Закрывает файл dannye.txt с помощью функции Close.