Перевод из Паскаля в Си - 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)); 
  } 
}

Объяснение кода листинга программы

  1. В начале кода указаны два заголовочных файла, которые используются для работы с вводом/выводом и прерываниями.
  2. Далее идёт функция odd(int z), которая возвращает 1, если число z нечётное, и 0 в противном случае.
  3. После неё определена функция Fact2(int n), которая вычисляет факториал числа n.
  4. В функции Fact2(int n) переменной result присваивается значение n, а переменной anva — копируется значение n.
  5. Затем выполняется проверка: если n не равно 1 и 2, то в цикле выполняется вычисление факториала.
  6. Если n нечётное, то в цикле anva уменьшается на 2, а result умножается на anva.
  7. Если n чётное, то в цикле anva уменьшается на 2, а result умножается на anva.
  8. В основной функции main(int argc, char *argv[]) переменной i присваивается значение от 1 до 5, а переменной n считывается значение с помощью функции cscanf().
  9. Выводится сообщение N = и считывается значение n с помощью функции printf() и cscanf().
  10. Выводится сообщение N!! =Fact2(n)с помощью функцииprintf()`.
  11. В конце кода есть пять итераций цикла, в которых считывается значение n и вычисляется факториал с помощью функции Fact2(n).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.4 из 5
Похожие ответы