#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;} + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#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! + Multi-Zitat Zitieren
#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;} //--------------------------------------------------------------------------- + Multi-Zitat Zitieren