Ваш код более C-подобен C ++. Вы должны использовать vector
, string
и sort
. И проверьте ваш ввод на наличие сбоев.
Кроме того, ваш код должен быть скомпилирован как cut-n-paste. Вам не хватает заголовков и using
операторов.
Использование qsort
(подпрограмма C) не будет работать так, как вы ее используете. C ++ предоставляет sort
, что гораздо больше подходит для решаемой вами проблемы.
Например ...
#include <algorithm>
#include <iostream>
#include <iterator>
#include <stdexcept>
#include <string>
#include <vector>
using std::begin;
using std::cin;
using std::cout;
using std::end;
using std::ostream;
using std::sort;
using std::runtime_error;
using std::string;
using std::vector;
static ostream& operator<<(ostream& o, vector<string> const& words) {
char const* sep = "";
for(auto const& word : words) {
o << sep << word;
sep = ", ";
}
return o;
}
int main() {
vector<string> words;
cout << "Dati nr de cuvinte de ordonat:";
int n;
if (!(cin >> n)) throw runtime_error("bad input");
for (int i = 0; i < n; ++i) {
string word;
if (!(cin >> word)) throw runtime_error("bad input");
words.push_back(word);
}
cout << "Before sorting: " << words << "\n";
sort(begin(words), end(words));
cout << "After sorting: " << words << "\n";
}