Tablica liczb int nie odczytuje wartości większych niż 9 (użycie wartości zamiast indeksu)

0
#include <iostream>

using namespace std;

int main()
{
    cout<<"Program zliczajacy sprzedaz ksiazki C++ dla "
    <<"ociezalych w ciagu roku\n";
    const char * miesiace[12] =
    {
        miesiace[0]="Styczen",
        miesiace[1]="Luty",
        miesiace[2]="Marzec",
        miesiace[3]="Kwiecien",
        miesiace[4]="Maj",
        miesiace[5]="Czerwiec",
        miesiace[6]="Lipiec",
        miesiace[7]="Sierpien",
        miesiace[8]="Wrzesien",
        miesiace[9]="Pazdziernik",
        miesiace[10]="Listopad",
        miesiace[11]="Grudzien"
    };
    int liczbasp[12];
    for (int i=0; i<12; ++i)
    {
        cout<<"Podaj liczbe sprzedazy za miesiac - "<<miesiace[i]<<": ";
        cin>>liczbasp[i];
    }
    int suma=0;
    for (int x : liczbasp)
        cout<<liczbasp[x]<<endl;
    cout<<"Laczna sprzedaz rocznie: "<<suma;
    return 0;
}

W przypadku podania liczb większych niż 9 liczba obok jest albo odrzucana, albo do tablicy wczytywany jest przypadkowy wynik. Proszę o pomoc.

1
    {
        miesiace[0]="Styczen",
        miesiace[1]="Luty",
        miesiace[2]="Marzec",
        miesiace[3]="Kwiecien",
        miesiace[4]="Maj",
        miesiace[5]="Czerwiec",
        miesiace[6]="Lipiec",
        miesiace[7]="Sierpien",
        miesiace[8]="Wrzesien",
        miesiace[9]="Pazdziernik",
        miesiace[10]="Listopad",
        miesiace[11]="Grudzien"
    };

ta konstrukcja jest bez sensu, nawet jeśli przez przypadek "działa".
Poprawnie:

char const* miesiace[12] = { "a", "b", "c" /* ... */ }; 
    for (int x : liczbasp)
        cout<<liczbasp[x]<<endl;

x jest elementem tablicy, nie indeksem. liczbasp[x] nie ma sensu, wypisuj samo x.

0

Racja, pomyliłem się. Teraz wszystko działa popawnie. Dziękuję za pomoc, w przypadku pętli zakresowej to cenna uwaga.

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