If ed else errore logico

di Sterlok il
21 risposte
Come si vede nel programma seguente, il cacolo è errato nei messagebox:
non trovo la soluzione... forse la formula è sbagliata negli "if" e "if else"....
Segue il problema di scuola:

In un albergo il prezzo della camera dipende dal piano in cui ci si trova secondo la seguente tabella.
piano 1 € 35
piano 2 € 45
piano 3 € 55
piano 4 € 65
Calcola il prezzo del conto sapendo il numero di giorni di soggiorno e il piano della camera.

        private void button1_Click(object sender, EventArgs e)
        {
            giorni = Int32.Parse(textBox1.Text);
            piano1 = 35;
            piano2 = 45;
            piano3 = 55;
            attico = 100;
            calcolo1 = piano1 * giorni;
            calcolo2 = piano2 * giorni;
            calcolo3 = piano3 * giorni;
            calcoloattico = attico * giorni;


            if (calcoloattico == attico * giorni)
            {
             MessageBox.Show(("Il tuo soggiorno per l'attico esclusivo è di ") + (giorni) + (" giorni per un totale di ") + (calcoloattico) +(" euro, Grazie"),(" Prezzo totale...."));

                

            }
            
            
            else if (calcolo1 == piano1 * giorni)
            {
             MessageBox.Show(("Il tuo soggiorno per il primo piano è di ") + (giorni) + (" giorni per un totale di ") + (calcolo1) + (" euro, Grazie"), (" Prezzo totale...."));
                


            }
            else if (calcolo2 == piano2 * giorni)
            {
             MessageBox.Show(("Il tuo soggiorno per il secondo piano è di ") + (giorni) + (" giorni per un totale di ") + (calcolo2) + (" euro, Grazie"), (" Prezzo totale...."));
              


            }
            else if (calcolo3 == piano3 * giorni)
            {
             MessageBox.Show(("Il tuo soggiorno per il terzo piano è di ") + (giorni) + (" giorni per un totale di ") + (calcolo3) + (" euro, Grazie"), (" Prezzo totale...."));
             


            }
            else if (String.IsNullOrEmpty(textBox1.Text))
            {
            MessageBox.Show("Inserire data nella casella", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

21 Risposte

  • Sterlok ha scritto:


    non trovo la soluzione... forse la formula è sbagliata negli "if" e "if else"....
    Nel tuo codice, hai calcolato tutte le tariffe totali (e non ti serve, dato che dovrai calcolare solo quella del piano scelto, direi) e poi ad ogni if vai a confrontare se il risultato della formula del calcolo è uguale al valore che hai messo nella variabile del calcolo, che hai inizializzato con il risultato della medesima formula: è ovvio che i valori coincideranno tutti.

    Il codice che hai scritto non ha senso. L'if dovrà controllare qual è il piano prescelto dall'utente e basta, e una volta individuato il piano, all'interno del codice dell'if metti il calcolo della tariffa associata per i giorni.

    Nel tuo codice manca anche l'inserimento del numero di piano.

    Rileggilo e cerca mentalmente di spiegare a te stesso ogni istruzione cosa fa, e fai un debug passo per passo del programma, così comprendi esattamente i passaggi errati verificando il flusso dell'esecuzione del codice e il valore assunto dalle variabili.

    Ciao!
  • In pratica, come hai usato un textbox per inserire i giorni, utilizza un altro controllo (vedi tu quale) per inserire il piano.

    In base a questi due valori, calcola il costo di un giorno e poi utilizza un formula unica per calcolare il totale.
  • Ho utilizzato i radio button....

  • E il codice?
  • oregon ha scritto:


    E il codice?
    Per la verità, io non vedo nemmeno l'immagine.
  • Sì ma, tasto destro, apri immagine in un'altra scheda ...
  • Io l'immagine la vedo direttamente, dal browser.
  • Ho risolto oggi a lezione e abbimo approfondito, ma l'argomento vi anticipo non era ancora stato contemplato in calendario....
    Comunque era tutto come aveva descritto Alka, non avendo fatto ancora l'aromento mi mancavano basi sullo switch, da li ho capito come assegnare ai radio button un valore (tipo 0,1,2,3 ecc) per interpretarno nel codice.... Vi ringrazio a tutti, che problemi ci sono con la visualizzazione del programmino?
  • Risolvevi anche con le if senza switch
  • Sterlok ha scritto:


    ... mi mancavano basi sullo switch ...
    Uno "switch" e' SOLO una serie di "if" con un ""vestito piu' carino"" (e PIU' limitato nel suo utilizzo).

    MA E' PERFETTAMENTE EQUIVALENTE (al 100%) ad una serie di "if".

    SE non hai capito come funziona un "if", NON HAI CAPITO come funziona lo statement "switch".
  • E se non hai capito le IF ti devi assolutamente fermare e rivedere l'argomento che è basilare
  • Ho detto che non avevamo fatto lo switch!!! Enteinde?
    Poi se e uguale all'IF che volete da me?
  • Sterlok ha scritto:


    Ho detto che non avevamo fatto lo switch!!! Enteinde?
    Sei tu che hai nominato lo switch, nessuno di noi lo ha menzionato.
    Ti si sta dicendo che, pur non avendolo ancora fatto, non era indispensabile per la risoluzione dell'esercizio, quindi non c'entra nulla.

    Sterlok ha scritto:


    Poi se e uguale all'IF che volete da me?
    Sei tu che hai posto un problema che non riuscivi a risolvere, e che teoricamente dici di aver risolto con una cosa che ti è stata spiegata in seguito ma che non era strettamente indispensabile, quindi nessuno vuole niente da te, tanto è vero che stai facendo e dicendo tutto da solo.
  • Si dovevo aprire un altro 3d, in principio sono partito con if ed else, ma sono andato oltre menzionando lo switch dando per scontato che parlavamo dello switch.....perchè devo sempre andare oltre, poi che sia uguale all' if è un dato superfluo, ciao
Devi accedere o registrarti per scrivere nel forum
21 risposte