Scusate, sono davvero alle prime armi.. mi rendo conto che senza codice sia difficle venirmi incontro intanto grazie per la disponibilità.
Qui c'è il modo in cui, finora, ho risolto il problema.
Pare che la funzione svolga esattamente ciò che viene richiesto, ma sono sicuro che ci sia un modo più elegante senza tutte queste condizioni nell' if.. spero nell'aiuto di qualcuno piu esperto
#include <iostream>
#include <string>
using namespace std;
#define RIGHE 4 // Costanti delle dimensioni
#define COLONNE 5 // del cruciverba[/size]
void stampaParole (string cruciverba[])
{
int colonna,riga,j,k,posizione = 0;
for (riga=0; riga < RIGHE; riga++)
{
for (colonna=0; colonna < COLONNE; colonna++)
{
if (cruciverba [colonna][riga] != '*'
&& ((cruciverba [colonna+1][riga] != '*'
&& colonna+1 < COLONNE
&& (cruciverba [colonna-1][riga] == '*'|| colonna == 0))
|| (cruciverba [colonna][riga+1]!= '*'
&& riga+1 < RIGHE
&& (cruciverba [colonna][riga-1] == '*' || riga == 0))))
{
posizione++; /
cout << endl << "Posizione " << posizione << ": riga " << riga << ", colonna " << colonna ;
if (cruciverba [colonna][riga+1] != '*'
&& (cruciverba [colonna][riga-1] == '*' || riga == 0)
&& riga+1 < RIGHE)
{
cout << " verticale ";
k = riga;
while (cruciverba [colonna][k] != '*' && k < RIGHE)
{
cout << cruciverba [colonna][k];
k++;
}
}
if (cruciverba [colonna+1][riga] != '*'
&& (cruciverba [colonna-1][riga] == '*' || colonna ==0)
&& colonna+1 < COLONNE )
{
cout << " orizzontale ";
j = colonna;
while (cruciverba [j][riga] != '*' && j < COLONNE)
{
cout << cruciverba [j][riga];
j++;
}
}
}
}
}
}
int main () {
string cruciverba[COLONNE] = {"ATOS","BOB*", "I*A*", "*EMI", "IRAQ"};
string cruciverba1[COLONNE] = {"*B*N","CANE","I*ER","ATVI","OIE*"};
stampaParole(cruciverba);
stampaParole(cruciverba1);
return 0;
}
avevo messo anche i commenti ma poi si è sformattato tutto, aiuto sono una frana
in sostanza la funzione prende la matrice, poi verifica una cella alla volta e vede se è un punto di partenza valido per nuove parole (tramite le 8000 condizioni che ho messo nell'If), dopodichè ripete la verifica solo per verticale e nel caso stampa, e idem in orizzontale.
Vorrei una soluzione più pulita, ma non saprei in che modo.. un array tridimensionale per la soluzione? una struttura? sigh
grazie ragazzi scusate davvero la niubbaggine