• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Release [Esercizio] - Frase palindroma

Riferimento: [Esercizio] - Frase palindroma

Ci sono cose che non sto riuscendo a capire:
char frase[100];
fgets(frase, 100, stdin);

int eq = 1;
int lfr = strlen(frase);
char *pf=frase, *pr=frase+lfr-2;
while(--lfr)
{
while(*pf == ' ') {pf++; --lfr;}
while(*pr == ' ') pr--;
if(toupper(*pf++) != toupper(*pr--)) eq=0;
}

if(eq) printf("palindroma\n");
else printf("non palindroma\n");

P.S. All'interno del main non ha senso richiamare il main ... attenzione, perché sarebbe un grave errore, se fossi il tuo prof ...
Il main l'ho richiamato giusto per sbrigarmi senza mettere un do-while :P
 
Ultima modifica:
Riferimento: [Esercizio] - Frase palindroma

Allora, per ora lascia perdere il C++ e concentrati ancora sullo studio del C, sui puntatori in particolare ...
NO, ma guarda che i puntatori so cosa sono, dove punta pf l'ho capito, è solo che non mi è chiaro il funzionamento.
Perchè qui
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Prima incrementi pf, poi lo decrementi, poi una volta metti le parentesi graffe l'altra no. A cosa servono li le parentesi graffe?
 
Riferimento: [Esercizio] - Frase palindroma

A cosa servono li le parentesi graffe?

Avrebbe potuto anche non metterle in quanto se io scrivo una cosa del genere : printf("Prova"); return 0; il compilatore non segnala errori. In quel caso penso che abbia messo le parentesi per "evidenziare" l'incremento di pf e il predecremento di lfr e anche per una maggiore leggibilità in quanto le istruzioni da eseguire sono 2 e non una come nel secondo while - ragion per cui è anche possibile omettere le parentesi -. Dico bene @nothing ?
 
Riferimento: [Esercizio] - Frase palindroma


Purtroppo no ... ^^

Se in {pf++; --lfr;} non mettessi le parentesi, nel ciclo while sarebbe inclusa sola la prima, mentre la seconda sarebbe eseguita una sola volta all'uscita del ciclo stesso.
A me serve invece ripetere tutte e due le istruzioni ad ogni loop del ciclo while.
Il ciclo while (come il for) in C esegue ciclicamente solo la prima istruzione incontrata. Le parentesi graffe fanno in modo che, tutte le istruzioni al loro interno, siano viste come una sola istruzione da ripetere.

Queste nozioni dovrebbero essere note a chi programma in C, dato che sono le basi della sintassi del linguaggio.
Se non le avete ancora ben presenti e volete imparare il C, il mio consiglio è di ripassarle bene per averle ben presenti.
 
Riferimento: [Esercizio] - Frase palindroma

Purtroppo no ... ^^

Se in {pf++; --lfr;} non mettessi le parentesi, nel ciclo while sarebbe inclusa sola la prima, mentre la seconda sarebbe eseguita una sola volta all'uscita del ciclo stesso.
A me serve invece ripetere tutte e due le istruzioni ad ogni loop del ciclo while.
Il ciclo while (come il for) in C esegue ciclicamente solo la prima istruzione incontrata. Le parentesi graffe fanno in modo che, tutte le istruzioni al loro interno, siano viste come una sola istruzione da ripetere.

Queste nozioni dovrebbero essere note a chi programma in C, dato che sono le basi della sintassi del linguaggio.
Se non le avete ancora ben presenti e volete imparare il C, il mio consiglio è di ripassarle bene per averle ben presenti.
Caspita è vero.... Che stupido, non me ne ero proprio reso conto... :facepalm::facepalm::facepalm: Vedendole messe in quel modo mi avevano confuso... queste cose le conosco benissimo, anche perchè se vedi il mio listato se non sbaglio ho anche fatto qualcosa del genere, se non l'ho fatto puoi star certo che l'avrò fatto in qualche altro algoritmo. La stessa cosa vale per l'if e per il for. Scusami ancora ma come ho detto non mi ero reso conto che c'erano due istruzioni nel while. ^^ :facepalm:
 
Riferimento: [Esercizio] - Frase palindroma

Le parentesi graffe fanno in modo che, tutte le istruzioni al loro interno, siano viste come una sola istruzione da ripetere.

Questa cosa non la sapevo, davvero, però adesso la so. Comunque personalmente preferisco il do while lol
 
Riferimento: [Esercizio] - Frase palindroma

Questa cosa non la sapevo, davvero, però adesso la so. Comunque personalmente preferisco il do while lol
Ad esempio:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Dato che è una sola istruzione da ripetere si possono omettere le parentesi
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Dato che sono più istruzioni si devono mettere per forza le parentesi.
 
Riferimento: [Esercizio] - Frase palindroma

Bravo!! Codici 100% solo C#. Bel lavoro

Oltre a scrivere scemenze, non sapendo distinguere la sintassi del C# da quella del C, non sa di essere nella sezione C/C++.

Risate a non finire su questo forum (in questa sezione specialmente)..., è un complimento eh...