Професионална програма
Loading...
+ Нов въпрос
Sasho4949 avatar Sasho4949 2 Точки

8. Factorial Division - C-Sharp - не си откривам грешката

30/100

Пробвах със long и double - няма промяна..

Read two integer numbers. Calculate factorial of each number. Divide the first result by the second and print the division formatted to the second decimal point.

 

 

using System;

namespace _8._Factorial_Division
{
    class Program
    {
        static void Main(string[] args)
        {
            long fact = long.Parse(Console.ReadLine());
            long devision = long.Parse(Console.ReadLine());
            long sum = fact;
            
            for (long i = fact-1; i >= 1; i--)
            {
                sum = sum * i;
            }
            Console.WriteLine($"{sum / devision:f2}");

        }
    }
}

1
Programming Fundamentals
icowwww avatar icowwww 1345 Точки
Best Answer

Здравей,

Проблема е, че не правиш факториал само на първото число. Ето с добавената сметка и за второто число

using System;

namespace _8._Factorial_Division
{
    class Program
    {
        static void Main(string[] args)
        {
            long fact = long.Parse(Console.ReadLine());
            long devision = long.Parse(Console.ReadLine());
            long sum = fact;

            double num1 = fact;
            double num2 = devision;


            for (long i = fact - 1; i >= 1; i--)
            {
                num1 = num1 * i;
            }
            for (long i = devision - 1; i >= 1; i--)
            {
                num2 = num2 * i;
            }
            Console.WriteLine($"{num1 / num2:f2}");
        }
    }
}

 

И една промяна с метод, защото задачите са към Methods- exercise: https://pastebin.com/Pf3rNC6s

0
18/07/2021 21:19:59
krum_43 avatar krum_43 635 Точки

Здравей Sasho4949,

Както е коментирал колегата добре е тук да си напишеш един метод,който да ти пресмята N!.

Ето ти един вариант:

 

using System;

namespace FactorielDivision
{
    class Program
    {
        static void Main(string[] args)
        {
            int number1 = int.Parse(Console.ReadLine());
            int number2 = int.Parse(Console.ReadLine());
            double facNumber1 = Factoriel(number1);
            double facNumber2 = Factoriel(number2);
            double ouput = facNumber1 / facNumber2;
            Console.WriteLine($"{ouput:f2}");
        }
        static int Factoriel(int n)
        {
            int fac = 1;
            for(int i=1;i<=n;i++)
            {
                fac *= i;
            }
            return fac;
        }
    }
}
 

0
icowwww avatar icowwww 1345 Точки

То това е почти 1 към 1 като линка от горе. С единствената разлика, че покрива и инпут 0 laugh

 

1
krum_43 avatar krum_43 635 Точки

Да,така е.По принцип при пресмятане на n! се приема,че n>=1.

0