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

Pytanie odnosnie kodu

0 głosów
215 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ź 174 wizyt
pytanie zadane 27 lutego 2019 w HTML i CSS przez nichu Nowicjusz (140 p.)
0 głosów
1 odpowiedź 721 wizyt
pytanie zadane 19 czerwca 2020 w C i C++ przez Eriss69 Gaduła (4,470 p.)
0 głosów
0 odpowiedzi 344 wizyt
pytanie zadane 21 grudnia 2020 w Python przez ifuknowme555 Początkujący (410 p.)

93,691 zapytań

142,610 odpowiedzi

323,215 komentarzy

63,215 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...