maxtor Geschrieben 10. März 2009 Teilen Geschrieben 10. März 2009 Hallo ich hoffe ich bin mit meinem Theme hier an der richtigen Stelle! wir haben in Programmierung(c++) folgende Aufgabe bekommen die ich einfach nicht hinbekomme!!! Aufgabe: Erstellen sie ein Programm mit dem man die Namen der Personen aus ihrer Klasse erfassen kann (max30).Die Eingabe endet wenn der 30 Eintrag gemacht ist oder als Name "."(Punkt) eingegeben wurde.Nun sollen die Name alphabetisch sortiert werden mit hilfe des Bubblesort-Algorithmus! Mein Lösungsansatz: #include <conio.h> #include <string.h> #include <iostream.h> char name[20],NN[20]; int i,k,l; int main () { k=0,l=0; for(i;30;i++) { cout<<"Name eingeben!"<<endl; cin>>name; {if(name<>".") strcpy(name;NN[k++]);} } for (int i=0 ; i<NN.length ; i++) { for (int k=0 ; k<(NN.length-i-1) ; k++) { if (NN[k] > NN[k+1]) { string hilf = NN[k]; NN[k] = NN[k+1]; NN[k+1] = hilf; } } } } } getch(); return 0; } Bitte helft mir denn ich weis nicht weiter !!!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 10. März 2009 Teilen Geschrieben 10. März 2009 Hier gilt dasselbe wie in dem anderen Thread, wo es offenbar um dieselbe Aufgabe geht. Ein Array von 20 char (wieso überhaupt 20, wenn du bis zu 30 Strings einlesen musst?) fasst 20 einzelne Zeichen, nicht 20 Zeichenketten. #include <conio.h> #include <string.h> #include <iostream.h>Die Header sind allesamt nicht standardkonform. <string.h> würde in C der Header heißen, der die Stringfunktionen von C enthält. In C++ heißt dieser Header <cstring>. Es ist aber Unsinn, sich in C++ mit char-Arrays abzuquälen. Benutz besser die Klasse std::string aus <string>. <iostream.h> gibt's nicht, außer vielleicht bei sehr alten Compilern. <iostream> (ohne .h) heißt der Header für cin & cout. char name[20],NN[20];Siehe oben. Da drin bringst du keine 30 Zeichenketten unter. Außerdem sind globale Variablen stilistisch fragwürdig. int i,k,l;In C++ deklariert man Variablen üblicherweise erst dann, wenn man sie braucht. for(i;30;i++)i bleibt hier uninitialisiert, weil du ausdrücklich nur k und l etwas zugewiesen hast. Welchen Startwert i hat, ist also mehr oder weniger zufällig. Die Schleifenbedingung ist auch Quatsch. 30 ist immer wahr, weil 30 != 0 ist. Du musst das schon in Beziehung zu i setzen. cout<<"Name eingeben!"<<endl;cout und endl (wie fast alle anderen Elemente der C++-Standardbibliothek) finden sich im namespace std. Also musst du entweder std::cout und std::endl schreiben, oder einmal nach den Includedirektiven using namespace std; if(name<>".")Der Ungleich-Operator in C++ ist !=, nicht <>. Mit char-Arrays würde das aber sowieso nicht funktionieren. strcpy(name;NN[k++]);}Der erste Parameter von strcpy ist das Ziel. Diese Funktion solltest du aber sowieso nicht benutzen, die brauchst du nur für char-Arrays. std::strings kannst du einfach zuweisen. for (int i=0 ; i<NN.length ; i++) {Arrays haben keine length-Eigenschaft, das ist nicht Java Der Rest der Sortierung sieht soweit gut aus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.