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;
}