Informatică, întrebare adresată de Pisicuta1307, 9 ani în urmă

Cerinţa
Se dă un număr natural n, apoi n numere naturale. Să se calculeze suma obținută prin adunarea primei cifre a celor n numere citite.

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

Date de ieşire
Programul afișează pe ecran numărul S, reprezentând suma obținută prin adunarea primei cifre a celor n numere citite.

Restricţii şi precizări
•0 < n < 1000
•cele n numere citite vor fi mai mici decât 2000000

1. Exemplu:
Intrare
5
100 212 3 45 5021
Ieșire
15
Explicație
S-au citit 5 numere. Trebuie adunate prima cifra a fiecarui numar, iar suma lor este 1+2+3+4+5=15.


PROGRAMUL MEU ESTE ACESTA:
#include
using namespace std;
int main()
{
int n,x,i,s=0;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>x;
while(x!=0)
{
x=x/10;
s=s+x;
}
n=n/10;
}
cout< return 0;
}
INSA MIE LA COMPILARE IMI DA 11 NU 15 CUM AR TREB SA DEA PT EXEMPLUT DE MAI SUS.
VA ROG,MA PUTETI AJUTA??

Răspunsuri la întrebare

Răspuns de NiceShotVi
14
Uite aici un program care functioneaza (e testat de mine):

#include <iostream>

using namespace std;

int main()
{
    int n, s = 0, x, i;
    cin >> n;
  
    for(i = 0; i < n; i++)
    {
        cin >> x;
        while(x > 9)
            x /= 10;
        s += x;
    }
    cout << "Suma primelor cifre: " << s << endl;
    return 0;
}

Pisicuta1307: Multumesc, insa am o intrebare
NiceShotVi: te ascult
Pisicuta1307: Eu cand am rulat programul (al meu, cel de mai sus) prima daca scisesem in while si eu tot >9 dar eu in exemplul problemei aveam si un 3 si din cauza asta scrisesem pana la urma !=0. Deci intrebarea este: la tine functioneaza si cu o singura cifra daca ai dat >9
NiceShotVi: da - fara niciun fel de problema
NiceShotVi: pai oricare numar x > 9 are 2 cifre
NiceShotVi: sau mai mult
NiceShotVi: asa ca se va ajunge la una singura
Pisicuta1307: Aha, multumesc inca odata
NiceShotVi: np :))
Alte întrebări interesante