Gå til innhold

C#: Trenger hjelp til array oppgave - VWD


Anbefalte innlegg

Hei,

 

Skal lage et lite brukergrensesnitt i VWD C#. Skal lage en array med antall dager i hver måned som verdier. Januar skal ha indeks 0, februr 1 osv. I en tekstboks skal jeg kunne skrive inn nummeret på en måned og få en utskrift med antall dager i denne måneden ved å trykke på en knapp. Og vi ser bort ifra skuddår.

 

Jeg har litt problemer med å starte kodingen. Hvordan skal jeg få med alle månedene?

Endret av Mr.Anki
Lenke til kommentar
Videoannonse
Annonse

Noe slik kansje?

 

INT[] Months = new {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

 

MessageBox.Show("Mai har " + Months[4].ToString() + " dager");

 

Sikkert en og annet syntax error her, men du skjønner sikkert tegninga.

 

System.Globalization.GregorianCalendar?

Så klart, men det virket som at trådstarter hadde en Array oppgave.

Lenke til kommentar

Slenger du inn en ENUM i tillegg så er det enda bedre:

enum mnder{Januar, Februar, Mars, April, Mai, Juni, Juli, August, September, Oktober, November, Desember};

public VisMåned(mnder pMåned)
{
MessageBox.Show(pMåned.ToString() + " har " + Months[(int)pMåned].ToString() + " dager");
}

Eller noe slikt ;-)

Lenke til kommentar

;-)

Sitat fra Trådstarter:

"Og vi ser bort ifra skuddår."

 

Oppgaven er nok en skoleoppgave for å lære arrays. Har nok liten eller ingen betydning om det er skuddår eller ikke.

Men så klart. I en vanlig programerings situasjon så bruker man jo .NET bibliotekene til slikt.

 

I Clarion har vi ingen slke biblioteker som du viser til så der gjør vi det på en annen måte, som kansje er like enkel:

 

DagerFebruar = Day(Date(3, 1, 2010) - 1)

Fordi Date funksjonen returnerer en LONG som representerer antall dager siden 1, Januar 1800 (mener jeg å huske), og Day returnerer selve datoen for dagen.

 

Tilsvarende kunne man vel også brukt .NET sin DateTime.AddDay funksjon for å få til det samme.

 

edit: UPS!! Vakke meningen å HiJacke tråden din ;-)

Endret av HDSoftware
Lenke til kommentar
Noe slik kansje?

 

INT[] Months = new {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

 

MessageBox.Show("Mai har " + Months[4].ToString() + " dager");

 

Sikkert en og annet syntax error her, men du skjønner sikkert tegninga.

 

System.Globalization.GregorianCalendar?

Så klart, men det virket som at trådstarter hadde en Array oppgave.

 

 

Denne fungerer ja, men hvordan skal jeg få den til å fungere på de andre månene?

 

Når jeg feks. skrive 11 skal november komme opp.

Endret av Mr.Anki
Lenke til kommentar

Nei. Følg tråden her så ser du det.

enum mnder{Januar, Februar, Mars, April, Mai, Juni, Juli, August, September, Oktober, November, Desember};
public int[] DagerIMåned = new {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

public void VisAlt(mnder pMåned)
{
 string ValgtMåned = pMåned.ToString();
 string Dager = DagerIMåned[(int)pMåned].ToString();
 MessageBox.Show(ValgtMåned + " har " + Dager);
}

 

Så kaller du den slik:

VisAlt(mnder.Mars);

Endret av HDSoftware
Lenke til kommentar

Off topic...

 

Husker slike oppgaver fra høyskolen, og de er i min mening totalt ubrukelige oppgaver. Flesteparten av oppgavene i grunnleggende programmering er ubrukelige. Jeg hadde Java, men det er same shit different sugar...

 

Grunnen til at jeg mener dette er at alt blir veldig mye stykkevis og delt, og man får ingen kontekst på ting. Og da ender man opp med slike oppgaver, hvor man skal bruke et array til å lagre måneder i på en måte som man sannsynligvis aldri kommer til å bruke igjen.

Man burde heller tatt utgangspunkt i et litt større case, og bygd opp oppgavene og undervisningen rundt dette, slik at man ville kommet seg igjennom det. (men nå suger jeg i pedagogikk da...)

 

Det var dagens rant... Sorry at du ble threadjacked ;)

 

-C-

Lenke til kommentar

Enum er en metode som lar deg lage en liste av verdier med forklarende navn.

 

Månedene kan lages på to måter:

public const int Januar = 0;

public const int Februar = 1;

..... o.s.v.....

I stedet så kan vi bruke en ENUM (enumerator)

public enum måned{Januar, Februar, Mars, ...., Desember};

 

Som lar oss skrive: måned.Januar

og lar oss prototype funksjoner void Funksjon(måned pPassedMonth)

 

Ganske nyttig med andre ord...

Endret av HDSoftware
Lenke til kommentar

Default er en ENUM av typen INT, men dette kan du endre selv, men det tipper jeg er et kappetel seinere i boka di ;-)

 

Glemte jo å si at ENUM er 0 ordinert slik at første element er 0

måned.januar = 0

måned.februar = 1

o.s.v.

 

Lar deg med andre ord skrive tall på en forståelig måte og som sagt, prototype med forhåndsdefinerte verdier.

 

void Funksjon(måned pValgtMåned)

 

Denne funksjonen kan kunn ta imot enumet måned. Du kan med andre ord ikek gjøre slik:

Funksjon(2)

Da tallet 2 ikke er et element i enum måned.

men Funksjon(måned.Mars) gir mening

Endret av HDSoftware
Lenke til kommentar

Skal prøve litt igjen på den der, men holder på med en ny oppgave nå også den med arrays. Skal jeg simulere en terning slik at jeg får et tilfeldig tall. Hver gang jeg slår terningen ska det telles opp hvor mange ganger jeg har fått hver verdi.

 

Dette er et eksempel i boken, men det er noe med koden som ikke vil fungere. Får feil på linje 10.

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

public partial class _Default : System.Web.UI.Page

{

int ] antall = new int 6]; <--- Her er det vist noe feil, men hva?

 

protected void Page_Load(object sender, EventArgs e)

{

if (Session["antall"] != null)

{

antall = (int ])Session["antall"];

}

}

protected void btnSlaa_Click(object sender, EventArgs e)

{

Random minRandomGenerator = new Random();

int terningverdi = minRandomGenerator.Next(0, 6);

 

labResultat.Text = "Terningen viser " + (terningverdi + 1);

 

antall[terningverdi] += 1;

labResultat.Text+="<br /><br />";

 

for (int teller = 0; teller < antall.Length;teller++)

 

{

labResultat.Text += "Antall " + (teller + 1) + " er: " + antall[teller] + "<br />";

}

}

 

protected void Page_Unload(object sender, EventArgs e)

{

Session["antall"] = antall;

}

}

 

 

Edit: Fant feilen, boka har skrevet feil. Måtte skrive [] og ikke kun ] som det stod i boka.

Endret av Mr.Anki
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...