Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#][RISOLTO]Problema semplice calcolatrice console
Forum - C# / VB.NET - [C#][RISOLTO]Problema semplice calcolatrice console

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
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:

Codice sorgente - presumibilmente C#

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace Calcolatrice
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             //Dichiarazione variabili
  13.             int a = 0;
  14.             int b = 0;
  15.             int risultato;
  16.             float divisione;
  17.             byte i = 0;
  18.             string c;
  19.  
  20.             Console.WriteLine("Inserire a: ");
  21.             a = Convert.ToInt32(Console.ReadLine());
  22.             Console.WriteLine("Inserire b: ");
  23.             b = Convert.ToInt32(Console.ReadLine());
  24.             Console.WriteLine("Inserire il tipo di operazione voluta:");
  25.             c = Console.ReadLine();
  26.             switch (c)
  27.             {
  28.                 case "somma":
  29.                     risultato = a + b;
  30.                     break;
  31.                 case "sottrazione":
  32.                     risultato = a - b;
  33.                     break;
  34.                 case "moltiplicazione":
  35.                     risultato = a * b;
  36.                     break;
  37.                 case "divisione":
  38.                     divisione = (float)a / (float)b;
  39.                     i++;
  40.                     Console.WriteLine("Il risultato è: {0}", divisione);
  41.                     break;
  42.                 default:
  43.                     Console.WriteLine("Errore!\a");
  44.                     i++;
  45.                     break;
  46.             }
  47.             if (i != 1)
  48.             {
  49.                 Console.WriteLine("Il risultato è: {0}", risultato);
  50.                 Console.ReadLine();
  51.             }
  52.             else
  53.                 Console.ReadLine();
  54.         }
  55.     }
  56. }



Il problema l'ho risolto in questo modo:
Codice sorgente - presumibilmente C# / VB.NET

  1. int risultato=0;
  2. 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 il 02/08/2011 alle 8:31
PM
Avatar
D@vide (Member)
Expert


Messaggi: 450
Iscritto: 30/06/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 22:15
Lunedì, 01/08/2011
Riga 38
Codice sorgente - presumibilmente Plain Text

  1. divisione = (float)a / (float)b;



deve essere
Codice sorgente - presumibilmente Plain Text

  1. risultato = (float)a / (float)b


Basta che dichiari risultato come float, pensavo fosse sottinteso -.- - D@vide - 02/08/11 12:31
PM
Avatar
arack95 (Member)
Pro


Messaggi: 144
Iscritto: 15/11/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 22:59
Lunedì, 01/08/2011
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:

http://pastebin.com/TVeHixeb

PM
Avatar
Nullable (Normal User)
Expert


Messaggi: 217
Iscritto: 12/07/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 23:58
Lunedì, 01/08/2011
Non ha senso creare la variabile divisione, tanto l'unica variabile che viene restituita è risultato quindi D@vide ha ragione.

PM
Usa i commenti per chiedere spiegazioni o ringraziare le risposte.