| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  13-07-2012, 13:14 | #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 13:19. | 
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 11:06.









 
		 
		 
		 
		





 
  
 



 
                        
                        










