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

Algorytm odejmowania pisemnego C++

Ostatnio zmodyfikowano 2018-01-15 13:50
Autor Wiadomość
AndrosX
Temat założony przez niniejszego użytkownika
Algorytm odejmowania pisemnego C++
» 2018-01-14 18:03:21
Cześć. Mam mały problem otóż napisałem algorytm odejmowania pisemnego w liscie dwukierunkowej. Algorytm działa ale jedynie gdy ilość cyfr w liczbie jest ta sama lub maksymalnie o jeden mniejsza. W przypadku większej różnicy (np odejmowanie 500-2) nie działa tak jak powinno. Ktoś jest w stanie mi wskazać gdzie jest błąd?

Lista Lista::operator -( Lista &L)
{
    Lista w;
    int i, j, p, r;
    i=this->ileJest;
    j=L.ileJest;
    int n=i;
    if(j<i)
        n=j;
    p=0;
    for(int k=1; k<=n; k++)
    {

        p=this->ogon->dane-L.ogon->dane;
        if(p<0)
        {
            r=p+10;
            w.wstaw(r);
            this->ogon=this->ogon->poprz;
            L.ogon=L.ogon->poprz;

            ogon->dane=ogon->dane-1;

        }
        else
        {
            w.wstaw(p);
            this->ogon=this->ogon->poprz;
            L.ogon=L.ogon->poprz;
        }
        i--;
        j--;
    }
    while(i>0)
    {


        r=this->ogon->dane;

        this->ogon=ogon->poprz;
        w.wstaw(r);
        i--;
    }

    while( j>0)
    {

        r=L.ogon->dane+p;

        L.ogon=L.ogon->poprz;
        w.wstaw(r);
        j--;
    }
    return w;

}
P-168716
DejaVu
» 2018-01-14 20:58:30
wyrównaj listę krótszą do listy dłuższej.
P-168731
AndrosX
Temat założony przez niniejszego użytkownika
» 2018-01-14 21:51:03
Przepraszam ale niestety nadal nie mam pomysłu jak rozwiązać ten problem. Widzę, że algorytm odejmuje jedynkę od liczby przedostatniej zamiast przechodzić dalej jednak nie wiem co z tym zrobić... 
P-168737
darko202
» 2018-01-15 13:50:26
1.
zacznij od przeczytania
http://cpp0x.pl/kursy​/Porady-dla-uzytkownikow-cpp0x-​pl​/Zakladanie-tematow-na-forum​/483
zwłaszcza "Formatowania treści za pomocą dostępnych znaczników"

2.
nie umieściłeś żadnego komentarza, który podpowiedziałby nam jak
wygląda budowa listy czyli też jak zapisujesz np. Odjemnik
przypuszczam się może jest to np.
dla 500
5  głowa
0  ..
0  ogon

3.
algorytm jest zawiły
przypuszczam, że może problem wynika z linii
C/C++
ogon->dane = ogon->dane - 1;
// ? do czego to się odnosi

// w linii
p = this->ogon->dane - L.ogon->dane;
///mamy
this->ogon->dane
L.ogon->dane

// ogon->dane  nie istnieje
ale mogę się mylić


4.
Zapoznaj się z techniką debugowania kodu
pozwoli Ci to śledzić każdy krok programu
w tym oglądać stan wszystkich zmiennych - monitorować zmiany zmiennych
P-168755
« 1 »
  Strona 1 z 1