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

Działania matematyczne na stringach

Object Storage Arubacloud
0 głosów
1,233 wizyt
pytanie zadane 26 grudnia 2017 w C i C++ przez DeMS Nowicjusz (150 p.)

Witam. Mam problem z działaniami matematycznymi na stringach.

KOD

(Program nie jest jeszcze całkowicie skończony).

Problem można zauważyć już w linijce 38/39. Jeśli podamy pesel to program zgodnie z
cout<<pesel[0]<<endl; wyświetli wpisaną wartość, lecz gdy ma zrobić a=10* pesel[0]; pobiera dane liczby z tablicy ASCII i wtedy wykonuje działanie matematyczne. Nie wiem czy gdzieś popełniłem błąd czy może taki urok stringów, o którym nie wiedziałem.

Byłbym wdzięczny, gdyby ktoś mógł mi to wytłumaczyć i ewentualnie nakierować na odpowiednie tory :)

2 odpowiedzi

+1 głos
odpowiedź 26 grudnia 2017 przez Sebastian Fojcik Nałogowiec (43,040 p.)
wybrane 26 grudnia 2017 przez DeMS
 
Najlepsza

Jest dokładnie tak jak piszesz. pesel[0] to nie jest pierwsza cyfra peselu, tylko kod znaku tej cyfry w ASCII. Aby wykonać poprawne mnożenie musisz użyć takiej sztuczki: 

string str = "2";
int n = 4*str[0] // tutaj jest 4*50, bo kod cyfry '2' w ASCII to 50

n = 4*(str[0]-'0'); // tutaj jest 4*2, czyli OK. 

Aby zrozumieć dlaczego to działa musiałbyś popatrzeć na kod cyfry '2' oraz cyfry '0' w ASCII. Odejmij od siebie kody tych znaków i zobacz co otrzymasz ;-)

komentarz 26 grudnia 2017 przez DeMS Nowicjusz (150 p.)
No tak. Przeglądałem tablicę ASCII ale nie pomyślałem nad tym trikiem. Proste i sprytne. Dziękuję bardzo :)
0 głosów
odpowiedź 26 grudnia 2017 przez SQnera Początkujący (280 p.)
Z tego co się orientuję to musisz urzyc funkcji stoi() (string to int), bardzo łatwo znajdziesz o niej informację w internecie. Inaczej kompilator przez domniemanie pobierze liczbowe wartość liter z ASCI a nie o to chodź.
komentarz 26 grudnia 2017 przez DeMS Nowicjusz (150 p.)
Już wcześniej próbowałem tej metody niestety bezskutecznie. Jednak błąd wynikał z mojej winy, ponieważ próbowałem użyć stoi na całą liczbę pesel, a to było po prostu za dużo. Jednak funkcja spełnia swoje zadanie jako konwerter dnia, roku i miesiąca w moim programie. Dziękuję bardzo :)

Podobne pytania

0 głosów
4 odpowiedzi 1,791 wizyt
pytanie zadane 15 grudnia 2017 w C i C++ przez n0s1gnal Użytkownik (700 p.)
0 głosów
0 odpowiedzi 123 wizyt
pytanie zadane 27 grudnia 2019 w C i C++ przez amtrax Dyskutant (9,630 p.)
0 głosów
0 odpowiedzi 582 wizyt
pytanie zadane 28 października 2016 w Rozwój zawodowy, nauka, praca przez Roksana Nowicjusz (120 p.)

92,580 zapytań

141,433 odpowiedzi

319,665 komentarzy

61,966 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...