Mam do zapisania program, którego wejście składa się z ciągu liczb całkowitych. Każda liczba przyjmuje wartość od 0 do 30000, gdzie liczby od 2 do 30000 oznaczają kolejne wartości dane przez generator, liczba 1 oznacza rozkaz wyznaczenia NWD ostatnich dwóch liczb większych od 1, a 0 jest zawsze ostatnią liczbą pojawiającą się na wejściu. Dwie pierwsze liczby są zawsze większe od 1 (czyli liczb na wejściu jest co najmniej 3).
Mój program jednak zwraca same zera na wyjściu, za bardzo utrudniłem sobie życie i zamęciłem ten kod, nie wiem jednak co mam robić, żeby wyjść z tego impasu.
Przykład:
Wejście:
5 5 4 4 1 5 5 1 4 4 1 1 1 5 4 3 2 1 0
Wyjście:
22
#include <iostream>
using namespace std;
//////////////////////////
int NWD (int a, int b)
{
int temp, suma;
while (b!=0)
{
temp=a%b;
a=b;
b=temp;
}
suma=suma+a;
}
//////////////////////////
int main() {
int suma=0;
int tab[1000000],a=0,b,position;
for (int i=1;i<=1000000;i++)
{
cin>>tab[i];
if (tab[i]==1)
{
for(i;i>=1;i--)
{
if (tab[i]!=1 && tab[i]!=0)
{
a=tab[i];
position=i;
}
if (a!=0)
{
for(i;i>=1;i--)
{
if (tab[i]!=1 && tab[i]!=0)
{
b=tab[i];
}
}
}
}
cout<<NWD(a,b);
}
if (tab[i]==0) return 0;
}
return 0;
}