pętlą zagnieżdżona przechodzi tylko raz

0

Mam za zadanie napisać pogram, który będzie zawierał tablicę dwuwymiarową i w niej dane dotyczące sprzedaży książek. Problemem jest to, że pętla przechodzi tylko dla pierwszego roku i jest koniec. Co tutaj jest źle?

#include<iostream>

int main ()

{
using std::cout;
using std::cin;

std::string * miesiace = new std::string[12]
{
"styczeń", "luty", "marzec", "kwiecien", "maj", "czerwiec", "lipiec", "sierpien", "wrzesien", "pazdziernik", "listopad", "grudzien"
};

int sprzedaz[3][12];
int suma = 0;
int suma_razem = 0;
int licznik = 1;

for(int i = 0; i < 3; i++)
{
for(int j=0; j < 12; j++)
    {
      cout << *miesiace++ << " sprzedaz: " << std::endl;
      cin >> sprzedaz[i][j];
      suma+= sprzedaz[i][j];
    }
    cout <<"Sprzedaz w " << licznik <<" roku wynosi: " << suma <<std::endl;

    suma_razem+= suma;
    licznik++;
}

cout <<"Suma w trzech latach wynosi: " << suma_razem;

return 0;
}

@Edit dzięki wielkie. Pozdrawiam

1

http://ideone.com/6juBG8
*miesiace++ - na drugim obrocie zewnętrznej pętli zaczynasz mazać po pamięci.

0

Tak a propos, gdy zrobiłbyś po ludzku:

const char *miesiace[]={ "styczeń", "luty", "marzec", "kwiecien", "maj", "czerwiec", "lipiec", "sierpien", "wrzesien", "pazdziernik", "listopad", "grudzien" };

ewentualnie:

const string miesiace[]={ "styczeń", "luty", "marzec", "kwiecien", "maj", "czerwiec", "lipiec", "sierpien", "wrzesien", "pazdziernik", "listopad", "grudzien" };

to kompilator nie przepuściłby tamtego błędu.

2
std::string * 

Generalnie nie robi się wskaźników do klas z STL-a.

Dla przykładu std::string:

• tablice rób typu string[] lub const string[]
• kolekcje np. vector<string>
• jako parametr funkcji przekazuj const string&, a jeśli chcesz koniecznie modyfikować stringa, string&
• wartość zwracana z funkcji: string.

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