Risultati da 1 a 10 di 26

Discussione: Programmare in C++

Visualizzazione Elencata

Messaggio precedente Messaggio precedente   Nuovo messaggio Nuovo messaggio
  1. #10

    Predefinito

    Allora, intanto grazie per il chiarimento sui float. In particolare, non sapevo dei problemi che si possono creare andando ad uguagliare dei float.

    Darkito, il programma che hai modificato contiene un paio di righe in più. In pratica se inizializzo a zero i parametri e poi faccio assumere loro il valore inserito dall'utente non rischio errori?

    Un'ultima cosa per quanto riguarda gli \n all'interno di una scanf.
    La maggior parte di voi ritiene siano inutili e per il 90% dei casi potrei essere d'accordo.

    Se notate, la scanf sui caratteri in cui volevo inserire uno \n è la seconda che si incontra nel codice scritto da me. Prima di quella c'è una scanf su un numero intero inserito dall'utente. Durante questa prima scanf, l'utente inserisce il numero ma preme anche Invio. Nella standard input del computer entrano sia il valore intero inserito, sia il carattere invio. Proprio questo carattere Invio potrebbe causare un problema in una seconda scanf dedicata ai caratteri (come accade nel mio caso), poiche questa seconda scanf andrebbe a leggere non "q" per terminare, ma ciò che nella standard input lo precede, ovvero l'Invio inserito dall'utente nella prima scanf. Inserendo una \n nella seconda scanf risolveremmo il problema. Ma perchè qui invece non serve?

    Ora per semplificare vi mostro un codice che senza una \n in una seconda scanf per caratteri genererebbe un piccolo problema (provate a togliere \n):
    #include <stdio.h>
    #include <iostream>
    int main () {
    float a, b;
    char operation;
    int ok=1;

    printf("Inserire i valori a e b:\n");
    scanf("%f%f", &a, &b);

    do {printf("Indacare l'operazione da eseguire (+,-,*,/):\n");
    scanf("\n%c", &operation);
    if (operation=='+') ok=0;
    if (operation=='-') ok=0;
    if (operation=='*') ok=0;
    if (operation=='/') ok=0;
    } while(ok);

    switch(operation){
    case '+': printf("%f+%f=%f\n", a, b, a+b);
    break;
    case '-': printf("%f-%f=%f\n", a, b, a-b);
    break;
    case '*': printf("%f*%f=%f\n", a, b, a*b);
    break;
    case '/': printf("%f/%f=%f\n", a, b, a/b);
    break;
    default: printf("Operazione non riconosciuta.\n");
    }
    system("pause");

    return 0;
    }
    @Vaan: no, non ancora.
    Ultima modifica di Archie Hicox; 01-11-2010 alle 11:45

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •