Sotieralgorithmen (FH Praktikum)
-
Ja schau doch mal, was du hier tust...
cin >> zeichensatz[10];Du liest also in das 10. Feld die Eingabe ein.
Immer das 10. Feld.
Wozu hast du denn ein Array, wenn du immer nur das 10. Feld beschreibst
Außerdem wird die Funktion nur einmal durchlaufen.
-
Glaube ich jetzt grade nicht. Wir können jedenfalls die Sorieralgorythmen aus unserem Skript herauskopieren. Wenn es falsch wäre dann von unserem Prof. ;o)
-
ähm ja das mit der 10 war nur zum probieren
als erstes hatte ich
cin >> zeichensatz;stehen
das mit dem einen Druchgang stimmt schon, da ich dachte ich kann die Zeichen mit dem cin in das array speichern und dann die zeichen einzeln auslesen.
-
DragonShaolin schrieb:
das mit dem einen Druchgang stimmt schon, da ich dachte ich kann die Zeichen mit dem cin in das array speichern und dann die zeichen einzeln auslesen.
Aber warum nimmst du dann ein Array von 10 Strings?
Sieh dir doch mal an, was die Sortierfunktionen als Parameter erwarten.
-
DragonShaolin schrieb:
Glaube ich jetzt grade nicht. Wir können jedenfalls die Sorieralgorythmen aus unserem Skript herauskopieren. Wenn es falsch wäre dann von unserem Prof. ;o)
dein deutsch macht mich krank
-
Hey sorry, bin müde. Dann überlese es bitte.
-
steff3 schrieb:
dein deutsch macht mich krank
Dann gehe lieber nicht in's Spieleforum

http://www.c-plusplus.net/forum/viewtopic-var-t-is-131031.html@Topic:
Also wenn du 10 Strings einlesen willst, und dann mit den jeweils ersten Buchstaben einen String erstellen möchtest, brauchst du auf jeden Fall eine Schleife.Um die 10 Strings einzulesen und um einen String aus den Buchstaben zu bauen. (Mit dem += Operator)
-
Wie übergebe ich das Array in die Funktion
Geht das nicht so?
char array[10] = {1,2,3,4,5}; bubblesort (array) bubblesort (char &p_array) { //code }
-
Nein, da übergäbst du ja eine Referenz auf char und keinen Pointer.
Nur letzterer kann als erstes Feld eines Arrays angesehen werden.Also was möchtest du eigentlich?
Einen String übergeben (bzw. per Referenz) und dessen Buchstaben dann per [] ansprechen oder ein Array aus char übergeben.
Klär das erstmal ab.
-
ich möchte lieber einen string übergeben und dann per [] ansprechen.
Also mit dem test programm ist es möglich als char einzulesen und einzelne zeichen mit dem datentyp string auszugeben.
#include <string> #include <iostream> using namespace std; void main() { string b; char a = 'a'; char c = 'e'; char e[10]; cin >> e; b+=e; cout << b << endl; cout << b[1]; }Jetzt muss ich nur noch verstehen wie ich z.b. bei dieser Funktion "void bubbleSort(string &daten)" den Array übergebe und ich in der Funktion dann mit dem String datentyp weiterarbeiten kann. So wurde unsere Funktion vorgegeben.
Ich habe jetzt mein programm etwas verändert.
Die eingabe:
void arrayeingabe() { cout << "Bitte geben sie einen beliebigen Zeichensatz ein : "; cin >> zeichensatz; cout << endl; weitergabe += zeichensatz; }weitergabe hat den datentyp string.
nun bei dem Aufruf von bubblesort(weitergabe) funktioniert so nicht.
Error:
Übung 5 (Aufgabe 1) error LNK2019: Nicht aufgeloestes externes Symbol "void __cdecl bubbleSort(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?bubbleSort@@YAXV?char_traits@D@std@@V?$allocator@D@2@@std@@@Z), verwiesen in Funktion _main
Übung 5 (Aufgabe 1) fatal error LNK1120: 1 unaufgeloeste externe VerweiseSo ich gehe jetzt ins bett und schau morgen nochmal rein.
-
hi,
wenn du einen string direkt eingeben willst, nimm doch getline:
string s; getline(cin,s);
-
fuer den bubblesort hats so funktioniert:
string zeichensatz; void arrayeingabe() { cout << "Bitte geben sie einen beliebigen Zeichensatz ein : "; cin.ignore();\\letztes enter ignorieren getline(cin,zeichensatz); } void bubbleSort(string daten) { int zaehler; zaehler = daten.length(); for (int lauf=1; lauf <zaehler; lauf++) { // Läufe for (int element=zaehler-1; element>=lauf; element--) { // ein Lauf if (daten[element-1] > daten[element]) { // vertauschen char tmp = daten[element-1]; daten[element-1] = daten[element]; daten[element] = tmp; } } } cout<<"\nsortiert:\n"<<daten<<endl; } ... switch(menunumber) { case (1): { arrayeingabe(); bubbleSort(zeichensatz); break; } ...