Gå til innhold

Anbefalte innlegg

Hei!

 

Jeg sitter å prøve å lære meg C#, men det er litt mer komplisert enn først antatt.

Det jeg lurte på var om noen av dere kunne hjelpe meg å tyde den koden her. Jeg forstår enkelte deler av den, men langt i fra alt.

 

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

{

protected void Page_Load(object sender, EventArgs e)

{

 

}

protected void btnGenerer_Click(object sender, EventArgs e)

{

int minOrd = 0;

int maksOrd = 0;

int minSetning = 0;

int maksSetning = 0;

int antallSetninger = 0;

try

{

minOrd = Convert.ToInt32(txtMinOrd.Text);

maksOrd = Convert.ToInt32(txtMaksOrd.Text);

minSetning = Convert.ToInt32(txtMinSetning.Text);

maksSetning = Convert.ToInt32(txtMaksSetning.Text);

antallSetninger = Convert.ToInt32(txtAntallSetninger.Text);

}

catch

{

this.Title = "Feil";

}

 

for (int i = 0; i < antallSetninger; i++)

{

labUtskrift.Text += GenererSetning(minOrd, maksOrd, minSetning, maksSetning);

}

}

 

private string StorForbokstav(string s)

{

System.Text.StringBuilder tekst = new System.Text.StringBuilder(s);

tekst[0] = Char.ToUpper(tekst[0]);

return tekst.ToString();

 

}

 

private char TrekkTegn()

{

 

System.Threading.Thread.Sleep(100);

char[] tegnArray = { 'e', 'i', 'o', 'p', 'f', 'a','s','t','l','d'};

 

Random r = new Random();

int tilfeldigIndex = r.Next(0, tegnArray.Length);

 

return tegnArray[tilfeldigIndex];

}

 

private String GenererOrd(int min, int maks)

{

Random r = new Random();

int lengde = r.Next(min, maks);

String ord = "";

for (int i = 0; i < lengde; i++)

{

ord += Convert.ToString(TrekkTegn());

}

return ord;

}

 

private String GenererSetning(int minOrd, int maksOrd, int minLengde, int maksLengde)

{

 

Random r = new Random();

int antallOrd = r.Next(minOrd, maksOrd);

String setning = "";

for (int i = 0; i < antallOrd; i++)

{

setning += GenererOrd(minLengde, maksLengde)+(i==antallOrd-1?". ":" ");

}

return StorForbokstav(setning);

}

 

 

}

Lenke til kommentar
Videoannonse
Annonse

F.eks:

 

Forklare overordnet hva programmet gjør: Eks. Programmet skriver ut setninger med vilkårlig lengde på setningen og ordene basert på input fra brukere

Forklare hva deler/funksjon gjør. Funksjonen laget et vilkårlig ord med lengde mellom input parameterne min og maks.

Forklare detaljert rundt koden. For løkken kjører x antall ganger og kaller funksjonen TrekkTegn for hver gang.

Endret av Hårek
Lenke til kommentar

protected void btnGenerer_Click(object sender, EventArgs e)
{
// initialiserer alle variablene 
int minOrd = 0;
int maksOrd = 0;
int minSetning = 0;
int maksSetning = 0;
int antallSetninger = 0;

// Prøver å sette verdi på variablene dine utifra Input feltene du har i formen din (txtMinOrd, txtMaksOrd osv.)
try
{
minOrd = Convert.ToInt32(txtMinOrd.Text);
maksOrd = Convert.ToInt32(txtMaksOrd.Text);
minSetning = Convert.ToInt32(txtMinSetning.Text);
maksSetning = Convert.ToInt32(txtMaksSetning.Text);
antallSetninger = Convert.ToInt32(txtAntallSetninger.Text);
}

// om den ikke klarer å sette variablene returnerer den "Feil" i title
catch
{
this.Title = "Feil";
}

// for løkken kjører gjennom antall setninger som bruker har bestemt og printer disse til textfelt/boks. Kaller GenererSetning()
for (int i = 0; i < antallSetninger; i++)
{
labUtskrift.Text += GenererSetning(minOrd, maksOrd, minSetning, maksSetning);
}
}

 

