Programma di statistica

di mattia06 il
10 risposte
Buongiorno a tutti, ho fatto questo programma che faccia inserire all'utente nome, cognome, sesso e anno di nascita. Deve restituire inoltre quanti maggiorenni e maschi ci sono secondo quanto inserito dall'utente. Ora, non essendo ancora molto pratico col C#, chiedevo un aiuto perché il programma non mi riesce. Cosa c'è di sbagliato? Vi posto il codice:


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

namespace Programma_di_statistica
{
class Program
{
static void Main(string[] args)
{
int z,i,cont = 0,pont = 0;
string[,] nomi = new string[50,50];
string[,] cognomi = new string[50,50];
string[,] sesso = new string[50,50];
int[] anno = new int[50];

do
{
Console.WriteLine("\nDi quante persone vuoi inserire i dati: ");
z = Console.Read();
} while ((z<0) || (z>50));

for (i = 0; i < z; i++)
{
Console.WriteLine("\nInserisci il nome: ");
nomi[i,0] = Console.ReadLine();

Console.WriteLine("\nInserisci il cognome: ");
cognomi[i,0] = Console.ReadLine();

Console.WriteLine("\nInserisci il sesso: ");
sesso[i,0] = Console.ReadLine();

Console.WriteLine("\nInserisci l'anno di nascita: ");
anno = Console.Read();
}

for (i = 0; i < z; i++)
{
if (2016-anno>18)
cont++;
}

for (i = 0; i < z; i++)
{
if((sesso[i,0] =="Maschio")||(sesso[i,0] == "maschio"))
pont++;
}

Console.WriteLine("\nIn base a quanto inserito dall'utente ci sono {0} maggiorenni e {1} maschi.",cont, pont);

}
}
}


Grazie in anticipo a chiunque mi aiuterà.

10 Risposte

  • Intanto perché usi delle matrici? Come ti ho già detto in c# esistono le stringhe.

    Poi per il sesso usa un solo carattere

    Per il resto devi essere più preciso sul problema che hai
  • Grazie mille!!
  • Come faccio a convertire una stringa in carattere?
  • Non fare conversioni usa i char dove servono

    Studia le basi sui libri, non buttarti senza preparazione minima
  • L'ho corretto in questo modo, ora funziona:


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

    namespace Programma_di_statistica
    {
    class Program
    {
    static void Main()
    {
    int cont = 0,pont = 0;
    string[] nomi = new string[50];
    string[] cognomi = new string[50];
    char sesso = '0';
    int[] anno = new int[50];


    int z;
    do
    {
    Console.WriteLine("\nDi quante persone vuoi inserire i dati: ");
    z = Convert.ToInt32(Console.ReadLine());
    } while ((z<0) || (z>50));


    int i = 0;
    for (i = 0; i < z; i++)
    {
    Console.WriteLine("\nInserisci il nome: ");
    nomi = Console.ReadLine();

    Console.WriteLine("\nInserisci il cognome: ");
    cognomi = Console.ReadLine();

    Console.WriteLine("\nInserisci il sesso: ");
    sesso = Convert.ToChar(Console.ReadLine());

    Console.WriteLine("\nInserisci l'anno di nascita: ");
    anno = Convert.ToInt32(Console.ReadLine());
    }

    for (i = 0; i < z; i++)
    {
    if (2016-anno>=18)
    cont++;
    }

    for (i = 0; i < z; i++)
    {
    if((sesso == 'M')||(sesso == 'm'))
    pont++;
    }

    Console.WriteLine("\nIn base a quanto inserito dall'utente ci sono {0} maggiorenni e {1} maschi.",cont, pont);
    Console.ReadLine();
    }
    }
    }
  • Ottimizza, usa una sola for dato che sono uguali
    
    for (i = 0; i < z; i++)
    {
      if (2016-anno[i]>=18) cont++;
      if((sesso == 'M')||(sesso == 'm')) pont++;
    }
    
    addirittura anche nella stessa for dell'input !
  • Grazie non ci avevo pensato!!
  • Scusate, visto che ora voglio fare lo stesso programma ma con le classi, come potrei fare?
    Ho pensato di creare una classe Person ma non so come fare.
  • Probabilmente ti manca la parte teorica. Non si scrive codice senza aver studiato la teoria. E comunque è un altro problema e non dovresti usare lo stesso thread...
  • Ok mi sa che prima devo studiarmi un po di teoria!!
Devi accedere o registrarti per scrivere nel forum
10 risposte