|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
![]() |
#181 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
![]() |
![]() Bye ![]() |
![]() |
![]() |
![]() |
#182 |
Made in Japan
Top Poster
Registrato: 04-07-2001
Messaggi: 4.461
![]() |
Si si, non avevo alcuna intenzione di modificarli
![]() |
![]() |
![]() |
![]() |
#183 |
Made in Japan
Top Poster
Registrato: 04-07-2001
Messaggi: 4.461
![]() |
Sto implementando il controllo per evitare le coordinate ripetute all'interno di PosizionaNavi()... ho sempre questi messaggi:
battleship.c(285) : error C2059: syntax error : '}' battleship.c(287) : error C2061: syntax error : identifier 'mArray' battleship.c(352) : error C2143: syntax error : missing ';' before 'type' battleship.c(354) : error C2143: syntax error : missing ';' before 'type' battleship.c(391) : error C2065: 'hOut' : undeclared identifier battleship.c(391) : warning C4047: '=' : 'int ' differs in levels of indirection from 'void *' battleship.c(408) : warning C4022: 'SetConsoleCursorPosition' : pointer mismatch for actual parameter 1 l'errore in realtà è solo il primo, gli altri tornano a posto appena si sistemerà quello. E' come se mancasse la chiusura di un ciclo, ma li ho controllati un centinaio di volte, sono tutti chiusi e non ne vengo a capo help me!!! ![]() P.S. non ci sono ancora tutte le istruzioni perché l'algoritmo sia completo, però vorrei sistemare prima questa cosa, almeno quando compilo mi dice gli errori effettivi. |
![]() |
![]() |
![]() |
#184 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
![]() |
C'é una graffa in +...
Corretta ![]() Bye ![]() |
![]() |
![]() |
![]() |
#185 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
![]() |
Ragazzo mio ....
![]() ![]() ![]() Ti inviterei a riconsiderare il processo logico .. scusa se mi permetto .. ma ti stai moooooooooolto complicando la vita.... Bye ![]() |
![]() |
![]() |
![]() |
#186 |
Made in Japan
Top Poster
Registrato: 04-07-2001
Messaggi: 4.461
![]() |
Sto impazzendo, ho contato le parentesi un'altra volta prima che mi rispondessi e mi sono risultate bilanciate, le ho ricontate con quella che hai tolto... e secondo i conti erano ancora bilanciate
![]() ![]() Vabbè, chiaro segno che per oggi non ci sto più con la testa ![]() Togliendo la graffa che hai trovato in + ottengo comunque degli errori strani: error C2061: syntax error : identifier 'mArray' error C2143: syntax error : missing ';' before 'type' error C2143: syntax error : missing ';' before 'type' error C2065: 'hOut' : undeclared identifier warning C4047: '=' : 'int ' differs in levels of indirection from 'void *' warning C4022: 'SetConsoleCursorPosition' : pointer mismatch for actual parameter 1 ovviamente tutte le variabili sono debitamente dichiarate, sono in posizioni successive a PosizionaNavi() e se la tolgo gli errori spariscono. Per quanto riguarda la prolissità ti riferisci forse al fatto che potrei far diventare PosizionaNavi() ricorsiva o magari potrei implementare funzioni esterne da chiamare al suo interno? |
![]() |
![]() |
![]() |
#187 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
![]() |
Guarda.. quando ho aperto io il file e compilato mi veniva un warning su una eventuale mancata assegnazione di mArray... inoltre l'ambiente mi evidenziava le corrispondenze delle parentesi e sembravano esatte (dopo aver tolto quella graffa) .. evidentemente c'é ancora qualcosa di sbilancaito all'interno dell'altro codice che qui manca ...
Chiamate ricorsive e funzioni esterne non erano ciò che intendevo segnalarti per risolvere il problema.. ma qualcosa di ESTREMAMENTE più semplice.. ti dò una traccia (e un consiglio): Riparti dalla "posizionaNavi" originale, cioè quella prima di questa modifica .. ed utilizza due booleani, uno per le righe e uno per le colonne .. questi booleani ti indicheranno se la riga inserita dall'utente è già presente nel vettore e se la colonna inserita è già persente nel vettore... Nella funzione, prima di valorizzare il t_Mossa non fai altro che controllare se le coordinate che hai ottenuto dall'inserimento dell'utente esistono nello stesso t_Mossa (che sarà già stato valorizzato dai precedenti cicli della funzione) .. te la cavi con 2 cicli for e un blocco "if" finale .. inoltre, per la richiesta S/N di conferma, ti basta "incastonare" il tutto in un ciclo while a livello superiore che controlla se una variabile char (recuperata con getch()) sia uguale o meno ad 's'... Spero di averti dato la dritta giusta se deciderai di seguirla e nel caso ti servisse, ho qui l'implementazione. Bye ![]() |
![]() |
![]() |
![]() |
#188 |
Made in Japan
Top Poster
Registrato: 04-07-2001
Messaggi: 4.461
![]() |
Rieccomi, ho pensato a quello che mi hai detto, però non credo di aver capito come mi stavi suggerendo di risolvere, così ho pensato a questo:
un booleano che mi dice se una coordinata esiste o no, un while che viene eseguito finché il booleano non diventa FALSE che ingloba tutto il codice per l'inserimento delle coordinate e prima di assegnare il valore al t_Mossa metto questo codice Codice:
for(i=0; i<numeroNavi; i++) if(coorx[0] == mArray[i].colonna && i_raw == mArray[i].riga) esiste = TRUE; Prova a postarmi la tua soluzione, così forse la capisco ![]() Ultima modifica di Alhazred : 16-07-2004 alle ore 17.38.27 |
![]() |
![]() |
![]() |
#189 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
![]() |
Si, ci sei praticamente .. hai capito il ragionamento ... la mia implementazione segue proprio questo schema:
Codice:
void PosizionaNavi(){ int Count, nave, Count2; char Answer = 'n'; char c_col = ' '; char c_raw = ' '; char coorx[3]; char tmpStr[3]; BOOL existingCol = FALSE; BOOL existingRaw = FALSE; coorx[0] = '\0'; tmpStr[0] = '\0'; while((Answer != 's') && (Answer != 'S')) { printf("Inserire le coordinate per %i navi.\n",numeroNavi); Count = numeroNavi; nave = 1; for(i=0;i<numeroNavi;i++) { mArray[i].colonna = ' '; mArray[i].riga = 0; } while(Count > 0) { existingCol = FALSE; // reset existingRaw = FALSE; // reset printf("Nave %i: Colonna_", nave); // A-J while((c_col < 65) || (c_col > 74)) c_col = getch(); coorx[0] = c_col; printf("%c Riga_", c_col); c_col = ' '; // reset // 0-9 while(((c_raw < 48) || (c_raw > 57))) c_raw = getch(); printf("%c", c_raw); tmpStr[0] = c_raw; c_raw = ' '; // reset // 0-9 o ENTER per non dare coordinata a cifra singola while(((c_raw < 48) || (c_raw > 57)) && (c_raw != 13)) // invio = conferma c_raw = getch(); printf("%c", c_raw); tmpStr[1] = c_raw; c_raw = ' '; // reset printf("\n\r"); // Scansione duplicati for(Count2=0;Count2<(nave-1);Count2++) { if(mArray[Count2].colonna == coorx[0]) existingCol = TRUE; if(mArray[Count2].riga == atoi(tmpStr)) existingRaw = TRUE; } // Se non esistono duplicati: valorizzo if( (existingCol == FALSE) && (existingRaw == FALSE) || (existingCol == FALSE) && (existingRaw == TRUE) || (existingCol == TRUE) && (existingRaw == FALSE) ) { mArray[nave-1].riga = atoi(tmpStr); mArray[nave-1].colonna = coorx[0]; Count --; nave++; } else // altrimenti: avverto e obbligo a inserire nuovamente i valori printf("\nLe coordinate della nave %i corrispondono a quelle di una nave già posizionata\n", nave); // controlli di range delle coordinate di riga. if((atoi(tmpStr) < 1) || (atoi(tmpStr) > 10)) { printf("\nValori di riga validi: A-J, valori di colonna validi: 1-10.\n"); Count++; nave--; } } printf("Confermi le coordinate delle navi (S/N)?"); Answer = getch(); ClearScreen(); } } ![]() |
![]() |
![]() |
![]() |
#190 |
Hero Member
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
![]() |
ma quando è pronta ce la fai provare?
![]() dai, una partitina..... ![]()
___________________________________
...ad ogni alba sorgerà il tuo profumo |
![]() |
![]() |
![]() |
#191 |
Made in Japan
Top Poster
Registrato: 04-07-2001
Messaggi: 4.461
![]() |
Bene, ora è chiaro (Y)
![]() |
![]() |
![]() |
![]() |
#192 |
Hero Member
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
![]() |
ma sta partita?
![]()
___________________________________
...ad ogni alba sorgerà il tuo profumo |
![]() |
![]() |
![]() |
#193 |
Made in Japan
Top Poster
Registrato: 04-07-2001
Messaggi: 4.461
![]() |
Adesso che le funzioni di contorno sono pronte viene il bello, bisognerà gestire lo scambio di messaggi tra i due processi e l'accesso in memoria condivisa per evitare brutte sorprese.
|
![]() |
![]() |
![]() |
#194 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
![]() |
'momento.. il cantiere è ancora aperto ..
![]() Bye ![]() |
![]() |
![]() |
![]() |
#195 | |
Made in Japan
Top Poster
Registrato: 04-07-2001
Messaggi: 4.461
![]() |
Quota:
(vedi risposta sopra) ![]() |
|
![]() |
![]() |
![]() |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
![]() |
||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
La grande battaglia dei super eroi! | Sbavi | Chiacchiere in libertà | 83 | 27-02-2009 10.43.39 |
battaglia navale in c# | Joy&Lu | Programmazione | 3 | 01-09-2008 15.08.58 |
Il Signore degli Anelli - La Battaglia per la terra di mezzo | Darth Maul | Masterizzazione Giochi Games | 0 | 01-09-2006 18.16.18 |
[C] Battaglia Navale (versione client server) in Linux | Nanri | Programmazione | 11 | 06-08-2005 14.50.27 |