Dreifachtausch bei mehrdiminsionalem Array



  • Hallo zusammen,

    bin mir sicher das Ihr mir weiterhelfen könnt.
    Habe folgendes Programm unter Borland 5.02 C++ vor:

    Programm das Zufallszahlen in einen mehrdiminsionalen Array schreibt und diese sortiert (mit dem dreifachtausch) und mir die größte und kleinste Zahl ausgibt.

    Habe schon a bissel gemacht, nur am dreifachtausch scheitert es, kann mir einer sagen wieso und warum und was ich verbessern sollte.

    Hier der Code:

    #include <conio.h>
    #include <iostream.h>
    #include <stdlib.h>
    main()
    {
    /*
    ---------------
    | DEKLARATION |
    ---------------
    */
    int buch[5][7];
    int z,k;
    randomize();
    
    /*
    -------------------------------------------------
    | Zufallswertezuweisung Mehrdiminsionales Array |
    -------------------------------------------------
    */
    for (int i=0;i<5;i++)
    {                         cout<<"innere Schleife ";
     for (int j=0;j<7;j++)
     {
     buch[i][j]=random(900)+100;
     cout<<buch[i][j]<<"	";
     } cout<<"	"<<endl;
    }
    
    /*
    --------------------------------------------------------------
    | Dreifach Tausch, Sortierung nach größtem u. kleinsten Wert |
    --------------------------------------------------------------
    */
    
    for (int i=0;i<5;i++)
    {
     for (int j=i+1;j<7;j++)
     {
      if (buch[i][j]<buch[i][j])
      {
      z=buch[i][j];
      buch[i][j]=buch[i][j];
      buch[i][j]=z;
      }
     }
    }
    cout<<" Der groeßte Wert ist: "<<buch[0][0]<<endl<<"Der kleinste Wert ist: "<<buch[5][7];
    getch();
    }
    

    Danke

    DrRegister



  • z=buch[i][j];
      buch[i][j]=buch[i][j];
      buch[i][j]=z;
    

    Hast du dir mal deine Zeilen angesehen?

    z=buch[i][j]; -> fein
    buch[i][j]=buch[i][j]; -> ??? ist wie x=x bringt irgendwie nix
    buch[i][j]=z -> ist auch wie x=x bloß mit einem Umweg über z

    Üblicherweise tauscht man doch so:

    int eins,zwei,tmp;
    eins=1;
    zwei=2;

    tmp=eins; -> wir "retten" eins. eins kann nun einen neuen Inhalt bekommen
    eins=zwei; -> eins ist jetzt zwei
    zwei=tmp; -> zwei kriegt den geretteten Inhalt

    Was du jetzt konkret tauschen musst weiss ich nicht, da ich die Inhalte in deinem Array nicht kenne.

    Im übrigen gibt es schon Sortierroutinen in C/C++.....



  • Wo bei einem 2-dimensionalen Array ein 2-fach-Tausch durchgeführt werden soll ist mir auch unklar und auch wie man gleichzeitig nach größtem u. kleinsten Wert sortieren soll auch

    entweder "aufwärts" oder "abwärts"



  • Grrrrr soll heissen

    ein 3-fach-Tausch durchgeführt werden soll ist



  • danke für die antwort(en) 🙂

    hmm... würde das nur gerne mit einem dreifachtausch hinbekommen, hast recht da habe ich in der Zeile beim dreifachtausch wohl geschlafen 🙂



  • Halte 3-Fach-Tauch immer noch für falsch

    Sortiere in einem ersten Rundgang nach Bedingung 1 und dann das sortierte nach Bedingung 2

    Nochmal; eine Sortierung nach Größtem u. Kleinsten Wert ist keine 2-fache Sortierung, sondern das eine folgt zwangsläufig aus dem anderen. Hängt nur davon ab, was zuerst kommen soll (stehen die Größten oben oder die Kleinsten)-> beides zuerst geht nicht.Aber es ist eine 1-fache Sortierung



  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten