Per il resto cosa? Utilizza una matrice di caratteri ...
Per il resto cosa? Utilizza una matrice di caratteri ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Certo, questo lo so, ma poi?
Ma poi cosa? Intanto scrivi una funzione che visualizza tutti i caratteri in riga e colonna, con delle for e delle printf ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Tipo questo?
Ho occupato le caselle "nere" con *codice:mat[0][2] = '*' ; mat[0][3] = '*' ; mat[1][1] = '*' ; mat[1][2] = '*' ; mat[1][3] = '*' ; mat[1][4] = '*' ; mat[1][6] = '*' ; mat[1][8] = '*'; mat[1][9] = '*'; mat[2][1] = '*'; mat[2][2] = '*'; mat[2][4] = '*'; mat[2][5] = '*'; mat[2][6] = '*'; mat[2][8] = '*'; mat[2][9] = '*'; mat[2][10] = '*'; mat[3][4] = '*'; mat[3][9] = '*'; mat[3][10] = '*'; mat[4][1] = '*'; mat[4][2] = '*'; mat[4][7] = '*'; mat[4][8] = '*'; mat[5][2] = '*'; mat[5][8] = '*'; mat[6][1] = '*'; mat[6][2] = '*'; mat[6][3] = '*'; mat[6][8] = '*'; mat[6][9] = '*'; mat[7][0] = '*'; mat[7][1] = '*'; mat[7][6] = '*'; mat[8][0] = '*'; mat[8][1] = '*'; mat[8][2] = '*'; mat[8][4] = '*'; mat[8][5] = '*'; mat[8][6] = '*'; mat[8][8] = '*'; mat[8][9] = '*'; mat[9][1] = '*'; mat[9][2] = '*'; mat[9][4] = '*'; mat[9][6] = '*'; mat[9][7] = '*'; mat[9][8] = '*'; mat[9][9] = '*'; mat[10][7] = '*'; mat[9][8] = '*'; for(i=0;i<11;i++) printf("\n"); for(j=0;j<11;j++) printf("%c ",mat[i][j]);
Come detto ti serve sicuramente una funzione che stampi a video la matrice .Ma, quali sono le competenze per affrontare questo problema? Perchè io ho appena fatto le matrici, in fondo un cruciverba è una array bidimensionali di char. Il problema è l'aspetto grafico e "l'aspetto software" nel senso che, come faccio a saltare le caselle nere? A inserire le giuste parole? A mettere i vincoli di lunghezza delle parole, a inserire le parole in verticale e in orizzontale? Questi sono le domande che mi affliggono
-------------------------------
potresti crearti due matrici di char , contenenti le risposte esatte char Rorrizzontali[][] ,char Rverticali[][]
-------------------------------
Due array contenenti le posizioni di partenza delle risposte sia in orizzontale che in verticale
int Posorrizzontali[] metterai la posizione della colonna , int Posverticali[] metterai la posizione della riga , in questo modo se ad esempio devi inserire la risposta verticale 3 , andrai a leggere l'array posverticali[3] Posorrizzontali[3] e sai in che cella dovrai cominciare a scrivere
Forse te ne servono 4 array 2 per le risposte orrizzontali e 2 per le risposte verticali
--------------------------------
ti serviranno due funzioni per inserire le risposte nella matrice , void inserimentoorrizzontale(char cruciverba[][]) ,void inserimentoverticale(char cruciverba[][])
-----------------------------------
Nell'esecuzione del programma , inserendo una risposta , puoi fare un controllo se la risposta data non è uguale alla risposta contenuta in , Rorrizzontali[][] o Rverticali[][] , messaggio di errore e ripeti .
Ovviamente è solo una linea guida , senza nessuna pretesa di essere completa , ma potrebbe accenderti qualche lampadina .....
Comunque è un esercizio interessante![]()
Ultima modifica di torn24; 30-04-2014 a 17:56
Tecnologia
Come faccio a inserire le risposte nelle matrici Rorizzontali e Rverticali saltando le cellette nere?
Ho iniziato comunque ad impostare:
codice:#include <stdio.h>#include <stdlib.h> #include <string.h> #define RMAX 11 #define CMAX 11 /*Variabili Globali*/ int i; int j; /*Prototipi Procedure*/ void RisposteOriz(char Rorizzontali[][CMAX]); void RisposteVert(char Rverticali[][CMAX]); void InsOrizzontale(char Cruciverba[][CMAX]); void InsVerticale(char Cruciverba[][CMAX]); /*Programma Principale*/ int main() { char Rorizzontali[RMAX][CMAX]; char Rverticali[RMAX][CMAX]; int Posorizzontali[RMAX]; int Posverticali[RMAX]; char Cruciverba[RMAX][CMAX]; RisposteOriz(&Rorizzontali[0]); RisposteVert(&Rverticali[0]); InsOrizzontale(&Cruciverba[0]); InsVerticale(&Cruciverba[0]); system("PAUSE"); return(0); } /*Procedure:*/ void RisposteOriz(char Rorizzontali[][CMAX]){ return; } void RisposteVert(char Rverticali[][CMAX]){ return; } void InsOrizzontale(char Cruciverba[][CMAX]){ return; } void InsVerticale(char Cruciverba[][CMAX]){ return; }
Ultima modifica di tommasoperilli; 01-05-2014 a 13:03
Copi carattere per carattere, dalla stringa all'array (secondo me va bene un solo array di char).
No MP tecnici (non rispondo nemmeno!), usa il forum.
Allora ....
codice:char Cruciverba[RMAX][CMAX];
rappresenta il cruciverba di RMAX x CMAX caratteri.
Ma gli altri array che dovrebbero essere? E perché sono dichiarati in quel modo?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Come ha detto torn24 sopra, gli altri array sono paralleli e hanno le risposte, in modo da confrontare poi la risposta ricevuta via input con quella che è già presente nei due array