GenererSetning()

private String GenererSetning(int minOrd, int maksOrd, int minLengde, int maksLengde)
{
//kaller random funksjon i C#
Random r = new Random();

//genererer et random nummer mellom minOrd og maksOrd verdiene spesifisert
int antallOrd = r.Next(minOrd, maksOrd);

// initialiserer variablen setning
String setning = "";

//kaller GenererOrd() såpass mange ganger som spesifisert i antallOrd. Legger denne til i variablen setning.
for (int i = 0; i < antallOrd; i++)
{

// (i==antallOrd-1?". ":" ") her betyr at om antall ord - 1 (dvs at løkken har kommet til slutten av setningen) er sann, så settes det et punktum, hvis ikke lages det et mellomrom mellom hvert av ordene.

setning += GenererOrd(minLengde, maksLengde)+(i==antallOrd-1?". ":" "); 
}

// returnerer setningen etter at den har blitt sendt gjennom StorForbokstav()
return StorForbokstav(setning);
}

 

GenererOrd()

private String GenererOrd(int min, int maks)
{
//Kaller random funksjonen i C#
Random r = new Random();

//setter en random lengde ved hjelp av Random()
int lengde = r.Next(min, maks);

//initialiserer ord
String ord = "";

//setter sammen ord ved å kalle TrekkTegn som gir en random bokstav
for (int i = 0; i < lengde; i++)
{
ord += Convert.ToString(TrekkTegn());
}

//returnerer det ferdige ordet
return ord;
}

 

StorForbokstav()

private string StorForbokstav(string s)
{
//initialiserer tekst som et StringBuilder objekt.
System.Text.StringBuilder tekst = new System.Text.StringBuilder(s);

//setter første bokstaven i tekst arrayet (starter alltid på 0) til stor bokstav
tekst[0] = Char.ToUpper(tekst[0]);

//gjør om arrayet til en string og returnerer
return tekst.ToString();

}

 

TrekkTegn()

private char TrekkTegn()
{

//Ber systemet vente 100ms hver gang funksjonen kalles
System.Threading.Thread.Sleep(100);

//array som inneholder et utvalg bokstaver
char[] tegnArray = { 'e', 'i', 'o', 'p', 'f', 'a','s','t','l','d'};

//genererer en ny Random() funksjon
Random r = new Random();

//henter ut en random bokstav fra arrayet over
int tilfeldigIndex = r.Next(0, tegnArray.Length);

//returnerer bokstav
return tegnArray[tilfeldigIndex];
}

 

Vet ikke om det var helt dette du var ute etter, men der har du kommentarer til det meste som skjer i programmet ditt.

Om det er noe mer spesifikt du lurer på er det bare å spørre.

Endret av haqbar
Lenke til kommentar

Jeg stusser alltid ganske mye over at det ser ut som ganske mange får skoleoppgaver i ASP.NET... Jeg ville sagt at ASP.NET fører til at en må fokusere på masse ting som ikke er så veldig viktig å lære seg i starten.

 

Utover det: Programmet genererer "setninger" utifra å trekke tilfeldige tegn fra et array, og setter dem sammen til "ord" for deretter å sette ordene sammen til setninger ved å legge til mellomrom dersom det ikke er siste ordet i setningen, og ellers vil den legge til et punktum på slutten, og erstatte første bokstav med stor bokstav.

 

Forøvrig ikke en ideell måte å bruke Random på i dette tilfellet. har kanskje ikke så mye å si på web-applikasjoner, men mange av disse Randomene kan få samme seed, ettersom klokken har en oppløsning på 15 ms (kanskje derfor Thread.Sleep(100) er der?)

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...