Autor Beitrag
tomycat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 265
Erhaltene Danke: 1



BeitragVerfasst: So 15.04.18 16:42 
hallo,
ich habe einen Array, der heist vielezahlen.
Von 0 bis 13 Stellen.

Der Inhalt sieht z.b. so aus:
ausblenden 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 !!!
ausblenden 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 user profile iconTh69: Code-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: tomycat
tomycat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 265
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: tomycat
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: So 15.04.18 22:26 
user profile icontomycat hat folgendes geschrieben Zum zitierten Posting springen:
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: www.dotnetperls.com/array-sort sogar mit Beispiel ;-)

Für diesen Beitrag haben gedankt: tomycat
tomycat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 265
Erhaltene Danke: 1



BeitragVerfasst: Mo 16.04.18 20:14 
mega thx, du verstehst mich :-)

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
static void Main()
{
        // Sort Array reference.
        int[] values = { 4720 };
        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.
ausblenden 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:
ausblenden 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:
ausblenden 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();                   // 13 Stellen + Text
        
                der_inhalt_pos++;

             }


            ///// Sie baue ich jetzt den   Array.Sort(array); ein? heul heul heul

            Array.Sort(der_inhalt);  // <<---- Warum geht das nicht ?

            for(int ab  =0;ab < der_inhalt_pos;ab++ )
            {

                savetext += der_inhalt[ab];
                savetext += "\r\n";
            }


Moderiert von user profile iconTh69: Vollzitat entfernt.
Moderiert von user profile iconTh69: Code-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: tomycat
tomycat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 265
Erhaltene Danke: 1



BeitragVerfasst: Mo 16.04.18 21:08 
sorry ich sehe nur Wald :-(
Bitte gebe mir einen Tip
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: tomycat
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 17.04.18 02:49 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: tomycat
tomycat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 265
Erhaltene Danke: 1



BeitragVerfasst: 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 user profile iconTh69: Vollzitat entfernt.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 17.04.18 06:22 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: tomycat
tomycat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 265
Erhaltene Danke: 1



BeitragVerfasst: 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.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 19.04.18 03:31 
- Nachträglich durch die Entwickler-Ecke gelöscht -