Chiarimento su while

di il
13 risposte

Chiarimento su while

Salve ragazzi sono pascal88, mi sto scervellando nel capire un piccolo particolare
#include <stdio.h>
#include <stdlib.h>

int main()
{
   int risposta ; // Dichiaro la variabile
   const int risposta_c = 10; // Dichiaro la Costante
do //Ciclo do , per eseguire prima l'istruzione che se è vera termina altrimenti riparte
   {
       printf("Quale è il logaritmo di 2 in base 1024?  \n");
       scanf("%d",&risposta); // Assegno il valore immesso alla variabile
       if (risposta==risposta_c)// Ciclo if
       {
           printf("risposta corretta! \n");
       }
       else {
       printf("risposta errata , riprova! \n");
       }
   }
while (risposta!=risposta_c); //istruzione while che fa ripartire l'algoritmo
}
Con questo codice quando eseguo il programma va tutto bene, inserisco il valore 10 ed il programma termina, se inserisco un valore diverso riparte scanf e devo inserire un altro valore.
Se al posto di != metto, <=, == oppure qualsiasi altro operatore, quando inserisco 10 (cioè il valore corretto) il programma riparte di nuovo da scanf e stranamente non termina . Mi spiegato il concetto bene? grazie a tutti in anticipo.

13 Risposte

  • Re: Chiarimento su while

    Il ciclo continua finché la condizione del while è vera.
    Per cui è corretto dire cicla fino a quando la risposta è diversa da risposta_c.
    Se metti risposta<=risposta_c per uscire dovrai digitare un numero maggiore di 10
    Se metti risposta==risposta_c per uscire dovrai digitare un numero diverso da 10.
    ecc..ecc...

    Leggi qui:
    http://programmazione.html.it/guide/lezione/1168/il-ciclo-while/
  • Re: Chiarimento su while

    Un'ultima cosa se non ti dispiace (perchè sei stato gentilissimo), quindi !n vuol dire diverso oppure minore e uguale? perchè non capisco . Tu hai detto che il cicla fino a quando la condizione del while sia vera. Quindi quello che intendi tu, fino a quando risposta!=risposta_c ciclerà sempre fino a quando non darò la risposta giusta? (però il manuale mi dice che il ciclo termina quando è vera la condizione)
  • Re: Chiarimento su while

    != diverso
    < minore
    <= minore o uguale
    > maggiore
    >= maggiore o uguale
    == uguale
    Tu hai detto che il cicla fino a quando la condizione del while sia vera. Quindi quello che intendi tu, fino a quando risposta!=risposta_c ciclerà sempre fino a quando non darò la risposta giusta? (però il manuale mi dice che il ciclo termina quando è vera la condizione)
    Termina quando è vera la condizione di diversità!
  • Re: Chiarimento su while

    http://www.iprogrammatori.it/forum-programmazione/cplusplus/uscita-dal-while-che-non-t12068.html
  • Re: Chiarimento su while

    Scusami forse sono cretino
    la sintassi diciamo nel nostro linguaggio sarebbe
        #include <stdio.h>
        #include <stdlib.h>
    
        int main()
        {
           int risposta ; // Dichiaro la variabile
           const int risposta_c = 10; // Dichiaro la Costante
        fai //Ciclo do , per eseguire prima l'istruzione che se è vera termina altrimenti riparte
           {
               stampa("Quale è il logaritmo di 2 in base 1024?  \n");
               scanf("%d",&risposta); // Assegno il valore immesso alla variabile
              se (risposta==risposta_c)// Ciclo if
               {
                   stampa("risposta corretta! \n");
               }
               allora {
               printf("risposta errata , riprova! \n");
               }
           }
        finchè (risposta!=risposta_c); //istruzione while che fa ripartire l'algoritmo
        }
    
    il ciclo dell'inserimento della risposta dovrebbe terminare quando si inserisce la risposta corretta (quindi dovrebbe essere risposta==risposta_c) e quello che non capisco è proprio questo! perchè risposta(diverso)risposta_c?
  • Re: Chiarimento su while

    Ma stiamo dicendo la stessa cosa!
    Se tu dici che deve terminare con la risposta corretta A==B allora è anche vero che devo continuare se ho una situazione opposta cioè A!=B

    o no?
  • Re: Chiarimento su while

    Ciao Pascal88
    Se ti chiami in questo modo perchè conosci il linguaggio Pascal allora pensa alla differenza tra il 'Repeat-Until' e il 'Do-While', dove le condizioni lavorano al contrario, altrimenti non fare caso a questo messaggio.
  • Re: Chiarimento su while

    SI HAI ragione , quindi il costrutto while in questo caso vuol dire ripeti l'istruzione do se risposta(diverso)risposta_c ? Scusami se te lo chiedo ti dispiace spiegarmelo in parole povere ? Un riassunto. Perchè mi sono bloccato e non riesco a capirlo.
  • Re: Chiarimento su while

    In parole poverissime:
    tutto quello che è compreso tra do e while viene ripetuto fino a quando la condizione di iterazione è VERA
  • Re: Chiarimento su while

    L'ultima cosa. Quale sarebbe la condizione di iterazione?
  • Re: Chiarimento su while

    Do
    {
    }while(condizione iterazione)
  • Re: Chiarimento su while

    Ciao! il ciclo termina quando la condizione è falsa

    ad esempio

    while(a != 0) { } viene eseguito finchè a è diverso da 0, quando a diventa zero si esce dal ciclo
  • Re: Chiarimento su while

    Grazie tutti per l'aiuto, soprattutto a ixamit per la pazienza. Gentilissimi
Devi accedere o registrarti per scrivere nel forum
13 risposte