• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pytanie odnosnie kodu

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
158 wizyt
pytanie zadane 25 listopada 2018 w C i C++ przez Padoski Użytkownik (990 p.)

Chcialem napisac kod zliczajacy sume cyfr danej liczby. I mam pytanko

#include <iostream>

using namespace std;

void dodawanieCyfr(string);

int main()
{
    string liczba;
    cout << "Podaj dowolna liczbe naturalna";
    cin>> liczba;
    dodawanieCyfr(liczba);
}
void dodawanieCyfr(string x)
{
    int suma=0;
    for(int i=0; x[i]!='\0'; i++)
    {
        suma = suma+x[i]-'0';
    }
    cout<<suma;
}

Co oznacza suma = suma+x[i]-'0';   . Dlaczego się odejmuje tu jakies '0'? PS. Kod działa. Czym jest to zero ktore sie odejmuje ?

1 odpowiedź

+1 głos
odpowiedź 25 listopada 2018 przez RafalS VIP (122,820 p.)
wybrane 25 listopada 2018 przez Padoski
 
Najlepsza

tablica asci wyglada tak:

48 - '0'
49 - '1'
50 - '2'
....
57 - '9'

char c = '2';
int i = (int) c; // i == 50

Jak z tego 50 zrobic 2?. Odjac 48 czyli kod zera. Inaczej mozesz o tym myslec tak, ze liczymy ile elementow za zerem jestesmy w tablicy ascii.

komentarz 25 listopada 2018 przez Padoski Użytkownik (990 p.)
dzieki, czaje :)
komentarz 27 lutego 2019 przez Piter10p Bywalec (2,750 p.)
Należy jednak pamiętać, że to ultrabrudne rozwiązanie. Powinieneś rzutować zmienną ze stringa na int. Np. funkcją atoi.

Dlaczego? Co jeżeli string jest sformatowany inaczej, niż ascii? Kod się posypie. A dziś ascii standardem raczej nie jest.

Poza tym kod ten jest ciężki w czytaniu. Trzeba chwilę pomyśleć, żeby dojść o co w nim chodzi. A pamiętaj: Miarą jakości kodu jest: co to/minutę ;)

Podobne pytania

0 głosów
1 odpowiedź 131 wizyt
pytanie zadane 27 lutego 2019 w HTML i CSS przez nichu Nowicjusz (140 p.)
0 głosów
1 odpowiedź 463 wizyt
pytanie zadane 19 czerwca 2020 w C i C++ przez Eriss69 Gaduła (4,470 p.)
0 głosów
0 odpowiedzi 300 wizyt
pytanie zadane 21 grudnia 2020 w Python przez ifuknowme555 Początkujący (410 p.)

93,441 zapytań

142,434 odpowiedzi

322,681 komentarzy

62,802 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...