[C++] Algorytm Euklidesa NWD - pomoc w modyfikacji kodu

0

Witam !
Mam następujący problem :

Mam napisany program liczący podaną przez nas ilość razy NWD podawanych przez nas dwóch liczb. Wszystkie obliczone NWD zapisywane są w tablicy by potem móc zostać wyświetlone zgodnie ze schematem treści zadania. Zadanie jest ze SPOJa ( 601. NWD , Kod zadania: PP0501A ).Teraz powstaje problem. Nie mam pojęcia jak inaczej zapamiętać obliczone wcześniej NWD by móc je później wyświetlić zgodnie ze schematem ponieważ treść zadania wymaga od Nas stworzenia osobnej funkcji liczącej NWD według schematu :

 
int nwd(int a, int b);

Gdy próbuję stworzyć osobną funkcję na podstawie mojego programu to jestem w stanie wyświetlić tylko jeden wynik. Proszę o pomoc w rozwiązaniu problemu i z góry dzięki za pomoc !

Link do zadania : https://pl.spoj.pl/problems/PP0501A/

Kod mojego programu :

/*601. NWD
Kod zadania: PP0501A*/

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
   
 int a,b,c,t;
 int tablica[50];
 cout<<"Podaj ilosc testow :";
 cin>>t;
 for(int i=0 ; i<t ; i++)
        {
            cin>>a>>b;
            do
                      {
                             c=a%b;
                             a=b;
                             tablica[i]=b;
                             b=c;
                                
                      }
            while(b!=0);
        }
system("cls");
for(int k=0 ; k<t ; k++)
        {
            cout<<tablica[k]<<"\n";
        }    
        
system ("pause");
return 0;

}
 

W razie niejasności jakiejś części programu chętnie wyjaśnię co za co odpowiada. Pozdrawiam i liczę na pomoc !

0

Nie potrzebujesz żadnej tablicy. Wyniki masz wyświetlać na bieżąco, tj. podajesz 2 liczby i ma wyjść wynik.

0

Według instrukcji zamieszczonej na SPOJu:

Input:
5
1 4
4 1
12 48
48 100
123456 653421

Output:
1
1
12
4
3

Więc chyba nie za bardzo zadziała to co napisałeś ... ale zaraz sprawdzę :)

0

Musisz nauczyć się czytać wejścia i wyjścia. Dane mamy:
ilość testów
wejście pierwsze
wyjście pierwsze.
wejście drugie
wyjście drugie
itd.
zatem:
5
1 4
1
4 1
1
12 48
12
48 100
4
123456 654321
3
i tak ma działać ten program.

EDIT:

cout<<"Podaj ilosc testow :";

wywal....

0

Było dokładnie tak jak pisałeś. Program zaakceptowano. Dzięki za pomoc !
Zamieszczam poprawiony kod :

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int a,b,c,t;
int tablica[50];
cin>>t;
for(int i=0 ; i<t ; i++)
        {
            cin>>a>>b;
            do
                      {
                             c=a%b;
                             a=b;
                             tablica[i]=b;
                             b=c;
                      }
              while(b!=0);
              cout<<tablica[i]<<endl;
              system ("pause");
              system ("cls");
        }

return 0;
} 
0
system ("pause");
system ("cls");

Takiego czegoś również nie radzę używać. Program zaliczyło ci prawdopodobnie tylko dlatego że unix na którym uruchamiają te programy nie rozumie "pause" i "cls".
Pamiętaj że piszesz dla komputera a nie człowieka, to co twój program wypisze jest porównywane z odpowiednim wzorem, to, niestety, cała filozofia.

Ale skoro zadanie zaakceptowano to OK.

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