Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ti do solo un'indicazione così vediamo se riesci a risolvere da solo.
Nel primo ciclo for (quello dove posizioni le x per intenderci) non fai nessun controllo per vedere se nella posizione dove vuoi inserire le x non ne hai inserita nessuna precedentemente, così può capitare che per 2 volte posizioni la x nella posizione scacchiera[2][2].
Se è uno dei tuoi giorni sfortunati potresti vedere apparire anche solo una x
Ti do solo un'indicazione così vediamo se riesci a risolvere da solo.
Nel primo ciclo for (quello dove posizioni le x per intenderci) non fai nessun controllo per vedere se nella posizione dove vuoi inserire le x non ne hai inserita nessuna precedentemente, così può capitare che per 2 volte posizioni la x nella posizione scacchiera[2][2].
Se è uno dei tuoi giorni sfortunati potresti vedere apparire anche solo una x
....
infatti è già capitato...
cmq il controllo che tu intendi...sarebbe un if(scacchiera[nx][ny]=' ' && scacchiera[nx][ny]!='x') ??
Poi se proprio uno vuole essere preciso si potrebbe dire che con questa soluzione, in teoria, si potrebbe entrare in un ciclo infinito infatti potrebbe capitare il caso in cui i numeri pseudo casuali ovvero gli indici della matrice siano ripetuti e quindi l'algoritmo non riesce a posizionare tutte le x.
Ultima modifica effettuata da Premoli il 27/01/2011 alle 17:36
Poi se proprio uno vuole essere preciso si potrebbe dire che con questa soluzione, in teoria, si potrebbe entrare in un ciclo infinito infatti potrebbe capitare il caso in cui i numeri pseudo casuali ovvero gli indici della matrice siano ripetuti e quindi l'algoritmo non riesce a posizionare tutte le x.
ho lo stesso problema con questo codice praticamente funzione con le 'x' ma non con le 'o'....
Codice sorgente - presumibilmente C++
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{int j,i,nx,ny;
char giocator1='x';/*giocatori maglia x*/
char giocator2='o';/*giocatori maglia o*/
char campo [][6]={{' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' '}};
srand(time(NULL));
char rete='I';
for(i=0;i<6;i++){
campo[i][2]=rete;
}
i=1;
while(i<=4)/*genera 4 posizioni a caso sul campo*/
{
nx=1+(int)(6*rand()/(RAND_MAX+1.0));
ny=3+rand()%3-6;/*sposto sulle ultime 3 celle*/
if(campo[nx][ny]!='x')
i++;
campo[nx][ny]=giocator1;
}
j=1;
while(j<=4)
{
nx=1+(int)(6*rand()/(RAND_MAX+1.0));
ny=rand()%2;
if(campo[nx][ny]!='o')/*sposto sulle prime 3 celle*/
Se non ho capito male quello che devi fare io risolverei così:
Codice sorgente - presumibilmente C++
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int j,i,nx,ny;
char giocator1='x';/*giocatori maglia x*/
char giocator2='o';/*giocatori maglia o*/
char campo [][6]={{' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' '}};
srand(time(NULL));
char rete='I';
for(i=0;i<6;i++){
campo[i][2]=rete;
}
i=1;
while(i<=4){
nx=rand()%6;
ny=3+rand()%3;/*sposto sulle ultime 3 celle*/
if(campo[nx][ny]!='x')
i++;
campo[nx][ny]=giocator1;
}
j=1;
while(j<=4){
nx=rand()%6;
ny=rand()%2;
if(campo[nx][ny]!='o')/*sposto sulle prime 3 celle*/
j++;
campo[nx][ny]=giocator2;
}
for(i=0; i<6; i++){
for(j=0; j<6; j++)
printf("%c",campo[i][j]);
printf("\n");
}
return0;
}
Se non è questo il tuo obiettivo spiegati meglio.
si esatto viene anke così....nel mio codice non sò perchè ho messo 3-6e quelle due divisioni con le RAND_MAX... volevo complicarmi la vita ...grazie...comunque questo è un progetto ke sto cercando di sviluppare...se vedi sul forum ho postato già una discussione di questo stesso algoritmo che simula una partita di pallavolo.. in gamba e grazie