C++ Znajdź NWD 4 liczb

0

witam,
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

Używam DevC++//Mój programik wygląda tak: (mimo, że działa sprawdzarka nie akceptuje)-będę wdzięczny za wskazanie błędu.
@@@@@@@@@@@@@@@@@@@@@

 #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

Po co ci fory?

scanf(a, b)
temp1 = nwd(a, b)
scanf(a, b)
temp2 = nwd(a, b)
wynik = nwd(temp1, temp2)

Iterujesz od 0 do 2, a w pętli masz m + 2, czyli na końcu odwołujesz się do tab[4] czyli piątej komórki, na którą nie zrobiłeś przecież miejsca.

0

udało się, zaakceptowane, dziękuje bardzo. Pozdrawiam

0

udało się, poprawny kod dla NWW, gdyby ktoś w przyszłości spotkał się z podobnym.

#include<iostream>
#include<windows.h>
 
using namespace std;
 
int NWW (int a, int b)
{
    int g=0,q=0;
    g=a*b;
    while (b != 0)
    {
          q = a % b;
          a = b;
          b = q;
    }
    return g/a;
}
int main()
{
int size=0,a=0,b=0,c=0,d=0,temp1=0,temp2=0,temp3=0;
cin>>size; 
while(size>0){
cin>>a>>b>>c>>d;
temp1=NWW(a,b);
temp2=NWW(c,d);
temp3=NWW(temp1,temp2);
cout<<temp3<<endl;
--size;
}
return 0;
}
0

Kod dla NWW oczywiście niepoprawny. Należy użyć wzoru NWW(a, b) = a / NWD(a, b) * b, aby uniknąć przepełnienia przy mnożeniu w przypadku, gdy wynik mieści się w danym typie.

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