ciao a tutti, sono nuovo su questo forum, e sono alle primissime armi per quando riguarda la programmazione in generale.
Sto facendo un esercizio che mi propone il libro ma non riesco a capire dove sbaglio e se sbaglio.
Con il while impostato a regine < 6 va e non va, alcune volte va in loop, con il 7 e 8 invece non va proprio.codice:#include <stdio.h>#include <time.h> #include <stdlib.h> #include <string.h> int board[8][8] = {{0}}; void printarray(void); void writearray(int,int); int funzione(void); int main() { int regine = 0, x, y; srand(time(NULL)); while(regine < 6) { if(funzione()) { do { x = rand() % 7; y = rand() % 7; } while(board[x][y]); ++regine; writearray( x, y); board[x][y] = 10; } else { memset(board, 0, 8*8*sizeof board[0][0]); regine = 0; } } printarray(); return 0; } void writearray( int X, int Y) { int i; for (i = 1; i < 8; i += 1) { if(X + i <= 7) board[X + i][Y] = 1; if(Y + i <= 7) { board[X][Y + i] = 1; if (X - i >= 0) board[X - i][Y + i] = 1; if(X + i <= 7) board[X + i][Y + i] = 1; } if(X - i >= 0) board[X - i][Y] = 1; if(Y - i >= 0) { board[X][Y - i] = 1; if (X - i >= 0) board[X - i][Y - i] = 1; if(X + i <= 7) board[X + i][Y - i] = 1; } } } void printarray(void) { int i, y; printf(" 1 2 3 4 5 6 7 8\n\n"); for (i = 0; i < 8; i += 1) { printf("%d ", i + 1); for (y = 0; y < 8; y += 1) { if (board[i][y] != 10) printf(" |"); else printf(" R |"); } printf("\n -------------------------------\n"); } } int funzione(void) { int i, x; for (i = 0; i < 8; i += 1) { for (x = 0; x < 8; x += 1) { if(!board[i][x]) return 1; } } return 0; }
E intrinseco all'algoritmo questo comportamento oppure sta qualcosa che non va nel codice?

Rispondi quotando