eine Lücke Funktion schreiben in einer beliebigen Anzahl von Strings liest (Duplikate erlaubt sind) von cin, speichert sie in einem Vektor, genannt string_list_sort(), die dann sortiert sie. Verwenden Sie nicht die Standard C++ Sortierfunktion hier - verwenden Sie die Version von Quicksort, die Sie erstellt haben.cin Strings in einen Vektor und QuickSort sie
Mein Problem ist, ich versuchte strcmp()
zu verwenden, aber ich habe viele Fehler, so habe ich versucht, diese Methode, aber ich habe ein Problem mit char val = v[end]
. Ich bin mir nicht sicher, wie man zwei std::string
Werte vergleicht. Ich habe Char in String geändert und es funktioniert. Nun ist mein Problem zum Beispiel v = {"Apfel", "Auto", "Fuchs", "Seife", "FOZ"}; das Ergebnis, das ich bekommen, ist Apfel, Seife, Auto, Fuchs, foz die
#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
#include <vector>
#include "error.h"
using namespace std;
void string_list_sort(vector<string> v){
string line;
while (getline(cin, line)){
if (line.empty()){
break;
}
v.push_back(line);
}
}
int partition(vector<string>&v, int begin, int end)
{
char val = v[end];
char temp;
int j = end;
int i = begin - 1;
while (true)
{
while (v[++i] < val)
while (v[--j] > val)
{
if (j == begin)
break;
}
if (i >= j)
break;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}
temp = v[i];
v[i] = v[end];
v[end] = temp;
return i;
}
void quicksort(vector<string>& v, int begin, int end)
{
if (begin < end)
{
int p = partition(v, begin, end);
quicksort(v, begin, p - 1);
quicksort(v, p + 1, end);
}
}
void quick_sort(vector<string>& v)
{
quicksort(v, 0, v.size() - 1);
}
int main()
{
vector<string> v;
v =
{ " this is a test string,.,!"};
string word;
while (cin >> word)
{
v.push_back(word);
}
quick_sort(v);
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
}
Da Sie 'std :: string' verwenden, können Sie mit' <', '<=', '> 'und'> = 'vergleichen. Sie müssen 'strcmp()' nicht verwenden. Dies ist die altmodische Art, die von C. übernommen wurde. –
Außerdem müssen Sie Ihre Tastatur überprüfen. Ihre 'Tab'-Taste scheint beschädigt zu sein, und der angezeigte Code ist daher größtenteils nicht lesbar. –
Uns anonyme Benutzer müssen aufeinander achten, so dass ich Ihren Code erkannt habe. – user4581301