Struktura

Szczur son
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 20
0

Witam, mam problem ze strukturą:

Kopiuj
#include "common.h"

int checkPossibleMoves(struct BoardField** board, int width, int height, int pieceX, int pieceY)
{
    if ((pieceX > width && pieceX < 0) || (pieceY > height && pieceY < 0))
        return 0;

    else {
        //	int x=pieceX;
        //	int y=pieceY;
        int z = (board[pieceX][pieceY]).piece;
        printf("%d ", z);
        printf("%d ", width);
        printf("%d ", height);
        printf("%d ", pieceX);
        printf("%d ", pieceY);
        return 1;
    }
}

w tak napisanym kodzie wszystko sie sypie, ale jeżeli wpiszę z palca powiedzmy (board[0][0]).piece; śmiga jak trzeba.

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
1

Nie pokazałeś kodu, nie da rady pomóc.

Szczur son
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 20
0

w załączniku jest całość, zaznaczam że nie jest to mój program, moim zadaniem jest dopisanie rozwiązania

Pebal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 111
2
Kopiuj
if ((pieceX > width && pieceX < 0) || (pieceY > height && pieceY < 0))
    return 0;

Powyższy warunek jest zły, bo nigdy nie zostanie spełniony. Indeks nigdy nie będzie równocześnie mniejszy od 0 i większy od max. Dodatkowo powinieneś sprawdzać, czy index jest większy lub równy szerokości i wysokości, gdyż tablice są indeksowane od 0. Powinno być:

Kopiuj
if (pieceX >= width || pieceX < 0 || pieceY >= height || pieceY < 0)
    return 0;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.