Array Sortiern - C

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von raid-rush, 13. April 2005 .

Schlagworte:
  1. 13. April 2005
    Hoi

    ich wollte grade mal schnell nen Array Sortiern, lol und ich brings nicht mehr zam das es funzt

    ich hab 2 arrays das eine ist hilfsarray
    in der namensliste stehn daten:

    name, vorname
    name2, vorname2 usw...

    ruf ich sortiern auf ist danach die namensliste leer...
    habs auch schon anders probiert da kahm dann lauder müll raus

    vieleicht ist strcpy auch nicht das beste mit strcat gabs aber auch probleme ?

    PHP:
    void sortieren ( void )
    {
            for(
    int i = 0 ; i < 30 ; i ++)
            {
                 for(
    int a = 0 ; a < 30 ; a ++)
                 {

                    if(
    namensliste [ a ][ 0 ]>= 'A'  &&  namensliste [ a ][ 0 ]<= 'Z' )
                    {
                    if(
    namensliste [ a ][ 0 ]> namensliste [ a + 1 ][ 0 ])
                    {
                    
    strcpy ( hilfsliste [ a ], namensliste [ a ]);
                    
    clear_liste ( a );
                    
    strcpy ( namensliste [ a ], namensliste [ a + 1 ]);
                    
    clear_liste ( a + 1 );
                    
    strcpy ( namensliste [ a + 1 ], hilfsliste [ a ]);

                            for(
    int x = 0 ; x < 30 ; x ++)
                            {
                            
    hilfsliste [ a ][ x ]= '\0' ;   //hilfsvariable loeschen
                            
    }
                    }
                    }
                 }
            }

    getchar ();
    return;
    }
     
  2. 13. April 2005
    Was is'n das für'n Code?!?! Sorry, aber da dreht sich mir der Magen um...

    1. void sortieren(void) - was soll das?
    2. return; - bitte was?!
    3. Wo kriegt die Funktion sortieren die Arrays und die Werte her? Und was steht drin?
    4. Wo ist main?
    5. Wo ist dein Funktionsaufruf?
    6. Wo ist die Zuweisung des Arrays?
     
  3. 13. April 2005
    Code:
    #include <algorithm>
    
    void sortieren()
    {
    for(int a=0;a<30;a++)
    {
    
    if(namensliste[a][0]>='A' && namensliste[a][0]<='Z')
    {
    if(namensliste[a][0]>namensliste[a+1][0])
    {
    swap(namensliste[a][0], namensliste[a+1][0]);
    }
    }
    }
    getchar();
    return;
    }
    Ich weiß jetzt nicht genau, was das werden soll, aber ich würde deinen Code so umsetzen. Bei Schleifendurchläufen im Zusammenhang mit Array's sind feste Werte eigentlich eine Totsünde

    Ist "namensliste" global definiert? Ansonsten muss du der Funktion ja noch einen Zeiger auf das Array übergeben.

    €dit:
    Ich bin immer wieder beeindruckt, wie du es schaffst vollkommen sinnbefreites Zeug hier zu posten Crossfire!
     
  4. 13. April 2005
    jo die sind golbal...

    leider sortiert der mir die liste immernoch net jetz machter den ersten eintrag platt.

    hier mal der ganze code ^^ (ja könnte schöner sein aber das musste schnell gehn)

    PHP:


    #include <stdio.h>
    #include <string.h>
    #include <conio.h>
    #include <wchar.h>
    #include <mbstring.h>

    char namensliste [ 30 ][ 30 ];
    char hilfsliste [ 30 ][ 30 ];

    //---------CLEAR----------------------
    void clear_liste ( int zeile )
    {
            for(
    int c = 0 ; c < 30 ; c ++)
            {
                    
    namensliste [ zeile ][ c ]== '\0' ;
            }
            
    return;
    }



    //---------HINZUFUEGEN-------------------
    int hinzufuegen ( int zeile )
    {

            
    printf ( "\n\nBitte geben sie den Namen in Form (Name, Vorname) ein\n" );
            
    printf ( "*********************************************************\n" );
            
    printf ( "--> " );

            
    gets ( namensliste [ zeile ]);

            for(
    int name = 0 ; name < 30 ; name ++)
            {
                    if(
    namensliste [ zeile ][ name ]== ' '  &&  namensliste [ zeile ][ name - 1 ]== ',' )
                    {
                    
    //Richtige eingabe
                    
    break;
                    }
                    else
                    {
                     
    //Falsche eingabe
                            
    if( namensliste [ zeile ][ name ]== ','  &&  namensliste [ zeile ][ name + 1 ]<= 'Z' )
                            {
                          
    //berichtigung...
                            
    }
                     }

            }
            
    zeile ++;


    getchar ();
    return(
    zeile );
    }

    //-------AUSGABE-------------------------------------
    void ausgabe ( void )
    {
    for(
    int a = 0 ; a < 30 ; a ++)
            {
            
    puts ( namensliste [ a ]);
            }

    getchar ();
    return;
    }
    //-------SORTIEREN------------------------------------


    #include <algorithm.h>

    void sortieren ( void )
    {
    for(
    int a = 0 ; a < 30 ; a ++)
    {

    if(
    namensliste [ a ][ 0 ]>= 'A'  &&  namensliste [ a ][ 0 ]<= 'Z' )
    {
    if(
    namensliste [ a ][ 0 ]> namensliste [ a + 1 ][ 0 ])
    {
    swap ( namensliste [ a ][ 0 ],  namensliste [ a + 1 ][ 0 ]);
    }
    }
    }
    getchar ();
    return;
    }



    //---------------TAUSCHEN----------------
    void tausch ( void )
    {

    for(
    int zeile = 0 ; zeile < 30 ; zeile ++)
    {


            
    int name = 0 ;
            for(
    name = 0 ; name < 30 ; name ++)
            {
            if(
    namensliste [ zeile ][ name ]== ',' )
            break;
            else
            
    hilfsliste [ zeile ][ name ] =  namensliste [ zeile ][ name ];
            }
            
    name = name + 2 ;




            
    int a = 0 ;
                    for(
    a = 0 ; a < 30 ; a ++)
                    {
                    if(
    namensliste [ zeile ][ name ]== '\0'  &&  namensliste [ zeile ][ name - 1 ]>= 'A' )
                            {
                            
    namensliste [ zeile ][ a ]= ',' ;
                            
    namensliste [ zeile ][ a + 1 ]= ' ' ;
                            
    namensliste [ zeile ][ a + 2 ]= '\0' ;
                            
    namensliste [ zeile ][ a + 3 ]= '\0' ;
                            
    namensliste [ zeile ][ a + 4 ]= '\0' ;
                            
    namensliste [ zeile ][ a + 5 ]= '\0' ;
                            
    namensliste [ zeile ][ a + 6 ]= '\0' ;
                            
    namensliste [ zeile ][ a + 7 ]= '\0' ;
                            
    namensliste [ zeile ][ a + 8 ]= '\0' ;
                            
    namensliste [ zeile ][ a + 9 ]= '\0' ;
                            
    namensliste [ zeile ][ a + 10 ]= '\0' ;
                            
    namensliste [ zeile ][ a + 11 ]= '\0' ;
                            
    namensliste [ zeile ][ a + 12 ]= '\0' ;
                            
    namensliste [ zeile ][ a + 13 ]= '\0' ;

                            
    strcat ( namensliste [ zeile ], hilfsliste [ zeile ]);

                                    for(
    int x = 0 ; x < 30 ; x ++)
                                    {
                                    
    hilfsliste [ zeile ][ x ]= '\0' ;   //hilfsvariable loeschen
                                    
    }

                            break;
                            }
                    
    namensliste [ zeile ][ a ]= namensliste [ zeile ][ name ];  //nachname vorkopiern

                            
                    
    name ++;
                    }

    }
    getchar ();
    return;
    }

    //----------------------MAIN---------------------------
    void main ( void )
    {
    int exit_null = 3 ;
    int zeile = 0 ;

            
    //-----------MENU-Auswahl----------------------------
            
    do
            {
            
    clrscr ();
            
    printf ( "Programm zur erstellung von Namenslisten\n" );
            
    printf ( "****************************************\n" );
            
    printf ( "Namen in die Liste hinzufuegen:\t\t(H)\n" );
            
    printf ( "Liste aufsteigend sortieren (A-Z):\t(S)\n" );
            
    printf ( "Ausgabe - Namen vertauschen:\t\t(T)\n" );
            
    printf ( "Zum beenden des Programms:\t\t(X)\n" );
            
    printf ( "****************************************\n\n" );
            if(
    exit_null == 2 )
            
    printf ( "Falsche Auswahl, bitte erneute Eingabe !\n" );
            
    printf ( "--> " );

            
    char c_auswahl ;
            
    scanf ( "%c" ,& c_auswahl );
            
    fflush ( stdin );


            switch(
    c_auswahl )
                    {
                    case 
    'H' :
                            
    zeile  hinzufuegen ( zeile );
                            break;
                    case 
    'S' :
                            
    sortieren ();
                            
    ausgabe ();
                            break;
                    case 
    'T' :
                            
    tausch ();
                            
    ausgabe ();
                            break;
                    case 
    'X' :
                            
    exit_null = 0 ;
                            break;
                    default:
                            
    exit_null = 2 ;
                            break;
                    }

            }
            while(
    exit_null > 1 );
            
    //-----------MENU-Auswahl---------------------------- 


            
    getchar ();
            return;
    }
    //---------------------------------------------------------------------------



     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.