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

Problem z c++. Program przestał działać

Konkurs Mistrz Programowania
0 głosów
263 wizyt
pytanie zadane 24 października 2015 w C i C++ przez Piotr Karaś Początkujący (460 p.)
#include <iostream>
#include <string>

using namespace std;

/*
[0][0]|[0][1]|[0][2]|[0][3]|[0][4]
------|------|------|------|------
[1][0]|[1][1]|[1][2]|[1][3]|[1][4]
------|------|------|------|------
[2][0]|[2][1]|[2][2]|[2][3]|[2][4]
------|------|------|------|------
[3][0]|[3][1]|[3][2]|[3][3]|[3][4]
------|------|------|------|------
[4][0]|[4][1]|[4][2]|[4][3]|[4][4]
*/

int main()
{
    string pole[5][5];

    for (int i=0;i<=5;i++)
    {
        for(int j=0;j<=5;j++)
        {
            pole[i][j]="0";
           cout<<pole[i][j];
        }
    cout<<endl;
    }


    return 0;
}

 

 

wyświetla mi:

 

00000

00000

00000

00000

0000

 

 

i program przestał działać :/

1 odpowiedź

0 głosów
odpowiedź 24 października 2015 przez szmq Pasjonat (22,770 p.)
edycja 24 października 2015 przez szmq
 
Najlepsza
#include <iostream>
#include <string>

using namespace std;

/*
[0][0]|[0][1]|[0][2]|[0][3]|[0][4]
------|------|------|------|------
[1][0]|[1][1]|[1][2]|[1][3]|[1][4]
------|------|------|------|------
[2][0]|[2][1]|[2][2]|[2][3]|[2][4]
------|------|------|------|------
[3][0]|[3][1]|[3][2]|[3][3]|[3][4]
------|------|------|------|------
[4][0]|[4][1]|[4][2]|[4][3]|[4][4]
*/

int main()
{
    string pole[5][5];

    for (int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
        {
            pole[i][j]="0";
           cout<<pole[i][j];
        }
    cout<<endl;
    }


    return 0;
}

 

Deklarujesz tablice dwuwymiarową string po 5 elementów, a w pętli for inkrementujesz zmienną zaczynając od 0 a kończąc na zmienna = 5. Pięć elementów przy zadeklarowanej tablicy czyli zajmują indeksy w  0,1,2,3,4. Ty pytasz o 5 indeks dla i oraz j, którego nie ma. Więc błąd powoduje takie problemy dlatego, że <= znaczy większe lub równe pięć.
 

 string pole[5] - [0][1][2][3][4]
 for int i = 0; i <= 5; i++

sprawdzi:

pole[0] - i to 0

pole[1]- i to 1

pole[2]- i to 2

pole[3]- i to 3

pole[4]- i to 4

pole[5] // ktorego nie ma - bo i = 5 dlatego, że i <= 5

komentarz 24 października 2015 przez Piotr Karaś Początkujący (460 p.)
Zamieniłem na czwóreczke tą piąteczke i działa :D dzięki :p
komentarz 24 października 2015 przez szmq Pasjonat (22,770 p.)
powodzenia ;)

Podobne pytania

0 głosów
3 odpowiedzi 290 wizyt
pytanie zadane 2 grudnia 2015 w C i C++ przez Karoll98 Początkujący (400 p.)
+1 głos
3 odpowiedzi 1,204 wizyt
pytanie zadane 26 września 2015 w Systemy operacyjne, programy przez niezalogowany
0 głosów
1 odpowiedź 436 wizyt
pytanie zadane 19 lutego 2017 w C i C++ przez Damian67114 Początkujący (250 p.)

93,656 zapytań

142,577 odpowiedzi

323,100 komentarzy

63,174 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

Kursy INF.02 i INF.03
...