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

Po dodaniu tablicy string h[8] program przestaje działać

VPS Starter Arubacloud
0 głosów
182 wizyt
pytanie zadane 8 marca 2018 w C i C++ przez MKarolS Nowicjusz (200 p.)

Otóż wszystko mi śmiga póki nie dodaję tablicy string h do pętli for i dalszej części kodu:

#include <cstdlib>
#include <iostream>
#include <stdio.h>
using namespace std;

int main()
{
    string a[8];
    string b[8];
    string c[8];
    string d[8];
    string e[8];
    string f[8];
    string g[8];
    string h[8];

    for(int j=1; j<9; j++)
    {
        a[j]='O';
        b[j]=' ';
        c[j]=' ';
        d[j]=' ';
        e[j]=' ';
        f[j]=' ';
        g[j]=' ';
        h[j]='X';
    }

    cout<<"++===++===+===+===+===+===+===+===+===++===================++"<<endl;
    cout<<"|| h || "<<h[1]<<" | "<<h[2]<<" | "<<h[3]<<" | "<<h[4]<<" | "<<h[5]<<" | "<<h[6]<<" | "<<h[7]<<" | "<<h[8]<<" ||  Biala druzyna: O ||"<<endl;
    cout<<"++===++---+---+---+---+---+---+---+---++===================++"<<endl;
    cout<<"|| g || "<<g[1]<<" | "<<g[2]<<" | "<<g[3]<<" | "<<g[4]<<" | "<<g[5]<<" | "<<g[6]<<" | "<<g[7]<<" | "<<g[8]<<" || Czarna druzyna: X ||"<<endl;
    cout<<"++===++---+---+---+---+---+---+---+---++===================++"<<endl;
    cout<<"|| f || "<<f[1]<<" | "<<f[2]<<" | "<<f[3]<<" | "<<f[4]<<" | "<<f[5]<<" | "<<f[6]<<" | "<<f[7]<<" | "<<f[8]<<" ||                   ||"<<endl;
    cout<<"++===++---+---+---+---+---+---+---+---++                   ||"<<endl;
    cout<<"|| e || "<<e[1]<<" | "<<e[2]<<" | "<<e[3]<<" | "<<e[4]<<" | "<<e[5]<<" | "<<e[6]<<" | "<<e[7]<<" | "<<e[8]<<" ||                   ||"<<endl;
    cout<<"++===++---+---+---+---+---+---+---+---++                   ||"<<endl;
    cout<<"|| d || "<<d[1]<<" | "<<d[2]<<" | "<<d[3]<<" | "<<d[4]<<" | "<<d[5]<<" | "<<d[6]<<" | "<<d[7]<<" | "<<d[8]<<" ||                   ||"<<endl;
    cout<<"++===++---+---+---+---+---+---+---+---++                   ||"<<endl;
    cout<<"|| c || "<<c[1]<<" | "<<c[2]<<" | "<<c[3]<<" | "<<c[4]<<" | "<<c[5]<<" | "<<c[6]<<" | "<<c[7]<<" | "<<c[8]<<" ||                   ||"<<endl;
    cout<<"++===++---+---+---+---+---+---+---+---++                   ||"<<endl;
    cout<<"|| b || "<<b[1]<<" | "<<b[2]<<" | "<<b[3]<<" | "<<b[4]<<" | "<<b[5]<<" | "<<b[6]<<" | "<<b[7]<<" | "<<b[8]<<" ||                   ||"<<endl;
    cout<<"++===++---+---+---+---+---+---+---+---++                   ||"<<endl;
    cout<<"|| a || "<<a[1]<<" | "<<a[2]<<" | "<<a[3]<<" | "<<a[4]<<" | "<<a[5]<<" | "<<a[6]<<" | "<<a[7]<<" | "<<a[8]<<" ||                   ||"<<endl;
    cout<<"++===++===+===+===+===+===+===+===+===++===================++"<<endl;
    cout<<"||XXX|| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 ||"<<endl;
    cout<<"++===++===+===+===+===+===+===+===+===++"<<endl;

    return 0;
}

Po usunięciu h[j] z pętli for oraz tekstu dalej, wszystko działa.

2 odpowiedzi

+1 głos
odpowiedź 8 marca 2018 przez adrian17 Ekspert (344,100 p.)
wybrane 8 marca 2018 przez MKarolS
 
Najlepsza
for(int j=1; j<9; j++)

Wychodzisz poza tablicę. Tablica jest indeksowana od 0 do 7, a nie od 1 do 8.

(BTW, jeśli to mają być zawsze tylko pojedyncze znaki jak 'x', to wystarczy char zamiast stringa.)

komentarz 8 marca 2018 przez MKarolS Nowicjusz (200 p.)

No tak, dzięki smiley

Zapomniałem o tym (dawno się nie bawiłem w c++ i teraz postanowiłem do niego wrócić)

I skorzystałem też z rady i podmieniłem string na char (dziwne tylko jest to, że tak właściwie popełniłem ten błąd na wszystkich string, a błąd wyskakiwał dopiero gdy dodawałem tablicę "h", a przed tym wszystkie pozostałe działały jak należy bez jakichkolwiek błędów i wszystko się wyświetlało frown )

Jeszcze raz dzięki i to będzie na tyle

0 głosów
odpowiedź 8 marca 2018 przez Qwerty96 Stary wyjadacz (13,580 p.)
Tablice indeksuje się od zera. Dla tablicy ośmioelementowej indeks musi być w zakresie od 0 do 7. Indeks 8 jest już poza zakresem tablicy.

PS. Dodaj #include <string>

Podobne pytania

0 głosów
4 odpowiedzi 185 wizyt
pytanie zadane 27 października 2015 w C i C++ przez barteku12 Obywatel (1,340 p.)
0 głosów
1 odpowiedź 277 wizyt
pytanie zadane 16 marca 2016 w PHP przez Else Stary wyjadacz (12,260 p.)
0 głosów
1 odpowiedź 273 wizyt
pytanie zadane 30 maja 2016 w C i C++ przez xjakubekx Obywatel (1,280 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...