Metoda przechowywania liczb systemu dziesiętnego

0

Mam dokładnie takie zadanie : opracować własną metodę przechowywania liczb systemu dziesiętnego, bez ograniczeń na ich wartość oraz dokładność ułamka dziesiętnego. Może to być wykonane za pomocą reprezentacji binarnej lub w wersji znakowej (jeden bajt – jedna cyfra).

Problem w tym, że niekoniecznie wiem, o co w tym chodzi -.- Mógłby ktoś to bardziej po ludzku napisać? Bo treść jest dla mnie delikatnie mówiąc enigmatyczna.

0

Jak rozumiem masz uniknąć wywalania się programu po przekroczeniu granicy. Np: int (integer) nie przyjmie wartości większej jak 4miliardy ileś tam.
Aby to obejść musisz napisać to najlepiej na stringach (bądź charach - obojętnie).
Jeśli nadal nie rozumiesz to zapisz sobie liczbę: 555555555555555555555555555555555555555555555555555555555555555555555555555
w zmiennej typu int.

0

Masz zapisywać liczby do stringa i opracować funkcje, które będą tworzyły nowe stringi na podstawie już istniejących - dających wyniki działań, np. dodawanie, odejmowanie, itp.

0

Dobra, już czaję.

0

Kod dodajacy dwie liczby:

 #include <iostream>
#include <string>

using namespace std;

main()
{
      string a,b,q;
      int c,d=0,g=0,u=0,p=0,k,os=0,al,bl,t;
      cin>>t;
      for(int v=0; v<t; ++v)
      {
          string w[10000];
              os=0;
              d=0;
              g=0;
              u=0;
              p=0;
      cin>>a>>b;
      al=a.length();
      bl=b.length();
      if(al>bl)
      {
               for(int y=0; y<al-bl; ++y)
               {
                       b="0"+b;
               }
               c=a.length();
      }
      else if(al<bl)
      {
           for(int r=0; r<bl-al; ++r)
           {
                   a="0"+a;
           }
           c=b.length();
      }
      else if(al==bl)c=a.length();
      c--;
      k=c;
      for(int j = -1; j<c; --c)
      {
              d=a[c]-48;
              g=b[c]-48;
              u=d+g+p;
              if(u>9){
                      u-=10;
                      p=1;;
                      if(c==0)os=1;
                      }
              else p=0;
      w[c]=u+48;
      if(os==1)cout<<"1";
      }
      for(int o=0; o<k+1; ++o)
      {
              cout<<w[o];
      }
      cout<<endl;
      }
}


0

Ok, dzięki :) Tylko jakoś nie bardzo go ogarniam ;) ale spróbuję jeszcze raz - jeśli ktoś miałby pomysł, jak naprawić mój kod, podpowiedzi baaardzo mile widziane. A kod kolegi wyżej to strasznie duzo zmiennych ma ;)

0

http://4programmers.net/Pastebin/1160 kiedyś po coś pisałem. Teraz mi wstyd, ale dodaje do napotkania eof :)
pozdrawiam

0

Dzięki wszystkim, już mam dodawanie, biorę się za resztę

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