bjartesi Skrevet 16. februar 2009 Del Skrevet 16. februar 2009 Jeg skal lage et program som ramser opp 16 000 tilfeldige tall fra 0 til 500 og har i og for sei fått dette til ved å bruke den vanlig tekstboksen i VS 2008. Problemet med den er at det ikke er plass til alle tallene i denne. Jeg prøver med richTextBox men får ikke til å skrive til denne ved å bruke richTextBox1.Text(tall). Noen som har et forslag til hvordan jeg kan gjøre det?? Her er koden med vanlig textbox: Random r = new Random(); for(int i = 0; i < 15999; i++) { int tall = r.Next(1, 500); textBox1.Text += " " + Convert.ToString(tall); } Lenke til kommentar
The Jackal Skrevet 16. februar 2009 Del Skrevet 16. februar 2009 Har ikke svar på spørsmålet ditt...men den koden lister bare opp 15999 tall Lenke til kommentar
bjartesi Skrevet 16. februar 2009 Forfatter Del Skrevet 16. februar 2009 Har ikke svar på spørsmålet ditt...men den koden lister bare opp 15999 tall Siden for-løkken starter på null og går opp til 15 999 så generer den 15 999 tall. Du må huske å ta med null også selv om dette har liten betydning for programmet i seg selv. Lenke til kommentar
GeirGrusom Skrevet 16. februar 2009 Del Skrevet 16. februar 2009 Hmmm det burde jo funke likt med richtextbox også. Liten sidenotis så burde en ikke bruke Convert klassen i C#. Bruk som regel objektets .ToString funksjon for å konvertere dem til string. Jeg har bare brukt Convert klassen én gang i et prosjekt, og det var for å konvertere en Delegate til en generisk type. Bruk vanlig casting fremfor convert fordi det gjør at kompilatoren kan utføre optimaliseringer på koden din. Random r = new Random(); StringBuilder builder = new StringBuilder(); for(int i = 0; i < 16000; i++) { int tall = r.Next(1, 500); builder.Append(tall.ToString() + " "); } richTextBox1.Text = builder.ToString(); Lenke til kommentar
bjartesi Skrevet 16. februar 2009 Forfatter Del Skrevet 16. februar 2009 Hmmm det burde jo funke likt med richtextbox også. Liten sidenotis så burde en ikke bruke Convert klassen i C#. Bruk som regel objektets .ToString funksjon for å konvertere dem til string. Jeg har bare brukt Convert klassen én gang i et prosjekt, og det var for å konvertere en Delegate til en generisk type. Bruk vanlig casting fremfor convert fordi det gjør at kompilatoren kan utføre optimaliseringer på koden din. Random r = new Random(); StringBuilder builder = new StringBuilder(); for(int i = 0; i < 16000; i++) { int tall = r.Next(1, 500); builder.Append(tall.ToString() + " "); } richTextBox1.Text = builder.ToString(); Av en eller annen grunn får jeg ikkje opp valget Text når jeg skriver richTextBox1.. Er det et bibliotek som må legges til som ikkje jeg har lagt til? Jeg får denne meldingen: Error 1 'System.Windows.Controls.RichTextBox' does not contain a definition for 'Text' and no extension method 'Text' accepting a first argument of type 'System.Windows.Controls.RichTextBox' could be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\Bjarte\Mine dokumenter\Høgskolen i Bergen\Windows Programmering\Øvinger\Sortering\Sortering\Window1.xaml.cs 53 26 Sortering Lenke til kommentar
bjartesi Skrevet 16. februar 2009 Forfatter Del Skrevet 16. februar 2009 Av en eller annen grun funker det nå etter å ha opprettet et Windows Forms Application prosjekt i stede for WPF Application prosjekt. Lenke til kommentar
The Jackal Skrevet 17. februar 2009 Del Skrevet 17. februar 2009 Har ikke svar på spørsmålet ditt...men den koden lister bare opp 15999 tall Siden for-løkken starter på null og går opp til 15 999 så generer den 15 999 tall. Du må huske å ta med null også selv om dette har liten betydning for programmet i seg selv. men den går bare til < 15999 og ikke <= 15999 Lenke til kommentar
bjartesi Skrevet 17. februar 2009 Forfatter Del Skrevet 17. februar 2009 Nå er programmet mer eller mindre ferdig, eneste problemet er at dersom jeg bruker 16 000 tall låser programet seg helt. Dersom jeg f.eks bruker 1 600 tall funker det helt fint. Kandet være noe med kapasiteten til richTextBox eller int?? Her er koden: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Sortering2 { public partial class Form1 : Form { //Deklarasjon av variabler: int[] tabell = new int[16000]; int size = 16000; int tall, min, maks, sum, snitt; double median = 0; DateTime start; DateTime stopp; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //Genererer tillfeldige tall i tabellen: Random r = new Random(); for (int i = 0; i < size; i++) { tall = r.Next(0, 500); tabell = tall; } //Skriver ut innholdet i tabellen for (int i = 0; i < size; i++) { richTextBox1.Text += tabell + " "; } MessageBox.Show("Klar til å sortere!"); } private void button2_Click(object sender, EventArgs e) { //Starter klokke: start = DateTime.Now; //Sorterer innholdet i tabellen: Array.Sort(tabell); for (int i = 0; i < size; i++) { richTextBox2.Text += tabell + " "; } //Finner antall tegn: textBox1.Text = Convert.ToString(size); //Finner minimum: min = tabell[0]; for (int i = 1; i < size; i++) { if (tabell < min) min = tabell; } textBox2.Text = Convert.ToString(min); //Finner maksimum: maks = tabell[0]; for (int i = 1; i < size; i++) { if (tabell > maks) maks = tabell; } textBox3.Text = Convert.ToString(maks); //Finner summen: for (int i = 0; i < size; i++) { sum += tabell; } textBox4.Text = Convert.ToString(sum); //Finner snitt: snitt = sum / size; textBox5.Text = Convert.ToString(snitt); //Finner medianen: int med1 = tabell[799]; int med2 = tabell[800]; median = (med1 + med2) / 2; textBox6.Text = Convert.ToString(median); //Stopper klokke: stopp = DateTime.Now; //Finner tid: TimeSpan tid = stopp - start; textBox7.Text += Convert.ToString(tid.TotalSeconds + " sekunder "); } private void button3_Click(object sender, EventArgs e) { this.Close(); } private void richTextBox1_TextChanged(object sender, EventArgs e) { } private void richTextBox2_TextChanged(object sender, EventArgs e) { } private void richTextBox3_TextChanged(object sender, EventArgs e) { } private void textBox1_TextChanged(object sender, EventArgs e) { } private void textBox2_TextChanged(object sender, EventArgs e) { } private void textBox3_TextChanged(object sender, EventArgs e) { } private void textBox4_TextChanged(object sender, EventArgs e) { } private void textBox5_TextChanged(object sender, EventArgs e) { } private void textBox6_TextChanged(object sender, EventArgs e) { } private void textBox7_TextChanged(object sender, EventArgs e) { } } } Lenke til kommentar
GeirGrusom Skrevet 17. februar 2009 Del Skrevet 17. februar 2009 Du kan bruke Max og Min funksjonene for å finne største og minste verdi i et array, men hvis arrayet er sortert er dette uansett [0] og [tabell.Length-1] Du trenger heller ikke lagre en egen size variabel, bruk tabell.Length istedet. for å finne summen kan du bruke tabell,Sum(). Men jeg ser ingen grunn til at programmet skal fryse... richTextBox kan ha 4 milliarder tegn etter det jeg vet, og det er ingen grense på størrelsen til arrays, ihvertfall langt større en 128 kB :S int kan ha en maks- minverdi på +-2 mrd. Så det er nok noe annet som jeg ikke ser. Lenke til kommentar
bjartesi Skrevet 17. februar 2009 Forfatter Del Skrevet 17. februar 2009 Du kan bruke Max og Min funksjonene for å finne største og minste verdi i et array, men hvis arrayet er sortert er dette uansett [0] og [tabell.Length-1]Du trenger heller ikke lagre en egen size variabel, bruk tabell.Length istedet. for å finne summen kan du bruke tabell,Sum(). Men jeg ser ingen grunn til at programmet skal fryse... richTextBox kan ha 4 milliarder tegn etter det jeg vet, og det er ingen grense på størrelsen til arrays, ihvertfall langt større en 128 kB :S int kan ha en maks- minverdi på +-2 mrd. Så det er nok noe annet som jeg ikke ser. Takk for tipsene...det gjorde jo programmet en del lettere ja. Mange geniale funksjoner som kan brukes i C#. Når det gjelder size bruker jeg den for å gjøre det lettere å endre på størrelesen til tabellen. 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å