Oppure

Loading
01/08/11 20:07
Ciao a tutti, è da poco che ho riniziato a studiare il c# e così ho creato una semplice calcolatrice.
Il problema è il seguente: non capisco perchè la divisione non mi restituisce un numero con virgola e per quale motivo in fase di compilazione mi dà errore dicendo: Utilizzo della variabile locale 'risultato' non assegnata.

Questo è il codice:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Calcolatrice
{
    class Program
    {
        static void Main(string[] args)
        {
            //Dichiarazione variabili
            int a = 0;
            int b = 0;
            int risultato;
            float divisione;
            byte i = 0;
            string c;

            Console.WriteLine("Inserire a: ");
            a = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Inserire b: ");
            b = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Inserire il tipo di operazione voluta:");
            c = Console.ReadLine();
            switch (c)
            {
                case "somma":
                    risultato = a + b;
                    break;
                case "sottrazione":
                    risultato = a - b;
                    break;
                case "moltiplicazione":
                    risultato = a * b;
                    break;
                case "divisione":
                    divisione = (float)a / (float)b;
                    i++;
                    Console.WriteLine("Il risultato è: {0}", divisione);
                    break;
                default:
                    Console.WriteLine("Errore!\a");
                    i++;
                    break;
            }
            if (i != 1)
            {
                Console.WriteLine("Il risultato è: {0}", risultato);
                Console.ReadLine();
            }
            else
                Console.ReadLine();
        }
    }
}


Il problema l'ho risolto in questo modo:
int risultato=0;
float divisione=0;    


mettendo entrambe le variabili a 0 non mi viene più dato errore in fase di compilazione e soprattutto ora la divisione è corretta.

Sinceramente non ho bene capito perchè inizializzandole ora funziona e prima no.
ad esempio prima scrivevo 4/3 e mi restituiva 0 booo
Ultima modifica effettuata da 02/08/11 6:31
01/08/11 20:15
D@vide
Riga 38
divisione = (float)a / (float)b;


deve essere
risultato = (float)a / (float)b
aaa
01/08/11 20:59
arack95
Il motivo per cui non ti da un numero con la virgola non l'ho ben capito, sicuro che non passi numeri la cui divisione è intera?
Comunque per il warning è semplice, il compilatore ti sta avvertendo che non in tutti i casi alla riga 49 risultato ha un valore.

Comunque fossi in te eliminerei un paio di cose.. ecco come lo farei:

pastebin.com/…
aaa
01/08/11 21:58
Nullable
Non ha senso creare la variabile divisione, tanto l'unica variabile che viene restituita è risultato quindi D@vide ha ragione.
aaa