Loading...
Sasho4949 avatar Sasho4949 7 Точки

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 2779 Точки
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 756 Точки

Здравей 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 2779 Точки

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

 

1
krum_43 avatar krum_43 756 Точки

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

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.