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

Buna, cum pot numara zerourile consecutive dintr un numar?


boiustef: 1. numeri cati de 2 sunt de la impartirea numarului la 2
while (numar % 2 ==0)
{ ++d; numar /= 2; }
2. numeri cati de 5 sunt de la impartirea numarului la 5
while (numar % 5 ==0)
{ ++c; numar /= 5; }
zerouri=min(d,c);
boiustef: am gresit... nu am citit atent conditia...
Amerdo: E ok
Amerdo: Gen am un numar 100500 sunt 4 zerouri consecutive
Amerdo: 00 = 2 zerouri si + celelalte 2 = 4
Amerdo: Ca sa numar cate zerouri sunt intr un numar stiu, dar nu stiu pe pozitii consecutive.
boiustef: 10050020 sunt 4 consecutive ?
Amerdo: Da, orice trece de 2 zerouri este consecutiv
boiustef: acum incerc...
Amerdo: Poti sa ai de exemplu si 100000, se numara toate

Răspunsuri la întrebare

Răspuns de boiustef
0

Răspuns:

#include <iostream>

using namespace std;

long long num, zerocons, prima, prec, cif;

int main()

{

   cin >> num;

   prec=num %10; num/=10;

   while (num)

   {

       cif=num%10;

       if (cif==0)

       {

           if (prec==0)

           {

               if (prima==0) {zerocons+=2; prima=1;}

               else  ++zerocons;

           }

       }

       else prima=0;

       prec=cif;

       num/=10;

   }

   cout << zerocons;

}

Explicație:

Variabile folosite:

"zerocons", e clar, isi canta numele... :))

"cif", e cifra curenta cercetata

"prec", memorizeaza cifra precedenta

"prima", iata cu asta e mai complicat... ea semnalizeaza o prima aparitie a doua zerouri consecutive, nu neaparat sa fie prima in numar..

De exemplu avem numarul 3000200005

Numarul se parcurge de la dreapta la stanga.

prec ia valoarea 5, cif e 0, nu se memorizeaza perechea consecutiva,prec ia valoarea 0, se trece la urm 0, adica cif=0

faca si prec=0 si e prima pereche consecutiva, atunci zerocons creste cu 2, si prima=1, altfel zerocons creste cu 1.

Daca se intalneste o cifra diferita de zero, atunci prima=0, pentru a depista in continuare iara 2 zerouri consecutive...

:)))   nu sunt sigur daca am fost explicit...  nai meditezi asupra codului, si poti da si intrebari...  Succese la cercetare.


Amerdo: else prima=0;

prec=cif;

num/=10;
Amerdo: Dc a mai fost nevoie de un else prima = 0?
boiustef: daca cif nu e zero, atunci ...
Amerdo: Ah, da, eu m am uitat doar la a doua conditie
Amerdo: De accea am intrebat, credeam ca e pusa de doua ori s inu am observat ca mai e si conditia cu cifraprecedenta
boiustef: cele bune...
Alte întrebări interesante