PDA

Visualizza la versione completa : [C] spiegazione codice


Superandri91
18-11-2010, 16:01
Salve. Ho iniziato da poco a programmare e devo fare degli esercizi in vista dell'esame.
A partire da questi due codici devo capire cosa mi esce:
PRIMO CODICE:

int g(int n)
int g(int n) {
int i;
for (i=2;i<n && n%i;i++)
;
if (i==n) return 1;
return 0;
}
SECONDO CODICE:

int f(int n) {
int c=0, i, j;
for (i=1;i<=n;i++)
if (n%i==0)
if (g(i) != 0) c++;
return c;
}
In particolare, non ho capito nel primo codice cosa serve la funzione for se poi non ho niente che giustifichi questa funzione... Poi non ho capito a cosa serve nella condizione del for "n%i"... Non ha senso...
La seconda funziona non l'ho capita affatto...
Grazie mille in anticipo

Alex'87
18-11-2010, 19:42
Originariamente inviato da Superandri91
In particolare, non ho capito nel primo codice cosa serve la funzione for se poi non ho niente che giustifichi questa funzione...for NON È una funzione ma un costrutto che permette di creare un ciclo. Fa parte delle basi del linguaggio.


Originariamente inviato da Superandri91
Poi non ho capito a cosa serve nella condizione del for "n%i"... Non ha senso...
La seconda funziona non l'ho capita affatto...
Grazie mille in anticipo % è l'operatore modulo, restituisce cioè il resto della divisione intera tra i due operandi. Ha perfettamente senso, basta studiare :mem: E anche questo fa parte delle basi del linguaggio...

ramy89
18-11-2010, 19:53
Non puoi provare a compilarle e vedere cosa ti esce?
Comunque scrivo ad esempio:

4%2
Mi viene restituito il resto,che in questo caso e' zero.
Il for del primo esercizio e' vuoto,probabilmente lo scopo e' arrestare il programma finche' non si verifica una condizione (vedi cosa c'e' all' interno del for,qual'e' la condizione di uscita?).

Superandri91
18-11-2010, 20:04
so benissimo cosa fa il for e cosa fa n%i... le ho studiate! ma nel for non ho capito perchè non c'è niente (dopo le varie condizioni c'è uno spazio vuoto) e nel secondo codice non ho capito proprio niente di quello che fa!

Alex'87
18-11-2010, 20:23
Originariamente inviato da Superandri91
so benissimo cosa fa il for e cosa fa n%i... le ho studiate! ma nel for non ho capito perchè non c'è niente (dopo le varie condizioni c'è uno spazio vuoto) e nel secondo codice non ho capito proprio niente di quello che fa! Dopo il for c'è un ; che in C indica l'istruzione vuota. In pratica il corpo di quel ciclo è vuoto, cosa perfettamente lecita.

Se indentassi si capirebbe meglio...


int g(int n) {
int i;

for (i = 2; i < n && n % i; i++)
;

if (i == n)
return 1;

return 0;
}

Superandri91
18-11-2010, 20:34
non so proprio cosa voglia dire indentare zio! comunque mi informerò! a cosa serve un ciclo for vuoto? :O

Alex'87
18-11-2010, 21:22
Originariamente inviato da Superandri91
a cosa serve un ciclo for vuoto? :O È un esercizio, non deve necessariamente avere un'utilità... In certe situazioni comunque può essere utile.

MItaly
18-11-2010, 22:10
Originariamente inviato da Superandri91
non so proprio cosa voglia dire indentare zio!
:facepalm: ^2 (sarebbero due facepalm, e i facepalm scalano esponenzialmente)

comunque mi informerò! a cosa serve un ciclo for vuoto? :O
In questo specifico caso ad incrementare la variabile i.

ramy89
18-11-2010, 22:11
Alla fine di questo ciclo


for (i = 2; i < n && n % i; i++)
;

L' unica variaible che sarà cambiata sarà i,quindi lo scopo è sicuramente di cambiare i.
Con che criterio?Di incrementarlo di uno finchè è minore di n e da resto nella divisione con i.

Superandri91
18-11-2010, 22:43
Originariamente inviato da ramy89
Alla fine di questo ciclo


for (i = 2; i < n && n % i; i++)
;

L' unica variaible che sarà cambiata sarà i,quindi lo scopo è sicuramente di cambiare i.
Con che criterio?Di incrementarlo di uno finchè è minore di n e da resto nella divisione con i.
OOO! Ci voleva cosi tanto? Grazie mille ramy89 per l'aiuto! Ora ho capito! Nel secondo codice cosa vuol dire g(i)? dove lo prende g?

Loading