Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di cles
    Registrato dal
    Mar 2010
    Messaggi
    25

    [C] cammino casuale alfabeto

    Ciao,
    devo generare un cammino casuale dell'alfabeto all'interno di un array 10x10 e dopo molti tentativi sono in confusione.Posto il codice fatto finora con molte prove e,quindi, probabilmente disordinato.
    Spero che qualcuno possa aiutarmi,grazie.

    codice:
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    #define N 10
    
    int main()
    {
    	char griglia[N][N]={0},a,b;
    	char l,m='A';
    	int num_cas;
    
    	srand ((unsigned)time(NULL));		
    
    	for(a=0;a<N;a++)					
    		for(b=0;b<N;b++)
    			griglia[a][b] = '.';
    
    		for(a=0,b=0,l=0;l<26;l++){
    			while(griglia[a][b]=='.')
    			griglia[a][b] = m++;
    			num_cas = rand()% 4;
    			if(num_cas == 0){
    				if(a>0)
    					a -= 1;	
    				else break;}
    			else if(num_cas == 1){
    				if(b<9)
    					b += 1;
    				else break;}
    			else if (num_cas == 2){
    				if(a<9)
    					a += 1;
    				else break;}
    			else if (num_cas == 3){
    				if(b>0)
    					b -= 1;
    				else break;}}
    
    	for(a=0;a<N;a++){
    		printf("\n\n\t\t\t");
    		for(b=0;b<N;b++)
    			printf ("%c  ",griglia[a][b]);}
    		printf("\n\n\n\n");
    	
    	return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ma il problema del tuo codice qual è ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di cles
    Registrato dal
    Mar 2010
    Messaggi
    25
    non funziona,devo fare in modo che le lettere non si sovrappongano e che non escano dalla griglia.

    Stò facendo mille prove ma non riesco a trovare una luce.....

  4. #4
    Utente di HTML.it L'avatar di cles
    Registrato dal
    Mar 2010
    Messaggi
    25
    ora sono arrivato a questo punto ma penso che si sovrappongano le lettere:

    codice:
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    #define N 10
    
    int main()
    {
    	char griglia[N][N]={0},a,b;
    	char d='A';
    	int num_cas,alfa;
    
    	srand ((unsigned)time(NULL));		//inizializzo generatore random
    
    	for(a=0;a<N;a++)					//creo griglia con puntini				
    		for(b=0;b<N;b++)
    			griglia[a][b] = '.';
    
    	for(a=0,b=0,alfa=0;alfa<26;alfa++,d++){
    		griglia[a][b] = d;
    		num_cas = rand() % 4;
    		switch (num_cas) {
    			case 0: if(a>0)
    						a -= 1;
    				break;
    			case 1: if(b<9)
    						b += 1;
    				break;
    			case 2: if(a<9)
    						a += 1;
    				break;
    			case 3: if(b>0)
    						b -= 1;
    				break;}
    	}
    	
    	for(a=0;a<N;a++){
    		printf("\n\n\t\t\t");
    		for(b=0;b<N;b++)
    			printf ("%c  ",griglia[a][b]);}
    		printf("\n\n\n\n");
    	
    	return 0;
    }

  5. #5
    Utente di HTML.it L'avatar di cles
    Registrato dal
    Mar 2010
    Messaggi
    25
    Ci sono quasi,ora stampa tutte le lettere solo in spazi vuoti ma non so come fare per non incrementare o diminuire a o b nello switch nel caso la casella fosse occupata.

    qualche consiglio....

    codice:
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    #define N 10
    
    int main()
    {
    	char griglia[N][N]={0},a,b;
    	char d='A';
    	int num_cas,alfa;
    
    	srand ((unsigned)time(NULL));		//inizializzo generatore random
    
    	for(a=0;a<N;a++)					//creo griglia con puntini				
    		for(b=0;b<N;b++)
    			griglia[a][b] = '.';
    
    	for(a=0,b=0,alfa=0;alfa<26;alfa++){
    		if(griglia[a][b] == '.')
    			griglia[a][b] = d++;
    		else alfa--;
    		num_cas = rand() % 4;
    		switch (num_cas) {
    			case 0: if(a>0)
    						a -= 1;
    				break;
    			case 1: if(b<9)
    						b += 1;
    				break;
    			case 2: if(a<9)
    						a += 1;
    				break;
    			case 3: if(b>0)
    						b -= 1;
    				break;}		
    	}
    	
    	for(a=0;a<N;a++){
    		printf("\n\n\t\t\t");
    		for(b=0;b<N;b++)
    			printf ("%c  ",griglia[a][b]);}
    		printf("\n\n\n\n");
    	
    	return 0;
    }

  6. #6
    Utente di HTML.it L'avatar di cles
    Registrato dal
    Mar 2010
    Messaggi
    25
    Ora funziona ma alcune volte si apre la finestra nera senza nessun output,qualcuno sa trovarmi per favore l'errore?ci stò dietro da un giorno e non riesco a venirne fuori ....

    codice:
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    #define N 10
    
    int main()
    {
    	char griglia[N][N]={0},a,b;
    	char d='A';
    	int num_cas,alfa,c,e;
    
    	srand ((unsigned)time(NULL));		//inizializzo generatore random
    
    	for(a=0;a<N;a++)					//creo griglia con puntini				
    		for(b=0;b<N;b++)
    			griglia[a][b] = '.';
    
    	for(a=0,b=0,alfa=0;alfa<26;alfa++){
    		if(griglia[a][b] == '.'){
    			griglia[a][b] = d++;
    			c=a;
    			e=b;}
    		else {alfa--,a=c,b=e;}
    		
    		if(griglia[a+1][b]!='.'&&griglia[a-1][b]!='.'&&griglia[a][b+1]!='.'&&griglia[a][b-1]!='.'){
    			for(a=0;a<N;a++){
    		printf("\n\n\t\t\t");
    		for(b=0;b<N;b++)
    			printf ("%c  ",griglia[a][b]);}
    		printf("\n\n\n\n");
    	
    		return 0;}
    		
    		num_cas = rand() % 4;
    		switch (num_cas) {
    			case 0: if(a>0)
    						a -= 1;
    				break;
    			case 1: if(b<9)
    						b += 1;
    				break;
    			case 2: if(a<9)
    						a += 1;
    				break;
    			case 3: if(b>0)
    						b -= 1;
    				break;}		
    	}
    	
    	for(a=0;a<N;a++){
    		printf("\n\n\t\t\t");
    		for(b=0;b<N;b++)
    			printf ("%c  ",griglia[a][b]);}
    		printf("\n\n\n\n");
    	
    	return 0;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.