Programma si blocca (a volte)

di il
5 risposte

Programma si blocca (a volte)

Ciao, mi sto approcciando per le prime volte al C facendo qualche esercizio. il seguente programma per generare una sorta di cammino casuale in una matrice mi si blocca a metà ogni tanto, cioè: magari va una volta, due, tre, ecc consecutive e poi se lo faccio partire una n-sima volta si blocca. sapete dirmi il perchè e magari cosa posso fare per rimediare?? grazie in anticipo . ps: lo faccio partire da prompt
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
 /* inizializza vettore di punti '.' */

   int i = 0, j = 0, mossa, passi[4];

   char vet[10][10];

   for (i = 0 ; i <= 9; i++)
   {
	for (j = 0 ; j <= 9 ; j++)
	{
	   vet[i][j] = '.';
	   printf("%c ", vet[i][j]);
	   if (j == 9) printf("\n");
	}
   }

   printf("\n\n");
   
   /*cammino casuale*/

   i = 0; j = 0;
   srand( (unsigned) time(NULL));

   for (char c = 'A' ; c <= 'Z' ; c++)
   {
	vet[i][j] = c ;
	
        int passi[4] = { 1 , 1 , 1 , 1 };
	repeat:
	mossa = rand() % 4;

	if (mossa == 3) 
	{
	    if (vet[i][j+1] == '.' && j != 9) { j++; continue; }
	    else passi[mossa] = 0;
	}

	else if (mossa == 2) 
	{
	    if (vet[i+1][j] == '.' && i != 9) { i++; continue; }
	    else passi[mossa] = 0;

	} 

	else if (mossa == 1)
	{
	    if (vet[i][j-1] == '.' && j != 0) { j--; continue; }
	    else passi[mossa] = 0;
	} 

	else 
	{
	    if (vet[i-1][j] == '.' && i != 0) { i--; continue; }
	    else passi[mossa] = 0;
	}
	
	if (passi[0] == 0 && passi[1] == 0 && passi[2] == 0 && passi[3]) break;
	else goto repeat;
   }
   
    /*Stampa il vettore*/

   for (i = 0 ; i <= 9; i++)
   {
	for (j = 0 ; j <= 9 ; j++)
	{
	   printf("%c ", vet[i][j]);
	   if (j == 9) printf("\n");
	}
   }

   return 0;


}

5 Risposte

  • Re: Programma si blocca (a volte)

    Che vuol dire si blocca? Hai fatto un po' di debugging?
  • Re: Programma si blocca (a volte)

    oregon ha scritto:


    Che vuol dire si blocca? Hai fatto un po' di debugging?
    come vedi il programma prima stampa una matrice con soli punti e poi di seguito con il cammino casuale generato. quando avvio alcune volte si blocca appena sotto la matrice di soli punti e non termina il programma. non so come fare il debug
  • Re: Programma si blocca (a volte)

    Questa è corretta

    if (passi[0] == 0 && passi[1] == 0 && passi[2] == 0 && passi[3]) break;

    ?
  • Re: Programma si blocca (a volte)

    Mi era sfuggito! Ti ringrazio!
  • Re: Programma si blocca (a volte)

    Prego... a volte basta rileggere quello che si scrive
Devi accedere o registrarti per scrivere nel forum
5 risposte