NWD z modulo dla liczb ujemnych – liczenie ilości kroków wykonanych przez algorytm

0

Witam,
Na wstępie chciałbym powiedzieć tylko, że dopiero zacząłem swoją przygodę z programowaniem i prosiłbym o wyrozumiałość.

Jeśli chodzi o mój problem, to mianowicie dostałem zadanie aby napisać prosty algorytm, który policzy NWD z modulo dla liczb całkowitych i liczyć ilość kroków wykonanych przez algorytm (pętli). Udało mi się to zrobić, jednak algorytm ma też liczyć NWD dla liczb ujemncych, co niestety mi nie wyszło. Pomimo zastosowania wartości bezwzględnej nadal NWD pokazuje mi ujemny wynik. Czy moglibyście mi pomóc bądź coś podpowiedzieć? Załączam swój algorytm, treść zadania i z góry dziękuję za pomoc.

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int abs_liczba1, abs_liczba2,t, kroki=0;// t - zapamietuje dzielnik
        cout <<"Podaj pierwsza liczbe: ";

while (not(cin >> abs_liczba1))
        {
        cout <<"Podaj pierwsza liczbe: ";
        cin.clear();
        cin.sync();
        }
        cin.clear();
        cin.sync();
        cout <<"Podaj druga liczbe: ";

while (not(cin >> abs_liczba2))
        {
        cout <<"Podaj druga liczbe: ";
        cin.clear();
        cin.sync();
        }
        cin.clear();
        cin.sync();

if (abs_liczba1==0 || abs_liczba2==0)
       {
        cout<<"NWD nieokreslone" <<endl;
        return 0;
        }
do
{
    t=abs_liczba2;
    abs_liczba2=abs_liczba1%abs_liczba2;
    abs_liczba1=t;
    kroki++;
}
while (abs_liczba2!= 0);

    cout<<"Najwiekszy wspolny dzielnik: "<<abs_liczba1<<endl;
    cout<<"Ilosc krokow: "<<kroki<<endl;
    return 0;
}
0
szweszwe napisał(a):

Dlaczego nie użyjesz abs?
http://www.cplusplus.com/reference/cstdlib/abs/

Przecież użyłem? Chyba, że w zły sposób.

0
Hikori napisał(a):
szweszwe napisał(a):

Dlaczego nie użyjesz abs?
http://www.cplusplus.com/reference/cstdlib/abs/

Przecież użyłem? Chyba, że w zły sposób.

abs jest wszędzie w tym algorytmie. Jeżeli źle to zrobiłem, to czy mógłbyś pokazać mi jak poprawnie powinno to wyglądać?

0

No to otwórz link i zobacz jak to się robi. To, że sobie nazwiesz zmienną abs nic nie daje.

0
szweszwe napisał(a):

No to otwórz link i zobacz jak to się robi. To, że sobie nazwiesz zmienną abs nic nie daje.

Otworzyłem plik i po dodaniu

liczba1=abs(liczba1);
liczba2=abs(liczba2);

zaczęło działać.
Mam jedną prośbę do Ciebie, czy mógłbyś przetestować ten programik, czy na 100% działa licznik kroków?
Z góry dzięki

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