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

Odpowiedz Nowy wątek
2011-01-04 20:10
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 !

Pozostało 580 znaków

2011-01-04 20:24
0

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


Idiots, idiots everywhere.

Pozostało 580 znaków

2011-01-04 20:28
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ę :)

Pozostało 580 znaków

2011-01-04 20:38
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....


Idiots, idiots everywhere.
edytowany 3x, ostatnio: allocer, 2011-01-04 20:48

Pozostało 580 znaków

2011-01-04 20:55
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;
} 
edytowany 1x, ostatnio: kielbasa, 2011-01-04 20:57

Pozostało 580 znaków

2011-01-04 21:13
msm
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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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