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

Mă puteți ajuta să rezolv toate problemele in C++.​

Anexe:

Răspunsuri la întrebare

Răspuns de ovdumi
1

Răspuns:

1. int n,C=0;

   cin>>n;

   while (n%10==0)

   {

       C=C+1;

       n=n/10;

   }

   cout<<C;

2. int a,n;

   cin>>a;

   cin>>n;

   cout<<a*pow(10,n);

3.  int a, b, copa, copb;

   cin >> a;

   cin >> b;

   copa = a;

   copb = b;

   while (copa != copb)

   {

if (copa>copb)

 copa = copa - copb;

else copb = copb - copa;

   }

   cout << copa << " ";

   cout << (a*b) / copa;

4. int n, i, S, copi;

   cin>>n;

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

   {

       S = 0;

       copi = i;

       while (copi != 0)

       {

           S = S + copi % 10;

           copi = copi / 10;

       }

       if (S%2 != 0)

           cout<<i<<" ";

   }

5. int a, b, n;

   cin>>a;

   cin>>b;

   cin>>n;

   for (int i = a; i <= b; i++)

   {

       if (n % i == 0)

           cout<<i<<" ";

   }

6. int n;

   float S,C=1;

   cin>>n;

   S=n;

   for (int i = 1; i <= n/2; i++)

   {

       if (n % i == 0)

       {

           S = S + i;

           C = C + 1;

       }

   }

   cout<<S/C;  

Explicație:

Problemele 1, 2, 4, 5 sunt destul de usoare, nu cred ca vei avea dificultati in a le intelege. La problemele 3 si 6 in schimb sunt cateva lucruri de precizat.

La 3 am calculat, in prima faza, cmmdc al numerelor a si b (le-am memorat in alte 2 variabile, copa si copb, pentru a nu le pierde continutul). Dupa care m-am folosit de proprietatea ca a * b = (a,b) * [a,b], adica produsul a 2 numere este egal cu produsul dintre cmmdc si cmmmc al acestora. De aici rezulta ca cmmmc este egal cu a*b / cmmdc (in rezolvare, copa este egal cu copb dupa ce am iesit din structura while si ambele memoreaza cmmdc al numerelor a si b).

La 6 algoritmul pare relativ usor, dar nu e chiar asa. La aceasta problema e un detaliu care iti poate scapa foarte usor, acesta fiind declararea variabilelor. Dupa cum poti observa, am memorat in S suma divizorilor lui n, iar in C numarul de divizori ai lui n. Teoretic, ambele numere memoreaza valori intregi, dar pentru a calcula media aritmetica a divizorilor lui n trebuie sa le impartim. Aici e partea interesanta. Daca as fi declarat S si C ca fiind numere intregi (int), raportul acestora ar fi tot un numar intreg (de exemplu, daca S=7 si C=3 si ambele variabile sunt de tipul int, S/C = 7/3 = 2). Cu alte cuvinte, se ia in considerare doar partea intreaga a raportului dintre cele 2 numere. In schimb, daca S si C sunt de tipul float, atunci rezultatul lor este un numar rational (de exemplu, daca S=16 si C=5 si ambele variabile sunt de tipul float, cu toate ca ele memoreaza valori intregi, S/C = 16/5 = 3,2). Acest lucru trebuia neaparat sa-l precizez, intrucat se poate gresi foarte usor la probleme de genul acesta.

Daca ai vreo nelamurire, nu ezita sa mi-o spui :)


mistretuandrei: la 2 pow was not declared in this scope
mistretuandrei: la 3 da rezultatul 3 45
mistretuandrei: nu mai conteaza am descoperit
mistretuandrei: mersi mult
theo166: Ma poate ajuta si pe mine cineva la intrebarile la info de pe profilul meu va rogg?
Alte întrebări interesante