salve,
queste osservazioni sono giuste, pero' non sono la risposta a quello
che pensavo io. la cosa e' un
po' piu' complessa. Rispondo qua' sotto ad ogni sua segnalazione:
On Nov 26, 12:07 pm, Giuseppe <
S.O.A.D...@gmail.com> wrote:
> L'errore è relativo all'esercizio 1 sugli anagrammi.
> Sono vari i casi in cui non funziona:
> 1) Non viene mai considerata l'ultima parola della frase e quindi se
> questa è un anagramma di quella da cercare non viene mai stampata
questo e' vero, pero' un suo colleca l'ha preceduta, ma tramite mail
diretta a me: ecco il testo
from valentini_simone <
valentin...@libero.it>
to "julinda.stefa" <
julind...@gmail.com>,
date Nov 26, 2007 12:22 PM
subject Re: [prog1-pz0708] Possibilita' di ottenere un bonus!!
mailed-by
libero.it
Forse è nell'esercizio 2 ?
il ciclo:
"for(i = 0; (i < strlen(stringa)) && (corrente < numero_parole); i++)
{"
è errato perchè in questo modo non si considera l'ultima parola per
cui dovrebbe essere:
for(i = 0; (i < (strlen(stringa)+1) ) && (corrente < numero_parole); i+
+) {
e anche all'interno del ciclo, non si deve considerare solo il
carattere spazio ma anche la punteggiatura.
Nel caso della frase
"La porta si apre e cade una pera. Le rape e la pera" sarebbe
sufficente aggiungere una condizione per il punto, cioè al posto di:
"if (stringa[i] == ' ') { // caso carattere spazio "
questo: if (stringa[i] == ' ' || stringa[i] == ' ') {
e dopo l'ultima parola non ci sarà ne uno spazio ne un carattere di
punteggiatura, per cui va aggiunta anche la condizione per il
carattere terminatore, diventa:
if (stringa[i] == ' ' || stringa[i] == ' ' || stringa[i] == '\0') {
Infine in base alla presenza di punti, virgole etc. va modificato
anche l'incremento di "inizio" (che è i+1, ma dovrebbe essere i+2 se
c'è un punto seguito da uno spazio etc.) e di "i".
..Giusto ?
> 2) la frase viene tokenizzata in base agli spazi ma se accade, come
> nell'esempio fatto per l esercizio, che un' anagramma abbia vicino un
> segno di punteggiatura senza spazi, ovviamente la parola non viene
> considerata
se vedete i test con cui ho testato i vostri programmini, non ho usato
punteggiature
attaccate alle parole, ma ci ho sempre messo uno spazio di mezzo.
quindi
questa osservazione non e' valida in questo caso.
> 3) mi sembra che la parola da cercare potesse contenere sia maiuscole
> che minuscole ma l'esercizio non funziona se contiene lettera
> maiuscole, in quanto le parole della frase sono sempre considerate
> minuscole(tolower()).
sempre nei test che ho fatto, la parola P non conteneva mai maiuscole
quindi neanche questa osservazione vale, pur essendo giusta :-)
Ricapitolando: valentini simone per ora e' vincitore parziale, ma
comunque
l'errore e' piu' complesso!!!
vi invito di nuovo a segnalarlo
saluti
Julidna