Informatică, întrebare adresată de gamecomunity777, 8 ani în urmă

Se dă un numar n și n perechi de numere naturale a și b.Să se determine dacă a/b este fracție finită sau periodică, iar dacă este fracție periodică să se determine dacă este fracție periodică simplă sau mixtă. Ma poate cineva ajuta cu o sursa in C++? Am incercat sa ma folosesc de numere prime ca sa il rezolv dar mereu obtin 20 de puncte.

https://www.pbinfo.ro/probleme/3307/fractie6


boiustef: ai consultat teoria de la mate ... sunt 3 reguli ...
1) când se obține fr. zecim. simplă
2) fr.zecim.per.simplă
3)fr.zec.per.mixtă
boiustef: 1) fr.zec. finită
gamecomunity777: Imi poti da o pagina in care apare teoria ca nu inteleg la ce te referi.
boiustef: sunt la mate clasa a 5-a la tema fracții zecimale, periodicitate 3 reguli de determinare a tipului fr. zecimale.
Sper din cod să faci concluzii... de apar întrebări, eu sunt aici :))) Succese!

Răspunsuri la întrebare

Răspuns de boiustef
5

Răspuns:

#include <iostream>

using namespace std;

int n,i,a,b,f2,f5;

int main()

{

   cin >> n;

   for (i=1; i<=n; i++)

   {

       cin >> a >> b;

       if (a%b==0) cout << "fractie finita";

       else

       {

           while (a%2==0 && b%2==0)

           {

               a/=2; b/=2;

           }

           while (a%5==0 && b%5==0)

           {

               a/=5; b/=5;

           }

           f2=0;

           while (b%2==0)

           {

               b/=2; ++f2;

           }

           f5=0;

           while (b%5==0)

           {

               b/=5; ++f5;

           }

           if (b==1)

           {

               cout << "fractie finita";

           }

           else

           {

               if (a%b==0) cout << "fractie finita";

               else

               {

                   if (f2==0 && f5==0) cout << "fractie periodica simpla";

                   else cout << "fractie periodica mixta";

               }

           }

       }

       cout << endl;

   }

}

Explicație:

e cod proaspăt de 100p.  

-am încercat din start dacă a se divide cu b atunci răspuns ”fr. finita”

- a urmat o simulare  a simplificărilor repetate a  fracției a/b prin 2, prin 5.

- dacă după aceste simplificări numitorul obținut este 1, atunci ”fr. finită”,

  altfel, căutăm (numărăm) dacă noul numitor are factori de 2 și/sau 5.


gamecomunity777: Iti multumesc mult Boiustef. Am facut si eu asta dar m-am complicat fara motiv cand verificam numitorul daca se imparte doar la 2, 5 sau 2 si 5.
Alte întrebări interesante