Problema c

ing.pietro
ciao a tutti come si fa a convertire un programma da ciclo while a ciclo for??

Risposte
eafkuor1
posta il programma

TomSawyer1
Dipende da "while" cosa.

ing.pietro
non ce lho il prgramma. non è che mi potete fare un esempio voi

lorven

superpunk733
Penso però che non puoi passare da while a for se l'argomento di while è un booleano. Cioè lo while si verifica finche una variabile è vera o falsa. Penso però. D'altra parte i for non li ho mai visti con i booleani...

Studente Anonimo
Studente Anonimo
"superpunk733":
D'altra parte i for non li ho mai visti con i booleani...

Però volendo si potrebbe fare, come tradurlo dipende dalla while. Ad esempio:

int i = 1;

while (i) {
    /* ... */
    if ( /* condizione fine ciclo */)
        i = 0;
}


int i = 1;

for (;;) {
    /* ... */
    if (* condizione fine ciclo */)
       break;
}

TheWiz@rd
"superpunk733":
Penso però che non puoi passare da while a for se l'argomento di while è un booleano. Cioè lo while si verifica finche una variabile è vera o falsa. Penso però. D'altra parte i for non li ho mai visti con i booleani...


in C il tipo boolean non esiste! :D

TheWiz@rd
"anonymous_be1147":
[quote="superpunk733"]D'altra parte i for non li ho mai visti con i booleani...

Però volendo si potrebbe fare, come tradurlo dipende dalla while. Ad esempio:

int i = 1;

while (i) {
    /* ... */
    if ( /* condizione fine ciclo */)
        i = 0;
}


int i = 1;

for (;;) {
    /* ... */
    if (* condizione fine ciclo */)
       break;
}
[/quote]

I due cicli non sono affatto identici. Infatti il primo esegue il ciclo secondo la condizione sulla i, mentre il for esegue un ciclo infinto senza alcuna condizione.

int i = 1;

while (i) {
    /* ... */
    if ( /* condizione fine ciclo */)
        i = 0;
}


int i = 1;

for (; i ;) {
    /* ... */
    if (* condizione fine ciclo */)
       i=0;
}


Così sono identici. :)

Studente Anonimo
Studente Anonimo
"TheWiz@rd":

I due cicli non sono affatto identici. Infatti il primo esegue il ciclo secondo la condizione sulla i, mentre il for esegue un ciclo infinto senza alcuna condizione.

Certamente, ma non ho detto che lo fossero. Ho scritto solo una possibile soluzione, che tra l'altro mi sembra più ottimizzata, perché esegue un assegnamento e un test in meno. :-D

groucho1
ce lo hanno spiegato la prima lezione di info 1... vi rigiro la spiegazione a grandi linee...

un ciclo generalmente è formato da questi tre elementi:
* dichiarazione variabile
* condizione
* incremento

WHILE:
int i; <-- dichiarazione variabile

while (i<N) { <-- condizione
    [...]
    i++; <-- incremento
}


FOR:
for (inizializzazione; condizione; incremento) {
    [codice]
}


quindi è facilissimo saltare da un for ad un while e viceversa:
int i=0;

while (i<MAX) {
   printf("hello world!\n");
   i++;
}

-------------------------------------------

int i;

for (i=0; i<MAX; i++) {
    printf("hello world!\n");
}


cmq penso che si possa mettere qualsiasi cosa come condizione del for...

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.