Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    59

    Stesso programma in C#, altro problema

    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!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    14
    Ciao l'errore sembra essere questo doppio loop

    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();
    }
    }

    ti consiglio di fare così...


    for (int i=0;i<ElencoNomi.Length;i++)
    {
    double dote = Convert.ToDouble(ElencoDoti[i]);
    string nomi = ElencoNomi[i];
    spettante = coefficiente * dote;
    Console.WriteLine("A " + nomi.ToString() + " spetteranno " + spettante.ToString());
    Console.ReadLine();
    }

    Così dovrebbe funzionare...

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    59
    E invece no! (ce l'ho con me, non con te!)

    questo e' il codice:


    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 Dotielencate = 0; //variabile richiesta da VS
    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;

    }
    ArrayDoti = ElencoDoti.ToArray();
    ArrayNomi = ElencoNomi.ToArray();

    for (int i=0;i<ElencoNomi.length;i++)
    {
    double Dotielencate = Convert.ToDouble(ElencoDoti[i++]);
    string nomi = ElencoNomi[i];
    spettante = coefficiente * dote;
    Console.WriteLine("A " + nomi.ToString() + " spetteranno " + spettante.ToString());
    Console.ReadLine();
    }

    .Lenght e' sottolineato in azzurro con questa spiegazione nella lista errori : " System.Collection.Generic.List<string> does not contain a definition for "lenght".
    Errore di battitura: impossibile, a parte il fatto che ho provato si a Lenght che lenght, ho gia' usato questo metodo altre volte, prima volta che vedo un errore del genere!
    Pago da bere a chi ci capisce qualcosa!

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    14
    Scusami errore mio,
    sostituisci Length con Count, così dovrebbe funzionare...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.