OFDb

C-Problem. Haben wir hier auch C-Programmierer?

Begonnen von PzychoOlli, 6 Januar 2004, 15:38:09

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

PzychoOlli

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?

wolfseye

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

PzychoOlli

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!

thsich

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

PzychoOlli

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:

thsich

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:

Hallenbeck

+++schieb+++

Hallo!
Ich brauche einen freeware C-Compiler der unter Win2000 läuft!
Hat jemand einen Link?


Hallenbeck

psYchO dAd

Ich hab immer mit DefCpp programmiert, das gabs bei uns auf der Uni, dürfte Freeware sein.

KT

22 Mai 2006, 22:37:05 #8 Letzte Bearbeitung: 22 Mai 2006, 22:38:42 von KT
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.
There is no knowledge that is not power.

dÜnni

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/

Hallenbeck

Hi!
Vielen Dank euch allen! Ist auf jeden Fall etwas dabei!  :D
Werde heute Nachmittag mal loslegen...


Hallenbeck

TinyPortal 2.0.0 © 2005-2020