PDA

View Full Version : [C#] Aiuto con un programma


pare93
04-10-2009, 10:53
Ragazzi, devo creare un algoritmo che dati in input la data e il mese calcoli quanti giorni sono passati dall' inizio dell' anno. Io l' ho creato così ma non mi funzione. Potete dirmi dove ho sbagliato o darmi consigli?

using System;
class data
{
static void Main()
{
int giorno, mese, giorni;
Console.WriteLine("Inserisci giorno e mese della data odierna in forma numerica");
giorno = Convert.ToInt32(Console.ReadLine());
mese = Convert.ToInt32(Console.ReadLine());

if (mese == 1)
giorni = giorno;
else

if (mese == 2)
giorni = giorno + 31;

else

if (mese == 3)
giorni = giorno + 59;

else

if (mese == 4)
giorni = giorno + 90;

else

if (mese == 5)
giorni = giorno + 120;

else

if (mese == 4)
giorni = giorno + 90;

else

if (mese == 6)
giorni = giorno + 151;

else

if (mese == 7)
giorni = giorno + 181;

else

if (mese == 8)
giorni = giorno + 212;

else

if (mese == 9)
giorni = giorno + 243;

else

if (mese == 10)
giorni = giorno + 273;

else

if (mese == 11)
giorni = giorno + 304;

else

if (mese == 12)
giorni = giorno + 334;
else
Console.WriteLine("La data inserita non è corretta, riprova");
Console.ReadLine();

Console.WriteLine("Dall' inizio dell' anno è/sono passato/i = {0} giorno/i", giorni);
Console.ReadLine();
}


}

Alien
04-10-2009, 13:41
Oddio, ma perchè complicarsi così la vita?
usa datetime:

datetime dt1 = new datetime(anno, mese, giorno);
datetime dt2 = new datetime(anno, 1, 1);

timespan dtdiff = dt1-dt2
string giorni = dtdiff.Days.ToString();

Console.WriteLine("Dall' inizio dell' anno è/sono passato/i = {0} giorno/i", giorni);
Console.ReadLine();


più o meno così dovrebbe funzionare (di sicuro c'è da sistemare il case dei tipi che non sono stato a controllare)

MarcoGG
04-10-2009, 13:43
L'errore è non guardare prima se esistono Metodi già pronti :

DateTime data = new DateTime(anno, mese, giorno);
int giorni = data.DayOfYear;

oppure

int giorni = data.DayOfYear - 1;

se si vuole escludere il giorno-limite dal conteggio.

;)

pare93
04-10-2009, 14:34
Si, scusate mi sono dimenticato di specificarlo, sono alle prime armi con questo linguaggio quindi non avreste delle soluzioni da propormi utilizzando l' if come ho fatto io?

khelidan1980
04-10-2009, 14:41
Si, scusate mi sono dimenticato di specificarlo, sono alle prime armi con questo linguaggio quindi non avreste delle soluzioni da propormi utilizzando l' if come ho fatto io?

si che meno if usi e meglio è! :asd:

MarcoGG
04-10-2009, 14:50
Si, scusate mi sono dimenticato di specificarlo, sono alle prime armi con questo linguaggio quindi non avreste delle soluzioni da propormi utilizzando l' if come ho fatto io?

A maggior ragione, se sei alle prime armi, comincia fin da subito ad usare metodi e proprietà opportuni. Con DayOfYear lo si fa in una riga di codice...
Se proprio vuoi perseverare diabolicamente, almeno usa uno switch. :D

Mica sarà uno di quei famosi "esercizi scolastici" in cui bisogna reinventare la ruota, spero...

Kralizek
04-10-2009, 22:24
A maggior ragione, se sei alle prime armi, comincia fin da subito ad usare metodi e proprietà opportuni. Con DayOfYear lo si fa in una riga di codice...
Se proprio vuoi perseverare diabolicamente, almeno usa uno switch. :D

Mica sarà uno di quei famosi "esercizi scolastici" in cui bisogna reinventare la ruota, spero...

nel caso in particolare si deve reinventare la ruota, la strada ed anche il carretto :P