[C++] Dynamiczna alokacja pamięci problem

0

Posiadam liczbe l którą chce przerobić na tablice char i potem zsumować każdą cyfre. Problem jest tak, że gdy chce wypisać *(w++) czyli to na co wskazuje wzkaźnik można też tak w[i] to działa tak samo i wyświetla poprawną wartość czyli dla liczby 100 bedzie to 1 0 0 problem sie pojawia jak chce dodać te cyfry do siebie. jeśli na początku su wynosi 0 i ja chce dodać pierwszy element czyli bedzie to 1 to powinno być 1 a jest 49. Pewnie chodzi o typy, ale rzutowanie też nie bardzo tu pomaga.

    int sum = 0;
    char* w = new char;
    itoa(l,w,10);
    for(int i = 0; i < sizeof(w)-1 ; i++) {
        sum += *(w++);    
    }
    cout << sum;
0

omg...
tu masz naruszenie pamięci:

char* w = new char;
itoa(l,w,10);

warunek w forze to też jakiś koszmar - sizeof zwróci Ci wielkość wskaźnika, a nie długość napisu z liczbą.
Co do dodawania - http://pl.wikipedia.org/wiki/ASCII

0

Właśnie nie bardzo wiedziałem czym zwrocic długość. length nie bardzo chce działac. Mógłbyś wyjaśnic o co chodzi z naruszeniem pamieci ?

0

chcesz zmieścić napis, który ma kilka znaków w zmiennej typu char... char to jest JEDEN znak.
www.google.com strlen

0

itoa przyjmuje jak jeden z parametrów wzkaźnik do char wiec jak niby mam to inaczej zrobic.

0

Nie wskaźnik do char tylko tablicę(choć to ogólnie jedno i to samo). char* w = new char[(na przyklad)10]; zamiast char* w = new char;

0

ehhh, brakuje Ci podstaw podstaw.

int sum = 0;
char *w;
w = new char[10];
iota(l, w, 10);
for(int i = 0; i < strlen(w); i++)
    sum += w[i] - '0';
cout << sum << endl;
0

Ostatnie pytanie: co oznacza - '0' ?

0

http://pl.wikipedia.org/wiki/ASCII - char przetrzymuje znaki jako kod ASCII - przeczytaj to co Ci podlinkowałem i wywnioskuj. Jak będziesz chciał zawsze dostawać wszystko na tacy to niczego się nie nauczysz.

Macron napisał(a)

Nie wskaźnik do char tylko tablicę(choć to ogólnie jedno i to samo).
Nie, to w żadnym wypadku nie jest to samo. Wskaźnik to wskaźnik, a tablica to tablica.

1 użytkowników online, w tym zalogowanych: 0, gości: 1