Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Obsługa dużych liczb w kalkulatorze

Ostatnio zmodyfikowano 2011-12-16 08:45
Autor Wiadomość
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: 

C/C++
#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;
}
P-45629
DejaVu
» 2011-12-14 21:11:00
Polecam poszukać biblioteki do obliczeń matematycznych. Istnieje takowa, jednak jej nazwy nie pamiętam...
P-45636
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() :)
P-45661
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.
P-45682
« 1 »
  Strona 1 z 1