Перевод из Паскаля в Си - C (СИ)
Формулировка задачи:
function Fact2(n: integer): real;
var
anva: integer;
begin
result := n;
anva := n;
if (n <> 1) and (n <> 2) then
if odd(n) then while anva <> 1 do
begin
anva := anva - 2;
result := result * anva;
end
else while anva <> 2 do begin
anva := anva - 2;
result := result * anva;
end;
end;
var
i, n: integer;
begin
for i := 1 to 5 do
begin
write('N = ');
readln(n);
writeln(N, '!! = ', Fact2(N))
end
end.Решение задачи: «Перевод из Паскаля в Си»
textual
Листинг программы
/*
* Generated by TPTC - Translate Pascal to C
* Version 1.7 03/26/88 (C) 1988 S.H.Smith
*/
#include <stdio.h>
#include <conio.h>
int odd(int z)
{
return z&1;
}
float Fact2(int n)
{
int anva;
float result;
result = n;
anva = n;
if ((n != 1) && (n != 2))
if (odd(n)) while (anva != 1)
{
anva = anva - 2;
result = result * anva;
}
else while (anva != 2) {
anva = anva - 2;
result = result * anva;
}
return result;}
int i, n;
void main(int argc,
char *argv[])
{
for (i = 1; i <= 5; i++)
{
printf("N = ");
cscanf("%d\n",&n);
printf("%d!! = %f\n",n,Fact2(n));
}
}
Объяснение кода листинга программы
- В начале кода указаны два заголовочных файла, которые используются для работы с вводом/выводом и прерываниями.
- Далее идёт функция
odd(int z), которая возвращает 1, если числоzнечётное, и 0 в противном случае. - После неё определена функция
Fact2(int n), которая вычисляет факториал числаn. - В функции
Fact2(int n)переменнойresultприсваивается значениеn, а переменнойanva— копируется значениеn. - Затем выполняется проверка: если
nне равно 1 и 2, то в цикле выполняется вычисление факториала. - Если
nнечётное, то в циклеanvaуменьшается на 2, аresultумножается наanva. - Если
nчётное, то в циклеanvaуменьшается на 2, аresultумножается наanva. - В основной функции
main(int argc, char *argv[])переменнойiприсваивается значение от 1 до 5, а переменнойnсчитывается значение с помощью функцииcscanf(). - Выводится сообщение
N =и считывается значениеnс помощью функцииprintf()иcscanf(). - Выводится сообщение
N!! =Fact2(n)с помощью функцииprintf()`. - В конце кода есть пять итераций цикла, в которых считывается значение
nи вычисляется факториал с помощью функцииFact2(n).