@salvo107, i
cazziatoni non sono mai da sottovalutare perche' indicano qualche errore di fondo importante.
Purtroppo devo aggiungerne un'altro alla lista:
il codice va CORRETTAMENTE IDENTATO, cioe' la colonna su cui inizia una riga di codice deve seguire PEDISSEQUAMENTE le regole di scrittura.
Ti chiederai PERCHE?
Perche' con un codice ben identato e' possibile capire A COLPO D'OCCHIO quali parti del codice sono interessate da una certa struttura di controllo (if, while, ecc) e questo aiuta moltissimo a capire dove si puo' annidare l'errore.
Se ci pensi, il motivo e' semplice: se in un "if" la condizione e' vera, NON MI SERVE CONTROLLARE IL CODICE RELATIOVO ALLA CONDIZIONE FALSA (o viceversa, ovviamente).
Quindi, OLTRE a fornire TUTTO IL CODICE, dover per TUTTO si intende il pezzo di codice che comprende ANCHE LA DICHIARAZIONE DELLE VARIABILI O DEI PARAMETRI usati, lo stesso deve essere anche BEN IDENTATO.
Che poi sia arzigogolato, confuso, questo e' normale per chi e' alle prime armi
Ora, il tuo codice avrebbe dovuto essere scritto cosi':
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
c1 = 0;
if (S[i][j].length() > ret[0])
count2++; // count2 is ret[2]
for (unsigned int k = 0; k < S[i][j].length(); k++)
switch (S[i][j][k]) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
c1++;
e da questo si puo' capire che:
1) hai una matriche NxN di array di caratteri? di lunghezza variabile (poiche' NON C'E' la definizione di S, NON SAPPIAMO che cosa e' S, visto che potrebbe essere UN'INFINITA' DI COSE, ed il fatto che esista il metodo "length()" NON DICE NULLA)
2) i 3 CICLI (i, j, k) scandiscono tutti i caratteri
3) c1 contiene il numero TOTALE di vocali
4) count2 contiene il numero di stringhe di lunghezza MAGGIORE DI ZERO
e TUTTO QUESTO SEMPLICEMENTE con il codice BEN IDENTATO (che ho DOVUTO FARE A MANO!!!!! Vabbe, non e' vero, lo ha fatto il tool figo che uso )