Obsługa dużych liczb w kalkulatorze
Ostatnio zmodyfikowano 2011-12-16 08:45
xxdamiianxx Temat założony przez niniejszego użytkownika  | 
Obsługa dużych liczb w kalkulatorze » 2011-12-14 17:20:28 Pisze program  który działa jak prosty kalkulator ale bez ograniczeń co do wielkości liczb. Napisałem kod  na razie dla samego dodawania  pobieram liczby do tablicy i kolejne cyfry zapisuje w kolejnych indeksach tablicy i po prostu pisemnie dodaje. Jednak  jest gdzieś jest błąd  bo dla małych liczb zwraca dobry wynik ale już dla 5  cyfrowych  zły w  tablicy pojawiają się minusy. Może ktoś znajdzie błąd. Kod programu:   #include <iostream> #include <conio.h>
  using namespace std; int dlugosc( char tab[ 10 ] ) {     int i = 0;     while( tab[ i ] != '\0' )     {         i++;     };     return i; }; int charTOint( char a ) {     return int( a - 48 ); }
  int main() {     cout << "program wykonuje obliczenie bez ograniczen co do wielkosci liczb \n";          char tab1[ 10 ], tab2[ 10 ], tab1p[ 10 ], tab2p[ 10 ];     int tab1pp[ 10 ], tab2pp[ 10 ], n1, n2, wynik[ 10 ], r;     r = 0;          cout << "Podaj dwie duze liczby:";     cin >> tab1;     cin >> tab2;               n1 = dlugosc( tab1 ) - 1;     n2 = dlugosc( tab2 ) - 1;          for( int i = 0; i < 10; i++ ) {         tab1p[ i ] = tab1[ n1 - i ];         if( i <( 9 - n1 ) ) {             tab1pp[ i ] = 0; } else {             tab1pp[ i ] = charTOint( tab1p[ 9 - i ] );         };                  tab2p[ i ] = tab2[ n2 - i ];         if( i <( 9 - n2 ) )         {             tab2pp[ i ] = 0; } else {             tab2pp[ i ] = charTOint( tab2p[ 9 - i ] );         };              };          cout << "\n wynik to:";     for( int i = 0; i < 10; i++ ) {                           wynik[ 9 - i ] =( tab1pp[ 9 - i ] + tab2pp[ 9 - i ] ) % 10 + r;         int r =( tab1pp[ 9 - i ] + tab2pp[ 9 - i ] ) / 10;              };     for( int i = 0; i < 10; i++ ) {         cout << wynik[ i ]; };          getch();     return 0; }
   | 
 | 
DejaVu  | 
» 2011-12-14 21:11:00 Polecam poszukać biblioteki do obliczeń matematycznych. Istnieje takowa, jednak jej nazwy nie pamiętam...  | 
 | 
diego997  | 
» 2011-12-15 19:55:24 Ja bym utworzył dwie tablice dynamiczne typu int i przypisywał do nich wartości przy pomocy funkcji getch() :)  | 
 | 
madmike44  | 
» 2011-12-16 08:45:49 GNU Multiple Precision Arithmetic Library -  http://gmplib.org/Licencja GPL, dobra dokumentacja, biblioteka szybka i o dużych możliwościach. Najlepszy chyba obecnie wybór, jeśli chodzi o takie zadania.  | 
 | 
|  « 1 »  |