pomoc z kodem

0

Zadanie NWD
Oblicz największy wspólny dzielnik czterech liczb.

Wejście

Pierwsza linia wejścia składa się z jednej liczby całkowitej x (1<= x <= 1000) oznaczającej zestawów danych.
Każdy zestaw składa się z czterech liczb naturalnych (od 1 do 30000).

Wyjście

Dla każdego zestawu należy wypisać największy wspólny dzielnik liczb podanych na wejściu.

Przykład

Wejście:
2
2 3 4 5
30 15 10 25

Wyjście:
1
5

Proszę o pomoc, kompilator wyrzuca mi od razu wynik, a ma być troszkę inaczej..

#include<iostream>
using namespace std;

int NWD (int a, int b)
{
int c;
while (b! = 0)
{
c = a % b;
a = b;
b = c;
}
return a;
}
int main()
{
int size=0,nwd[4],temp=0;
cin>>size;
while(size>0){
int tab[4];
for (int i=0; i<4; i++)
{
cin>>tab[i];
}

nwd[0]=NWD(tab[0],tab[1]);
temp=nwd[0];
for (int m=0; m<3; m++)
{
    temp=NWD(nwd[m],tab[m+2]);
    nwd[m+1]=temp;
}
cout << temp << endl;
temp=0;
nwd[0]=0;
tab[0]=0;
--size;
}
return 0;
}
0

Jeżeli to jest na SPOJa lub cokolwiek w tym rodzaju, wejście jest rozdzielone od wyjścia i nie będzie z tym problemu.
Inna sprawa, że wychodzisz poza zakres tablicy tab tutaj: temp=NWD(nwd[m],tab[m+2]); (gdy m osiąga wartość 2).

0

Wystarczy tyle:

#include<iostream>
using namespace std;

unsigned nwd(unsigned a,unsigned b)
  {
   while(b)
     {
      unsigned c=a%b;
      a=b;
      b=c;
     }
   return a;
  }

int main()
  {
   unsigned tests,a,b,c,d;
   for(cin>>tests;tests--;cout<<nwd(nwd(a,b),nwd(c,d))<<endl) cin>>a>>b>>c>>d;
   return 0;
  }

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