Witam!
Podczas pisania pewnego prostego programu wykryłem błąd. Mianowicie, program ma zliczać sumę cyfr, które są przechowane w tablicy typu char do liczby całkowitej typu int. Wszystko jest dobrze dopóki tablica nie przechowuje takiej danej a103 (pierwszy znak zawsze musi być literą alfabetu, a reszta cyframi). Wtedy suma wynosi 1, bo wszystkie inne cyfry, które wystąpią po zerze nie są już zliczane. Dajmy na to taki kod:
#include
#include
int main()
{
using namespace std;
char tablica[10];
int suma = 0;
int licznik;
//wczytanie tablicy, pierwszy znak to litera, reszta (reszta < 10) to cyfry
cin >> tablica;
//petla, dzieki ktorej tablica bedzie przechowywac cyfry, a nie kod ascii tych cyfr
for (licznik = 1; licznik < strlen(tablica); licznik++)
tablica[licznik] = tablica[licznik] - '0';
//wyliczenie sumy cyfr
for (licznik = 1; licznik < strlen(tablica); licznik++)
suma = suma + tablica[licznik];
//wypisanie danych
cout << suma << endl;
return 0;
}
Kiedy wpiszemy do tablicy s123 Program wypisze sumę 6. Kiedy na wejściu wpiszemy jednak z30012 to suma wynosi 3, a powinna 6. Tak samo się dzieje kiedy całą liczbę z tablicy chcę przepisać do zmiennej int. Cyfry po jakimkolwiek, zerze są pomijane. Co robię źle i jak temu zaradzić?