Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569

    [C++] scanf ritorna nan

    Uso questo codice:
    codice:
    long double num1;
    long double num2;
    char operazione;
    
    printf("Primo numero> ");
    scanf("%Lg", &num1);
    fflush(stdin); // svuota il buffer dal carattere '\n' in più che non è ancora stato letto
    
    printf("Secondo numero> ");
    scanf("%Lg", &num2);
    fflush(stdin);
    
    printf("Operazione (+, -, *, /, %, i)> ");
    scanf("%c", &operazione);
    
    cout << endl << "1: " << num1;
    cout << endl << "2: " << num2;
    exit(0); // debug
    Secondo questa pagina: http://www.eskimo.com/~scs/cclass/int/sx4da.html
    Il formato long double viene letto con %Le, %Lf, %Lg...

    Le ho provate tutte ma ciò che ottengo è il risultato nell'immagine in allegato!!
    Immagini allegate Immagini allegate
    A volte la soluzione a un problema è sempre la più semplice...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,470
    Con quale compilatore lavori?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Uso gcc...
    L'ide mi dice che usa anche MingW però non so cosa significa
    A volte la soluzione a un problema è sempre la più semplice...

  4. #4
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Nel manuale ufficiale del compilatore GNU ho trovato questo:
    http://www.gnu.org/software/gsl/manual/gsl-ref.html

    Un passo dice:
    The long double type is not supported for actual computation.

    Per cui, direi che ora è chiaro il motivo!

    Ad ogni modo il mio era un progetto di test... userò il tipo double normale... grazie di tutto
    A volte la soluzione a un problema è sempre la più semplice...

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,470
    Usi devc++ ?

    Comunque il long double viene normalmente mappato sul double. Con il Visual C++ il tuo codice funziona ... probabilmente è il tuo compilatore cha ha problemi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Originariamente inviato da oregon
    Usi devc++ ?

    Comunque il long double viene normalmente mappato sul double. Con il Visual C++ il tuo codice funziona ... probabilmente è il tuo compilatore cha ha problemi.
    Si uso devc++... non so che dirti... comunque ho cambiato i valori a double:
    codice:
    double num1;
    double num2;
    char operazione;
    
    printf("Primo numero> ");
    scanf("%lf", &num1);
    fflush(stdin); // svuota il buffer dal carattere '\n' in più che non è ancora stato letto
    //...
    Comunque, forse dico una sciocchezza essendo alle prime armi... Ma se uso cin invece di scanf cambia qualcosa?
    A volte la soluzione a un problema è sempre la più semplice...

  7. #7
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Ho trovato anche questo:
    http://www.cplusplus.com/forum/articles/6046/

    Che usa getline()...

    Sinceramente sono un po' confuso!
    Qual'è la differenza tra i tre?
    A volte la soluzione a un problema è sempre la più semplice...

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,470
    Il problema sta nel compilatore di DevC++ ... ci sono molti bug e ti consiglio di non usarlo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Originariamente inviato da oregon
    Il problema sta nel compilatore di DevC++ ... ci sono molti bug e ti consiglio di non usarlo.
    Davvero? non ne ho mai trovato uno
    Comunque era solo un applicazione di test e vedrò come orientarmi...

    Nella guida del sito si parlava di CodeBlocks come alternativa (preferirei non usare linguaggi .Net) e in internet ho trovato anche uno che si chiama Netbeans...

    Comunque, qual'è la differenza tra cin, scanf e getline?
    A volte la soluzione a un problema è sempre la più semplice...

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,470
    (preferirei non usare linguaggi .Net)
    Infatti ... puoi usare Visual C++ nativo senza problemi.

    Comunque, qual'è la differenza tra cin, scanf e getline?
    La trovi nei libri di C++, non in un forum ...

    Puoi leggere

    scanf
    http://www.cplusplus.com/reference/c.../cstdio/scanf/

    getline
    http://www.cplusplus.com/reference/string/getline/

    cin
    http://www.cplusplus.com/reference/iostream/cin/
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.