Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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