Informatică, întrebare adresată de MădălinaSpiridon, 9 ani în urmă

Cerinţa
Să se scrie un program care citește un șir de n numere naturale şi determină cea mai mică fracţie care poate fi scrisă cu numărătorul şi numitorul dintre cele n numere.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale nenule, separate prin spaţii.

Date de ieşire
Programul afișează pe ecran numărul fracţia cerută, în forma x/y.

Restricţii şi precizări
0 < n < 1001
cele n numere citite vor fi mai mici decât 2.000.000.000
fracţia afişată va fi ireductibilă



Exemplu
Intrare

5
6 10 3 2 5
Ieșire

1/5
Explicație
Cea mai mică fracţie care se poate scrie cu numerele din şire este 2/10. Prin simplificare se obţine fracţia ireductibilă 1/5.



AM DOAR 50 DE PUNCTE
#include

using namespace std;
long long x;
int n,i,a,maxim=-99,minim=99,b,r;
int main()
{cin>>n;
for(i=1;i<=n;i++){
cin>>x;
if(x>maxim)
maxim=x;
if(x minim=x;
a=minim;
b=maxim;
while(b!=0){
r=a%b;
a=b;
b=r;
}
}
cout << minim/a <<"/"< return 0;
}


artur99: Cred că s-a stricat sursa când ai postat-o. Ai putea să o pui pe http://pastebin.com/

Răspunsuri la întrebare

Răspuns de blindseeker90
2
Problemele apar atunci cand folosesti limitele numerelor din sir.
In primul rand,spune ca numerele sunt naturale, deci poti incepe cu
maxim=0;
 (nu exista numere negative)
In al doilea rand, tu ai setat minimul ca 99. Dar numerele sunt mai mici decat 2 miliarde. Deci poate exista cazul in care toate numerele sunt mai mici decat 99 din sir: ex: 100,101,4323,231,321 
In acest caz, nu vei obtine minimul sirului, ci vei avea minim=99
Pentru a remedia problema, alege valoare initiala pentru minim valoarea maxima a intervalului: minim=2000000000;
Răspuns de ionutg38
5
Am atasat sursa C++. Bafta!
Anexe:
Alte întrebări interesante