Folgendes Problem:
Ich soll ein Programm schreiben, welches in einem dynamischen Feld eingegebene Namen korrigiert (Groß/Kleinschreibung) und sie dann sortiert. Die Korrekturfunktion funktioniert, dass Sortieren macht jedoch Ärger. Ich vermute den Fehler in der strcpy()-Routine. Hier das böse Unterprogramm:
void SortNamen ( char * NamPtrArr[], int NamAnz ) {
int SortCount;
char SwapName[30];
int Complete;
do {
Complete = TRUE;
for ( SortCount=0; SortCount < NamAnz-1; SortCount++)
if ( strcmp ( NamPtrArr[SortCount] , NamPtrArr[SortCount+1] ) > 0) {
strcpy ( SwapName , NamPtrArr[SortCount] ); // Namen tauschen
strcpy ( NamPtrArr[SortCount] , NamPtrArr[SortCount+1] );
strcpy ( NamPtrArr[SortCount+1] , SwapName );
Complete = FALSE;
} // if Ende und SortCount Ende
} while( ! Complete);
} // SortNamen Ende
Die Namen gehen folgendermassen rein:
1. Hans
2. Franz
3. Otto
4. Lisa-Marie
5. Lisa Marie
und kommen so wieder raus:
1. HansFranz
2. Hans
3. Lisa Lisa-Lisa Marie
4. Lisa-Lisa Marie
5. arie
Der Algorithmus müsste eigentlich funktionieren. Nur aus irgendeinem Grund scheint strcpy das \0 nicht zu checken und auch sonst verrücktzuspielen...
Achja, Compiler ist ein uraltes Win311 Teil von Borland, Version 3.1 Turbo C++
Jemand eine Idee?
Zitat von: PzychoOlliFolgendes Problem:
Ich soll ein Programm schreiben, welches in einem dynamischen Feld eingegebene Namen korrigiert (Groß/Kleinschreibung) und sie dann sortiert. Die Korrekturfunktion funktioniert, dass Sortieren macht jedoch Ärger. Ich vermute den Fehler in der strcpy()-Routine. Hier das böse Unterprogramm:
void SortNamen ( char * NamPtrArr[], int NamAnz ) {
int SortCount;
char SwapName[30];
int Complete;
do {
Complete = TRUE;
for ( SortCount=0; SortCount < NamAnz-1; SortCount++){
if ( strcmp ( NamPtrArr[SortCount] , NamPtrArr[SortCount+1] ) > 0) {
strcpy ( SwapName , NamPtrArr[SortCount] ); // Namen tauschen
strcpy ( NamPtrArr[SortCount] , NamPtrArr[SortCount+1] );
strcpy ( NamPtrArr[SortCount+1] , SwapName );
Complete = FALSE;
} // if Ende und SortCount Ende
} //Ende der for Schleife versuchs mal so
} while( ! Complete);
} // SortNamen Ende
Die Namen gehen folgendermassen rein:
1. Hans
2. Franz
3. Otto
4. Lisa-Marie
5. Lisa Marie
und kommen so wieder raus:
1. HansFranz
2. Hans
3. Lisa Lisa-Lisa Marie
4. Lisa-Lisa Marie
5. arie
Der Algorithmus müsste eigentlich funktionieren. Nur aus irgendeinem Grund scheint strcpy das \0 nicht zu checken und auch sonst verrücktzuspielen...
Achja, Compiler ist ein uraltes Win311 Teil von Borland, Version 3.1 Turbo C++
Jemand eine Idee?
Kleiner Tip: Du solltest dir einen neuen Compiler besorgen.
MfG Wolfseye
Nee, nee, da fehlt keine Klammer....und das mit dem Compiler plane ich auch schon seit längerem. Ausserdem hat sich das Problem gerade erledigt...wir dürfen nämlich nur die Pointer switchen, jedoch keine Zeichen kopieren...also noch mal von vorne...
Trotzdem danke für den Tip!
Auch wenns jetzt zu spät kommt...
Ich hab mir dein Code nicht richtig durchgelesen, nächstes mal solltest du ihn aber vernünftig einrücken...
Und dieses Forum kann ich dir empfehlen...
http://www.c-plusplus.de/forum
ist ziemlich gut. Ich hoffe das ich jetzt nicht gegen irgendwelche regeln verstoßen habe falls doch einfach löschen... :D
Der ist vernünftig eingerückt...das Forum hat ihn zurückgesetzt...
Klappt jetzt aber. :wall: Wenn ich Vollidiot mir die Aufgabenstellung gleich richtig durchgelesen hätte, hätte ich mir gute zwei Stunden gespart.
Die vermeintlich komplizierte Lösung lief nämlich sofort... :wall:
Zitat von: PzychoOlliDer ist vernünftig eingerückt...das Forum hat ihn
gut, dann nehme ich das zurück.... :mrgreen:
Ich glaube das Programm oder so ähnlich muss jeder mal in c++ schreiben... :mrgreen:
+++schieb+++
Hallo!
Ich brauche einen freeware C-Compiler der unter Win2000 läuft!
Hat jemand einen Link?
Hallenbeck
Ich hab immer mit DefCpp programmiert, das gabs bei uns auf der Uni, dürfte Freeware sein.
Zitat von: Hallenbeck am 22 Mai 2006, 22:19:48
+++schieb+++
Hallo!
Ich brauche einen freeware C-Compiler der unter Win2000 läuft!
Hat jemand einen Link?
Hallenbeck
GCC schon probiert, nehme ich an?
Oder meinst du gleich eine Entwicklungsumgebung? http://www.bloodshed.net soll gar nicht so schlecht sein. Nutzt aber auch GCC, falls du mit dem Probleme hattest, kannst die von Bloodshed dann wahrscheinlich vergessen.
UPD:
Dürfte das Selbe sein, was Psycho DaD meint.
Microsoft hat jetzt auch C++ und C#-Compiler als Express Edition gratis rausgegeben.
C# hab ich schon getestet - einwandfrei das Teil, das einzige was genervt hat war, das man für XP SP2 braucht und für Win2k musste ich auch irgendwas updaten (ist mir gerade entfallen) sonst installiert sich das Teil gar nicht erst.
Ansonsten sind das aber vollständige Entwicklungsumgebungen mit IntelliSense, Debugger, Beispielprogrammen und allem schnick schnack.
Gibts hier:
http://msdn.microsoft.com/vstudio/express/support/install/
Hi!
Vielen Dank euch allen! Ist auf jeden Fall etwas dabei! :D
Werde heute Nachmittag mal loslegen...
Hallenbeck