Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

remote87 avatar remote87 121 Точки

[Homework] Math For Developers: Problem 3 Some Factorials

И пак аз! :)

Относно факториелите, имам следния код:

static void Main()
        
        {
            ulong i, number, fact;
            Console.WriteLine("Enter a number to find the factorials");
            number = ulong.Parse(Console.ReadLine());
            fact = number;
            for (i = number - 1; i >= 1; i-- )
            {
                fact = fact * i;
                Console.WriteLine("Factorial of the given number is: {0}", fact);
            }
        }

Правилно ли съм избрал променливата да е ulong, т.к. от лекцията видях, че факториела е продукта от положителните множители?

Не ми става ясно, защо в един момент изписва само 0, препълва се променливата и връща началната стойност на ulong ли? Ако да, защо го изписва доста пъти преди да спре?

 Вярно ли е според вас така да се реши задачата и Е ли е вариант да се сложи брояч на символите от стринга и когато стигне 1 / ulong = 0 / да спира и да не го печата?

 

Май доста избързвам с писането на код? 

Тагове:
0
Programming Basics
Filkolev avatar Filkolev 4482 Точки

Първо, изкарай принтирането на резултата извън цикъла, за да не ти се принтира на всяка стъпка от пресмятането.

За факториели се ползва BigInteger, другите типове се препълват много бързо, за ulong някъде около 30 беше ако не се лъжа, може и по-малко.

2
remote87 avatar remote87 121 Точки

Добре де, добавих си System.Numerics, използвах BigInteger и пак ми печата 0 ?! :(

class SomeFactorials
    {
        static void Main()
        
        {           
            int i, number, fact;
            Console.WriteLine("Enter a number to find the factorials");
            number = int.Parse(Console.ReadLine());
            fact = number;
            for (i = number - 1; i >= 1; i-- )
            {
                fact = fact * i;               
            }
            BigInteger bigFact = fact;
            Console.WriteLine("Factorial of the given number is: {0}", bigFact);
        }
    }
}

Какво бъркам сега?!

0
DobrinYanev avatar DobrinYanev 1 Точки

Здравей,

Проблемът е, че използваш BigInteger много късно. Трябва да декларираш fact като BigInteger в самото начало. В противен случай, като въртиш цикъла fact се препълва много бързо.

Накрая махаш това bigFact и изписваш на конзолата директно fact.

Поздрави!

1
remote87 avatar remote87 121 Точки

Това си е чисто недоглеждане моето... :(

Извинявай Dobrin и ти благодаря за отзивчивостта...то е пред очите ми, ама трябва някой да гледа. Коригирах го и всичко си работи, както трябва!

Още веднъж благодаря!

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