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

Buna brainly! Am o problema la info (clasa a 9a, nu am facut vectorii la info) si trebuie sa o scriu in c++
se citete un nr n de la tastatura. sa se calculeze numarul de cifre obtinute prin alaturrea numerelor de la 1 la n.
exemplu n=11
1234567891011
se afiseaza 13

Eu am scris-o corect, a trecut de programul de verificari.
imi apare si tabelul negru dar daca introduc valoarea n nu se intampla nimic. sora-mea spune ca nu compileaza.

as vrea sa rezolvati si voi problema si sa incerc si variantele voastre, am impresia ca a mea e cam complicata
multumesc!

Anexe:

boiustef: problema vine de pe careva site?
ModFriendly: De la profa mea de info

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

using namespace std;

int n, c=1, z=1, nrcif=0;

int main()

{

   cout << "n= "; cin >> n;

   while (z<n)

   {

       if (z*10>n) nrcif=nrcif+(n-z+1)*c;

       else

       {

           if (z*10==n) nrcif=nrcif+(n-z)*c+c+1;

           else nrcif=nrcif+9*z*c;

       }

       z=z*10; c=c+1;

   }

   cout << nrcif;

}

Explicație:

prin z notez zecii, adică z pornesc de la 1 şi măresc repetat de 10 ori pentru a trece la alt ordin: unităţi, zeci sute, ...

era bine să observi că lucrează această formulă  9*z*c:

de la 1 la 9 pt z=1, c=1 avem 9*1*1=9 cifre există:

de la 10 la 99 şi z=10, c=2 avem 9*10*2=180 cifre există

de la 100 la 999 şi z=100, c=3 avem 9*100*3=2700 cifre există şamd

Analizeată codul şi sper să ânţelegi ce logică am pus... Succese!


boiustef: poate este şi altă logică, dar până ce am văzut aşa...
boiustef: c e folosit pentru cîte cifre are un număr din ordinul respectiv, adică de la 10 la 99 numerele sunt de 2 cifre
Alte întrebări interesante