Avevo gia' postato una discussione su questo programma che ho realizzato, ma mi hanno detto di venire qui (se ho sbagliato, chiedo venia!)!
Il programma che sto compilando deve risolvere i riparti proporzionali (vedi questo PDF per sapere cosa sono).
Ora il compilatore non mi segnala errori, ma il programma non si comporta come vorrei:
Invece di eseguire l'operazione una volta per ogni utente immesso, la ripete tante volte quante sono "gli utenti " per ogni nome.
Es: dichiaro che Luca (dote 2000), Marco(dote 5000) e Giovanni (dote 3000)devono dividersi 4000 euro. Una volta immessi i dati, ecco cosa ottengo (copiatura fedele della console di dos):
- A Luca spetteranno 800
- A Marco spetteranno 800
- A Giovanni spetteranno 800
- A Luca spetteranno 2000
- A Marco spetteranno 2000
- A Giovanni spetteranno 2000
- A Luca spetteranno 1200
- A Marco spetteranno 1200
- A Giovanni spetteranno 1200
Invece, il programma dovrebbe comportarsi cosi':
- A Luca spetteranno 800
- A Marco spetteranno 2000
- A Giovanni spetteranno 1200
E poi, ovviamente, terminare...
Ecco il codice :
-------------------------------------------------------------------------------------
static void Main(string[] args)
{
string s;//stringa generica
string nome;// nome del soggetto
double quantita = 0; //quantita' da dividere
double NumeroPax = 0;//numero totale dei partecipanti
double dote = 0; // dote portata da ciascun soggetto
double totaleDoti = 0; // somma delle doti
double coefficiente = 0; //coefficiente di riparto
double spettante = 0; // importo spettante a ciascun soggetto
double ValoreDiControllo = 0;
//double[] ArrayDoti; //elencodoti trasformato in array
// string[] ArrayNomi;//elenconomi trasformato in array
Console.WriteLine("Inserisci la quantita' da dividere");
s = Console.ReadLine();
quantita = Convert.ToDouble(s);
Console.WriteLine("Inserisci il numero dei partecipanti");
s = Console.ReadLine();
ValoreDiControllo = Convert.ToDouble(s);
List<string> ElencoNomi = new List<string>();
List<double> ElencoDoti = new List<double>();
while (ValoreDiControllo > NumeroPax)
{
Console.WriteLine("Inserisci il nome del partecipante");
nome = Console.ReadLine();
ElencoNomi.Add(nome);
NumeroPax = NumeroPax + 1;
Console.WriteLine("Inserisci la dote di " + nome);
s = Console.ReadLine();
dote = Convert.ToDouble(s);
ElencoDoti.Add(dote);
totaleDoti = totaleDoti + dote;
}
{
coefficiente = quantita / totaleDoti;
}
foreach (double doti in ElencoDoti)
foreach (string nomi in ElencoNomi)
{
{
dote = Convert.ToDouble(doti);
spettante = coefficiente * dote;
Console.WriteLine("A " + nomi.ToString() + " spetteranno " + spettante.ToString());
Console.ReadLine();
}
}
}
}
}
-----------------------------------------------------------------------------------
Grazie mille in anticipo!