Zum Inhalt springen

Sortierung von Name


maxtor

Empfohlene Beiträge

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 !!!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...