Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2015
    Messaggi
    2

    [C] Ciclo con valore sentinella

    Ciao a tutti, da poco sto imparando un po' di C ed è il mio primo linguaggio di programmazione.
    Non riesco a "chiudere" un ciclo con while.
    Ho fatto una prova con un codice di test e funziona, anche se in realtà ho usato il comando if.
    Ecco un pezzo di codice che mostra il valore ascii per ogni carattere immesso

    codice:
    #include <stdio.h>
    #define OUT 'end'
    
    
    int
    main(void)
    {
        int ascii, count;
        char carattere;
        
        printf("\n\end per uscire\ninserisci un carattere> ");
        scanf ("%c", &carattere);
        
        ascii = (int)carattere;
        
        while(ascii != OUT){
        
                count = 0;            
    
    
                printf ("valore numerico per %c > %d", carattere, ascii);
    
    
                  count = ++ 1;
    
    
                printf("\n\end per uscire\ninserisci un carattere> ");
                scanf ("%c", &carattere);
            }
            
            printf ("caratteri processati> %d", count);
        
            return 0;
        }
    il compilatore mi ha dato un errore quando ho comparato la variabile char con la costante OUT, quindi ho provato a convertirlo prima del ciclo.
    ho voluto usare la variabile count come contatore ma l'operazione count = ++ 1 mi da comunque problemi

    grazie in anticipo

  2. #2
    Che compilatore usi ?
    Il codice non è compilabile, e contiene diversi errori logici.
    Innanzi tutto le variabili (nel tuo caso count) vanno inizializzate a 0 appena dichiarate, non ha senso azzerarle ad ogni iterazione del cliclo while, per poi incrementerne il valore poco dopo nello stesso ciclo (in ogni caso l'incremento non si fa in quel modo, ma semplicemente con count++ )
    'end'
    non è un valore char valido, la scanf non può leggere tasti 'speciali'
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2015
    Messaggi
    2
    Uso gcc da terminale.

    L'errore di count nel ciclo l'ho capito però, vedendo che il codice di test funziona e avendolo scritto in un modo simile non capisco cosa non gli vada bene.

    Ecco il codice di prova ()
    codice:
    #include <stdio.h>
    #define FLAG 'end'
    
    int
    main (void)
    {
        int data;
        
        printf ("\n\nInsert 0, 1, or exit>");
        scanf("%d", &data);
        
        if (data != FLAG){
            switch(data){...}
                }    
              
             printf("logout\n");    }
        
        return 0;
    }
    Edit: ho fatto una prova e anche solo dandogli 'e' come input anziché l'intero 'end' salta lo switch. C'è un modo per concludere un ciclo senza aumentare il numero di segnaposti nello scanf e senza porre le varie condizioni?
    Ultima modifica di SodA; 03-06-2015 a 13:15

  4. #4
    Potresti usare una combinazione di tasti, tradizionalmente si usa CTRL+X
    cambiando la define in questo modo
    codice:
    #define OUT 24
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.