PDA

View Full Version : [C] ciclo for!


nicod83
18-03-2007, 20:28
ciao ragazzi,
non riesco a trovare la soluzione a questo esercizio...
qualcuno può darmi una mano?



Si completi l’istruzione for in modo tale che vengano eseguite 5 iterazioni. Non si dichiarino atre variabili o costanti. Ci si limiti a modificare l’istruzione for.

#include <stdio.h>

int indice(void);

int main()
{
for( ; ; )
printf("ciao %d\n",1);
}

int indice(void)
{
static int p=10;
return p--;
}

Fede_Reghe
18-03-2007, 21:05
Non puoi dichiamare una funzione for senza variabili (a meno che non sia un ciclo infinito)

beppegrillo
18-03-2007, 21:09
if (indice() == 5)
break;

nicod83
18-03-2007, 21:22
cmq è proprio quello l'obiettivo dell'esercizio, modificare il for, per quello che mi pare di aver capito...

si! quello è il bello! :doh:

mapomapo
18-03-2007, 21:25
for(; indice()!=0 ; indice() )

te la spiego subito...devi ragionare sul fatto che hai a disposizione una "static int", per cui questo DEVE NECESSARIAMENTE essere il tuo contatore...
ora: ogni qualvolta chiami la funzione viene restituito il numero e decrementata la "p" che MANTIENE IL SUO VALORE fino alla fine del main()...
così facendo gli dici:
1. ENTRA nel for
2. FINCHE' indice() restituisce un valore diverso da zero (ma se la chiamo SCALO di uno, per questo parte da 10 l'assegnazione nella funzione e non da 5)
3. CHIAMA indice() (con conseguente decremento)

spero di essere stato chiaro, comunque provare per credere :D
Vito

PS
per modifica dell'istruzione for penso si intenda questo, non dichiarare un ciclo infinito e poi dare il break...anche perchè, almeno nella teoria, il C dovrebbe essere un linguaggio orientato alla programmazione strutturata.

nicod83
18-03-2007, 21:31
GRANDE!!!!!
grazie!!!!!! :D

mapomapo
18-03-2007, 21:38
bella soluzione, anche se per come viene data la traccia, non si capisce assolutamente qual'è l'obiettivo dell'esercizio...

st'esercizio è una porcata (nel senso ke è un aborto)....semplicemente perchè ci sono tanti modi per capire se hai chiaro il concetto di FUNZIONE, variabile STATIC e ciclo FOR....senza per forza scendere nell'inusuale....visto che di solito si fa il classico for(i=0;i<N;i++).....
sono del parere ke saper programmare sia una cosa, entrare nella logica di un altro programmatore come questo esercizio pretende è un abominio.

Vito

nicod83
18-03-2007, 21:40
io pensavo che static rimaneva sempre a 10

vado a riguardare le varibili static...

sottovento
19-03-2007, 02:39
Un'altra soluzione poteva essere


for( ; indice() && indice(); )

71104
19-03-2007, 09:23
io pensavo che static rimaneva sempre a 10

vado a riguardare le varibili static... una variabile locale static è una variabile a scopo sempre locale ma che funge come una globale: conserva il valore tra una chiamata e l'altra della funzione. invece static usato con le variabili globali ha tutt'altra funzione.