Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Nuovo iscritto primo dubbio

    Salve a tuttti, sono un sistemista ventitrenne che si sta avvicinando al fantastico mofdo della programmazione, come prima cosa sento di dover un complimento a ttti voi che, anche se non ho mai scritto, seguo abastanza spesso, vi trovo molto preparati e fantasiosi, complimenti!
    Seconda cosa volevo subito porvi un quesito.....questo codice è uno dei classici programmi che si tentano all'inizio della propria strada nel mondo della programmazione:

    codice:
    #include <stdio.h>
    int c1=0, c2=0;
    main()
    {
        printf ("\nciao questo programma esamina due cifre e determina quale è la maggiore");
        printf ("\n\ninserisci la prima cifra: ");
        scanf ("%d",&c1);
        printf ("\n\ninserisci la seconda cifra: ");
        scanf ("%d",&c2);
        if (c1 > c2)
           printf ("\n\ala prima cifra è maggiore della seconda");
        else if (c1 = c2)
                    printf ("\n\ale due cifre sono uguali");
             else   printf ("\n\ala seconda cifra è maggiore della prima cifra");
    }
    ok l'ambiente di sviluppo è dev-c++, compilo il tutto e ho il mio bel programma.exe
    ora alla prima esecuzione del prog va tutto ok, le cifre vengono riconosciute perfettamente, se invece lancio nuovamente il prog qualsiasi cifra io metto mi da sempre il messaggio che le de cifre sono uguali....valori in memoria? che ne pensate??? altra anomalia è che in output il carattere "è" non viene visualizzato correttamente....che ne pensate???
    grazie mille

  2. #2
    mi correggo automaticamente....penso che il problema sia nell'if nidificato perche se immetto la prima cifra maggiore della seconda allora mi da il messaggio corretto ma non riesce a funzionare il resto

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    746

    Re: Nuovo iscritto primo dubbio

    il primo if è corretto infatti, come hai detto tu,
    se la prima cifra è maggiore della seconda il programma
    funziona.

    l'errore sta nell'else if, questo:

    codice:
    else if (c1 = c2)
    è un errore.

    in C '=' equivale ad un assegnamento: l'espressione "c1 = c2"
    assegna a 'c1' il valore di 'c2', che diventa anche il valore dell'espressione.

    Ora, se 'c2' è uguale a zero (e 'c1' < 0), l'espressione viene
    valutata come falsa ed il programma prosegue correttamente, ma, in tutti
    gli altri casi, l'espressione risulta vera e viene eseguita la parte di codice
    corrispondente.

    tutto questo per dirti che avresti dovuto usare
    '==', al posto di '='

    codice:
    else if (c1 == c2)
    che compie un test sull'uguaglianza dei due valori


  4. #4
    grazie grazie u-bahm hop capito tutto

    per l'altra cosa del carattere sai nulla?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    746
    alcuni compilatori si comportano come ci si aspetterebbe quando
    incontrano caratteri accentati all'interno di stringhe e caratteri
    (...), altri no

    se il tuo è tra questi ultimi (......) devi utilizzare il valore
    decimale, oppure quello esadecimale o, ancora, quello ottale:

    es.
    codice:
            printf("%c %c %c\n", 232, 0xe8, 0350);
            printf("\xe8 \350\n");
    questi i codici dei caratteri accentati nel set di caratteri
    extended ASCII (8 bit, unsigned, da 0 a 255):

    codice:
    CARATTERE     |	DECIMALE | ESADECIMALE | OTTALE	
    --------------|----------|-------------|-------
                  |          |             |
        À         |   192    |     0xc0    |  0300
        È         |   200    |     0xc8    |  0310
        É         |   201    |     0xc9    |  0311
        Ì         |   204    |     0xcc    |  0314
        Ò         |   210    |     0xd2    |  0322
        Ù         |   217    |     0xd9    |  0331
        à	      |	  224	 |     0xe0    |  0340
        è	      |	  232	 |     0xe8    |  0350
        é	      |	  233	 |     0xe9    |  0351
        ì	      |	  236	 |     0xec    |  0354
        ò	      |	  242	 |     0xf2    |  0362
        ù	      |	  249	 |     0xf9    |  0371


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 © 2025 vBulletin Solutions, Inc. All rights reserved.