Witam, piszę w C++ warcaby, starałem się napisać voida sprawdzającego, czy gdzieś na planszy biały może zbijać.
Zrobiłem to za pomocą pętli, ale cały if jest podkreśłony z komunikatem:
Warning C6385 Reading invalid data from 'plansza': the readable size is '64' bytes, but '-8' bytes may be read.
Wiem, że kompilator odczytuje błędne dane, ale nie jestem pewny co poprawić w kodzie, żeby uporać się z komunikatem (który występuje 10 razy w tym ifie).
Bylbym wdzięczny za wskazanie błędu lub poprawienie kodu. :)
#include <iostream>
#include <cstdlib>
//bialy-o czarny-x
using namespace std;
int i, j, nr, wier, kol, nwier, nkol, a, x, z, wiersz, kolumna;
char plansza[8][8] = { ' ','o',' ','o',' ','o',' ','o',
'o',' ','o',' ','o',' ','o',' ',
' ','o',' ','o',' ','o',' ','o',
' ',' ',' ',' ',' ',' ',' ',' ',
' ',' ',' ',' ',' ',' ',' ',' ',
'x',' ','x',' ','x',' ','x',' ',
' ','x',' ','x',' ','x',' ','x',
'x',' ','x',' ','x',' ','x',' '
};
void BIALYsprawdzacz()
{
x = 0;
for (wiersz = 0; wiersz < 8; wiersz++)
{
for (kolumna = 0; kolumna < 8; kolumna++)
{
if (plansza[wiersz][kolumna] == 'o' && ((plansza[wiersz + 1][kolumna + 1] == 'x' && plansza[wiersz + 2][kolumna + 2] == ' ') || (plansza[wiersz + 1][kolumna - 1] == 'x' && plansza[wiersz + 2][kolumna - 2] == ' ') ||
(plansza[wiersz - 1][kolumna - 1] == 'x' && plansza[wiersz - 2][kolumna - 2] == ' ') || (plansza[wiersz - 1][kolumna + 1] == 'x' && plansza[wiersz - 2][kolumna + 2] == ' ')))
{
x = 1;
}
else
{
x = 0;
}
}
}
}
Nie jest to cały cpp, tylko ten void.