Mr.Anki Skrevet 27. januar 2010 Del Skrevet 27. januar 2010 (endret) 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 27. januar 2010 av Mr.Anki Lenke til kommentar
GeirGrusom Skrevet 28. januar 2010 Del Skrevet 28. januar 2010 System.Globalization.GregorianCalendar? Lenke til kommentar
HDSoftware Skrevet 28. januar 2010 Del Skrevet 28. januar 2010 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
Mr.Anki Skrevet 28. januar 2010 Forfatter Del Skrevet 28. januar 2010 Skal løse oppgaven ved hjelp av Array ja. Lenke til kommentar
HDSoftware Skrevet 28. januar 2010 Del Skrevet 28. januar 2010 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
GeirGrusom Skrevet 28. januar 2010 Del Skrevet 28. januar 2010 Vel, hvor mange dager det er i februar varierer hvert fjerde år, og annenhvert hundrede år, og da er det jo greit å bruke de innebyggede klassene, men hvis presisjon ikke er nødvendig så... Lenke til kommentar
Mr.Anki Skrevet 28. januar 2010 Forfatter Del Skrevet 28. januar 2010 Som jeg skrev i førstepost, skal jeg se bort ifra skuddår. Lenke til kommentar
HDSoftware Skrevet 28. januar 2010 Del Skrevet 28. januar 2010 (endret) ;-) 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 28. januar 2010 av HDSoftware Lenke til kommentar
Mr.Anki Skrevet 28. januar 2010 Forfatter Del Skrevet 28. januar 2010 Er en skoleoppgave hvor jeg lære arrays ja, så skal ikke bruke .NET biblioteket. Lenke til kommentar
Mr.Anki Skrevet 28. januar 2010 Forfatter Del Skrevet 28. januar 2010 (endret) 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 28. januar 2010 av Mr.Anki Lenke til kommentar
HDSoftware Skrevet 28. januar 2010 Del Skrevet 28. januar 2010 Det er jo bare å CASTe det int m = 5; // Juni MessageBox.Show(((mnder)m).ToString()) Lenke til kommentar
Mr.Anki Skrevet 28. januar 2010 Forfatter Del Skrevet 28. januar 2010 Hehe, bare å bare, når en aldri har gjort/hørt om det Må jeg da lage en ny int for hver mnd? Lenke til kommentar
HDSoftware Skrevet 28. januar 2010 Del Skrevet 28. januar 2010 (endret) 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 28. januar 2010 av HDSoftware Lenke til kommentar
Wattengård Skrevet 28. januar 2010 Del Skrevet 28. januar 2010 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
Mr.Anki Skrevet 28. januar 2010 Forfatter Del Skrevet 28. januar 2010 Hva er den enum tingen? Lenke til kommentar
HDSoftware Skrevet 28. januar 2010 Del Skrevet 28. januar 2010 (endret) 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 28. januar 2010 av HDSoftware Lenke til kommentar
HDSoftware Skrevet 28. januar 2010 Del Skrevet 28. januar 2010 (endret) 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 28. januar 2010 av HDSoftware Lenke til kommentar
GeirGrusom Skrevet 28. januar 2010 Del Skrevet 28. januar 2010 Enum har også en funksjon som er litt hendig innimellom som heter Enum.Parse ^^ Du kan også caste enum til integer og omvendt dersom det er nødvendig. Lenke til kommentar
HDSoftware Skrevet 28. januar 2010 Del Skrevet 28. januar 2010 Lurer på om ikke det var PARSE som skulle vært benyttet i eksemplet mitt for å få frem "tekstversjonen" av enumet - i stedet for å bruke ToString() Lenke til kommentar
Mr.Anki Skrevet 28. januar 2010 Forfatter Del Skrevet 28. januar 2010 (endret) 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 28. januar 2010 av Mr.Anki Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå