Entwickler-Ecke
WinForms - Array auslesen...
tomycat - So 15.04.18 16:42
Titel: Array auslesen...
hallo,
ich habe einen Array, der heist
vielezahlen.
Von 0 bis 13 Stellen.
Der Inhalt sieht z.b. so aus:
Array
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| 12 123456789 666 12 666 12 123456789 62626 64848 1234567890123 |
Jetzt möchte ich gerne den Array in einen String ausgeben, nach jeder Zahl kommt ein Schrägstrich r und ein Schrägstrich n. Erst die kleinen Zahlen, dann die großen.
Die Lösung für 3 Stellen und 25 Elemente, aber ich habe 13 Stellen und evtl 1000 Elemente !!!
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| string dieAusgabe = "";
for(int arrayduchlauf = 0; arrayduchlauf < 25;arrayduchlauf++) { for(int b = 0; b < 1000;b++) { if(b == vielezahlen[arrayduchlauf]) { dieAusgabe += vielezahlen[arrayduchlauf].toString(); dieAusgabe += "\r\n"; } } } |
Moderiert von Th69: Code-Tags hinzugefügt
Th69 - So 15.04.18 17:00
Wie soll genau die Ausgabe aussehen? Einfach nur das Array sortieren und daraus dann einen String erzeugen?
Ich verstehe auch noch nicht, was die Anzahl der Stellen ausmachen soll.
tomycat - So 15.04.18 17:03
thx,
die Schleife läuft dann 13 000 000 mal 1000 durch, das wäre meine erste Lösung, das geht doch einfacher.
Th69 - So 15.04.18 17:05
Wofür ist überhaupt die innere Schleife?
Poste mal, wie genau die Ausgabe für das obige Array aussehen soll.
Btw: Ein Array kannst du auch einfacher mittels foreach(var x in array) durchlaufen (ohne festen Grenzen), aber das solltest du ja eigentlich wissen.
jfheins - So 15.04.18 22:26
tomycat hat folgendes geschrieben : |
Jetzt möchte ich gerne den Array in einen String ausgeben, nach jeder Zahl kommt ein Schrägstrich r und ein Schrägstrich n. Erst die kleinen Zahlen, dann die großen.
|
Also ein klarer Fall von "sortiern". Schauib mal dort:
https://www.dotnetperls.com/array-sort sogar mit Beispiel ;-)
tomycat - Mo 16.04.18 20:14
mega thx, du verstehst mich :-)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| static void Main() { int[] values = { 4, 7, 2, 0 }; Array array = values; Array.Sort(array); foreach (int value in array) { Console.Write(value); Console.Write(' '); } Console.WriteLine(); } |
zu dem folge Problem:
Hinter jeder Zahl steht noch ein Text z.b.
Array
1: 2: 3: 4: 5: 6: 7: 8: 9:
| 1234567890123-Testlbalbalba 0000000000000-Alles ist Null 2222222222222-Es kommen nur 2er 1234567890123-Testlbalbalba 0000000000001-eine Eins 0000000222222-jetzt kommt die Zwei 0000000000000-Alles ist Null 1234567890123-Testlbalbalba 2222222222222-Es kommen nur 2er |
Der String soll dann so aussehen:
Array
1: 2: 3: 4: 5: 6: 7: 8: 9:
| 0000000000000-Alles ist Null 0000000000000-Alles ist Null 0000000000001-eine Eins 0000000222222-jetzt kommt die Zwei 1234567890123-Testlbalbalba 1234567890123-Testlbalbalba 1234567890123-Testlbalbalba 2222222222222-Es kommen nur 2er 2222222222222-Es kommen nur 2er |
Meine Arbeit:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| string[] der_inhalt = new string[1000]; int der_inhalt_pos = 0;
for (int i = 0; i < dataGridView8.Rows.Count - 1; i++) { der_inhalt[der_inhalt_pos] = dataGridView8.Rows[i].Cells[5].Value.ToString(); der_inhalt_pos++;
}
Array.Sort(der_inhalt); for(int ab =0;ab < der_inhalt_pos;ab++ ) {
savetext += der_inhalt[ab]; savetext += "\r\n"; } |
Moderiert von Th69: Vollzitat entfernt.
Moderiert von Th69: Code-Tags hinzugefügt
Ralf Jansen - Mo 16.04.18 21:05
Du weist doch wie groß dein Array sein muss wieso initialisierst du das Array mit 1000 Stellen?
Und dann würde ich dir empfehlen deinen Code einfach mal zu debuggen. Das Problem sollte dich fast anspringen so offensichtlich ist das.
tomycat - Mo 16.04.18 21:08
sorry ich sehe nur Wald :-(
Bitte gebe mir einen Tip
Ralf Jansen - Mo 16.04.18 21:16
Stell dir vor in deinem Grid sind 50 Zeilen.
Du schreibst nun diese 50 Zeilen in das Array das 1000 Stellen hat.
Jetzt sortierst du diese 1000 strings (Ein leerer String ist kleiner als irgendein anderer string).
Du hast jetzt also 950 Leerstrings und hinten dran 50 aus dem Grid (passend sortiert).
Jetzt versuchst du die ersten 50 dieser 1000 strings in den savetext string zu schreiben und diese 50 sind natürlich alle leer.
Das Problem wäre dir sofort aufgefallen wenn du debuggt hättest. Beim debuggen einfach mal per Debugger in der_inhalt reinschauen am besten nach dem Sortieren und es hätte dir auffallen müssen. Ich kann nur jedem Anfänger raten "lernt debuggen"! bevor ihr irgendwas weiteres versucht. Ansonsten programmiert ihr nicht ihr versucht nur halbwegs gebildetes raten.
Einfache Lösung ist also bei diesem Code dem Array die richtige Länge zu geben. Nicht 1000 sondern die Länge die du ja bereits weist.
Delete - Di 17.04.18 02:49
- Nachträglich durch die Entwickler-Ecke gelöscht -
tomycat - Di 17.04.18 06:12
ja und nein,
ich dachte erst, ich schneide die ersten 13 Stellen ab und sortiere Sie nach Zahlen. Wenn ich weis, dass z.B. Array[1] -> 0000000000000 als erste kommt, nehme ich den kompetten String mit und stelle ihn als erste Stelle da. ---> 0000000000000-Alles ist Null
Aber so wie ich es jetzt verstanden habe kann ich auch den kompletten string nehmen und ihn sortieren lassen.
Vor Prinzip her möchte ich einen Array füllen mit 13 Stellen Zahlen + Text und den sortiert ausgeben in einen String.
Moderiert von Th69: Vollzitat entfernt.
Delete - Di 17.04.18 06:22
- Nachträglich durch die Entwickler-Ecke gelöscht -
tomycat - Mi 18.04.18 23:28
kann man so sagen,
wie gesagt, ich hatte die Idee, die 13 Stellen abschneiden um zu wissen, ob welche Zahlenreihe/Text zuerst kommt. Das hat sich als Käse herausgestellt.
Du kannst es dir auch so vorstellen:
In Excel steht...
A1 Zahl/Text drin, sowie A2......A1000. Dann makiert man alles und läst es sorieren.
Mit dem Unterschied, Array[0] bis Array[50] oder bis vielleicht [2000]. Es muss nicht umbedingt auf oder absteigend sein, es soll einfach sortierter aussehen.
Delete - Do 19.04.18 03:31
- Nachträglich durch die Entwickler-Ecke gelöscht -
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!