PDA

View Full Version : [C] Aiuto programma


Tiz1492
28-11-2007, 09:21
Ciao, sono Tiziano e sono un nuovo membro del forum.
Vi chiedo un aiuto in quanto non riesco a capire cposa effettua tale programma: al momento non riesco a compilarlo e ho bisogno di capire cosa faccia per un progetto scolastico.
Vi ringrazio.

#include <stdio.h>

void Magic(int in);
int Even(int n);

int main()
{
Magic(10);
return(0);
}

void Magic(int in)
{
if (in == 0)
return;

if (Even(in))
printf("%i\n", in);

Magic(in -1);

if (!Even(in)) //tale blocco viene eseguito se 0
printf("%i\n", in);

return;
}

int Even(int n)
{
return((n % 2) == 0) ? 1 : 0;
}

Ziosilvio
28-11-2007, 09:37
non riesco a capire cposa effettua tale programma
All'interno di main, viene effettuata una chiamata a Magic, con valore dell'argomento pari a 10.
Magic è definita ricorsivamente, ossia chiama se stessa durante la propria esecuzione: tale chiamata viene fatta con un valore dell'argomento decrementato di 1, quindi Magic(10) chiamerà Magic(9), che chiamerà Magic(8), che... finché non verrà chiamata Magic(0), che termina subito, passando numvamente l'esecuzione a Magic(1), che...
Se il suo argomento non è 0, Magic effettua una chiamata a Even, che fa un controllo di parità.
Da qui in poi puoi provare ad andara avanti tu.
non riesco a compilarlo
E perché no? Che sistema operativo usi, e che compilatore hai? e ho bisogno di capire cosa faccia per un progetto scolastico.

Ah: quando scrivi un programma, indentalo bene (cerca sul vocabolario il verbo "indentare") e, al momento di postare il codice, inseriscilo in un tag "CODE" in modo che l'indentazione venga preservata.

Tiz1492
28-11-2007, 09:45
Grazie, purtroppo non sono un grande programmatore e si vede...
grazie, ciao!

Ziosilvio
28-11-2007, 10:14
purtroppo non sono un grande programmatore
Questo perché grandi programmatori si diventa, col tempo, lo studio e la pratica.
Nessuno nasce imparato.