Gå til innhold

Anbefalte innlegg

Skrevet

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);

}

 

 

}

Videoannonse
Annonse
Skrevet (endret)

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
Skrevet (endret)

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
Skrevet

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?)

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...