Jak ma wyglądać to zadanie? (Klasa i metoda)

0

Cześć, mam zaprogramować klasę, której obiekty mają pamiętać duże liczby całkowite (ich maksymalny rozmiar może być zadany stałą) wraz z operacjami +, -, *, /. Muszę też stworzyć metodę wypisującą te liczby. Wartością początkową obiektu ma być wartość typu int podana jako argument w konstruktorze.

Nie do końca rozumiem jak ma wyglądać ta klasa... Tzn mam zrobić to tak, że każdy obiekt pamięta jedną liczbę? I co wtedy z tymi operacjami? Jak myślicie?

0

Dokladnie tak, jak jest to w przypadku innych obiektow - kazdy egzemplarz klasy to nowy osobny obiekt.
Co do operatorów, to chodzi o to, zebys mogl zrobic cos takiego:

var mojaLiczba1 = new MojaLiczba();
var mojaLiczba2 = new MojaLiczba();
//tutaj je jakos sobie ustawiasz czy cokowliek

var mojaLiczba3 = mojaLiczba1 + mojaLiczba2; //analogicznie dla -, * i /
0
Florian napisał(a):

a czegoś takiego takiego normalnie nie mogę zrobić? Muszę to jakoś specjalnie zaprogramować?

A pomysl, ze masz dwa obiekty klasy Osoba, osoba ma Imie i Nazwisko, czyli jakos tak:

var osoba1 = new Osoba("Jan", "Kowalski);
var osoba2 = new Osoba("Waldek", "Kiepski");

var osoba3 = osoba1 + osoba2; //i w tym momencie co powinno byc w zmiennej osoba3?

Kompilator nie interpretuje danych ktore "mieli" i nie zastanawia sie nad znaczeniem danych zawartych w klasach, to wszystko trzeba samemu oprogramowac

0

Dobra dobra, w sumie racja;p Dzięki wielkie, zaraz się za to zabieram :)

EDIT. Ej no ale coś takiego mi działa..

using System;




namespace ConsoleApplication2
{
    class BigNum
    {
        public int liczba;
    }

    

    class Program
    {
        static void Main(string[] args)
        {
            BigNum pierwsza = new BigNum();
            pierwsza.liczba = 100;
            BigNum druga = new BigNum();
            druga.liczba = 200;

            Console.WriteLine("Pierwsza = " + pierwsza.liczba);
            Console.WriteLine("Druga = " + druga.liczba);

            BigNum trzecia = new BigNum();
            trzecia.liczba = pierwsza.liczba + druga.liczba;

            Console.WriteLine("Trzecia = " + trzecia.liczba);
            Console.WriteLine("Koniec");

            Console.ReadKey();          
        }
    }
} 

Nie o coś takiego chodziło? (Nie chodzi mi o całość zadania tylko o tą część z dodawaniem mnożeniem itp)

1

Jak w klasie BigNum trzymasz inta to nie jest to żadna wielka liczba i takie coś co napisałeś nie ma sensu.

0

No dobra, no to zamieniam go na jakiegoś long long inta, ale ogólnie ma to wyglądać w ten sposób?

1

Nie.

W C# nie ma czegoś takiego jak long long int.
Nawet jak wsadzisz tam longa to jaki jest cel tworzenia do tego klasy?

0

po to masz stworzyć klasę dużych liczb żeby mogła trzymać liczby większe od tych we wbudowanych typach
nie możesz więc do tego celu użyć wbudowanych typów w sposób bezpośredni

to zadanie wymaga dużo więcej wysiłku i myślenia

0

Hmmm, to mam ją przechowywać jako stringa?

0

Liczbę jako stringa?
Dosyć, hmm... nietypowy pomysł ;p

Siedzę i dumiem, i nic nie wysumałem ;{
Może by iść tropem stringów i przechowywać liczby w długich tablicach?

0

Musisz przeładować operator
https://www.google.pl/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=c%23+operator+overloading
A samą liczbę chyba należałoby trzymać w tablicy sbyte[] number, nie wiem czy można lepiej.

0

Możesz też za pomocą ILSpy podejrzeć jak wygląda implementacja wbudowanej w C# struktury do obsługi wielkich liczb - BigInteger.

https://msdn.microsoft.com/pl-pl/library/system.numerics.biginteger%28v=vs.110%29.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1