Loading...

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

venimir avatar venimir 0 Точки

Проблем с BigInteger

Здравейте колеги

казвам се Венимир Петков и се уча онлайн от клиповете започнах със C# и съм стигнал до цикли вдъхновен от новите знания седнах и написах програма за намиране числата на Фибоначи например въвеждате 5-то число и до принтира първите 5 числа и т.н. 

 

Проблема обаче е че UINT след 46 число ми дава Overflow затова му сложих Catch като временно решение на проблема сега обаче искам да добавя BigInteger, но не ми позполява да приложа оператора + към BigInteger. Може ли да ми помогнете като ми кажете как да го направя. Благодаря предварително.

Code

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace FibboNumbers

{

    class FibboNumbers

    {

        static void Main(string[] args)

        {

            Console.WriteLine("Imput a number from 1 to 46:");

            uint FibboCountLenght = uint.Parse(Console.ReadLine());

            if (FibboCountLenght < 0)

            {

                Console.WriteLine("Imput a positive number");

            }

            uint FirstNum = 0;

            uint SecondNum = 1;

            uint result;

            byte counter = 1;

            Console.WriteLine("Fibonacci Numbers are :");

 

            while (FibboCountLenght > 0)

            {

                checked

                {

                    try

                    {

                        result = FirstNum + SecondNum;

                        Console.WriteLine("{0} number is = {1}",counter++, result);

                        FirstNum = SecondNum;

                        SecondNum = result;

                    }

                    catch(OverflowException)

                    {

                        Console.WriteLine("overflow you can imput a number max 46");

                        break;

                    }

                }

                FibboCountLenght--;

            }

        }

    }

}

Тагове:
0
Programming Basics
Ivakis avatar Ivakis 98 Точки

Здравей, ако толкова държиш на BI ето така се действа - 

  1. Add a reference to the System.Numerics assembly to your project.

    a. In Solution Explorer, right-click the project node and click Add Reference.

    b. In the Add Reference dialog box, select the .NET tab.

    c. Select System.Numerics, and then click OK.

  2. Add a using directive importing the System.Numerics namespace:

    using System.Numerics;
  3. Use the BigInteger structure:

    var i = new BigInteger(934157136952);
0
venimir avatar venimir 0 Точки

Добре това го има и в интернет въпроса е как да го inject във кода така че result да не се препълва и програмата да може да пресмята повече от 46 числа

0
ppbaev avatar ppbaev 157 Точки

Правиш стъпки 1 и 2 от горния пост, след това на 6-те места, където имаш uint ги сменяш с BigInteger и това е, кода си работи. Ако си сложил BigInteger преди да си добавил референцията към System.Numerics, може да си натиснал ctrl + . и visual studio да ти е направило празен клас BigInteger, който няма как да работи с оператора +. Истинкият BigInteger в C# си работи с всички оператори както всеки други числови тип.

0
28/04/2017 09:22:04
Ivakis avatar Ivakis 98 Точки

Аз мислех, че се подразбира, ако ще ползваш BigInteger, да не слагаш uint. Все едно да искаш стринг, ама да пишеш чар, нали.. Успех

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