|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jul 2012
Messaggi: 1
|
[C] Il giro del cavallo - aiuto
Ciao a tutti sono nuovo del forum, mi sono iscritto per chiedere aiuto sul programma seguente.
![]() Sto scrivendo un programma per il giro del cavallo, ovvero il programma, prendendo in input la posizione del cavallo(riga e colonna), dovrebbe mandare in giro il cavallo sulla scacchiera. Quando eseguo il programma mi stampa soltando il numero di volte che esegue lo spostamento nella cella che prende in input. Specifico che non sto scrivendo un programma efficiente nel senso che mi basta anche che il cavallo si sposti di qualche posizione. Vi posto il codice ![]() Codice:
#include <stdio.h> int Eseguimossa(int matrice[][8], int cont_r, int cont_c); void StampaScacchiera(int matrice[][8], int cont_r, int cont_c); int horizontal[8] = {2,1,-1,-2,-2,-1,1,2}; int vertical[8] = {-1,-2,-2,-1,1,2,2,1}; int main() { int scacchiera[8][8]; int kr; //contatore per le righe (rigacorrente) int kc; //contatore per le colonne (colonnacorrente) int k_mosse; //contatpre per il numero di mosse //imposto tutti gli elementi della scacchiera a 0 for (kr=0; kr<=7; kr++) { for (kc=0; kc<=7; kc++) { scacchiera[kr][kc] = 0; } } //inserisco la posizione del cavallo printf("Inserisci la posizione di partenza del cavallo:\n"); printf("Numero di riga: "); scanf("%d", &kr); printf("Numero di colonna: "); scanf("%d", &kc); for (k_mosse=1; k_mosse<=64; k_mosse++) { Eseguimossa(scacchiera, kr, kc); scacchiera[kr][kc] = k_mosse; StampaScacchiera(scacchiera, kr, kc); } return 0; } //muove il cavallo in base alla posizione int Eseguimossa(int matrice[][8], int cont_r, int cont_c) { int movenumber=0; /*indice per la mossa da eseguire utilizzato per vertical e horizontal*/ while (cont_r<=7) { cont_r += vertical[movenumber]; cont_c += horizontal[movenumber]; if (cont_r>=0 && cont_r<=7 && cont_c>=0 && cont_c<=7 && matrice[cont_r][cont_c]==0) break; movenumber++; } return matrice[cont_r][cont_c]; } void StampaScacchiera(int matrice[][8], int cont_r, int cont_c) { for (cont_r=0; cont_r<=7; cont_r++) { printf("\n"); for (cont_c=0; cont_c<=7; cont_c++) { printf("%3d", matrice[cont_r][cont_c]); } } printf("\n"); } ![]() Ultima modifica di edoedo91 : 13-07-2012 alle 12:19. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:07.