[C++] Dynamiczna alokacja pamięci problem

[C++] Dynamiczna alokacja pamięci problem
AT
  • Rejestracja: dni
  • Ostatnio: dni
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.

Kopiuj
    int sum = 0;
    char* w = new char;
    itoa(l,w,10);
    for(int i = 0; i < sizeof(w)-1 ; i++) {
        sum += *(w++);    
    }
    cout << sum;
byku_guzio
  • Rejestracja: dni
  • Ostatnio: dni
0

omg...
tu masz naruszenie pamięci:

Kopiuj
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

AT
  • Rejestracja: dni
  • Ostatnio: dni
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 ?

byku_guzio
  • Rejestracja: dni
  • Ostatnio: dni
0

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

AT
  • Rejestracja: dni
  • Ostatnio: dni
0

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

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 260
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;

byku_guzio
  • Rejestracja: dni
  • Ostatnio: dni
0

ehhh, brakuje Ci podstaw podstaw.

Kopiuj
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;
AT
  • Rejestracja: dni
  • Ostatnio: dni
0

Ostatnie pytanie: co oznacza - '0' ?

byku_guzio
  • Rejestracja: dni
  • Ostatnio: dni
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.