cum pot ordona alfabetic cuvintele în c++ cu ajutorul lui struct?
Răspunsuri la întrebare
Răspuns:
poti sa folosesti funcita strcmp si apoi sa faci o interschimbare
exemplu
for (int i=0; i<n-1;i++)
for (int j=i+1;j<n;j++)
if (strcmp(student[i].nume,student[j].nume)==1)
{
temp=student[i];
student[i]=student[j];
student[j]=temp;
}
Explicație:
Buna !
Poti folosi un struct pentru a retine fiecare cuvant. Sortarea structurilor in ordine se va face cu o functie de tip comparator (va returna true daca doua elemente a si b de tip struct sunt in ordinea care trebuie).
Putem folosi functia sort din algorithm sau putem construi noi o astfel de functie pentru sortare. Am folosit functia sort deoarece e foarte eficienta
Program C++ exemplu :
#include <iostream>
#include <algorithm>
using namespace std;
struct Cuvant {
char txt[100];
};
//Functie comparator pentru sortare cuvinte
bool comp_cuv(const Cuvant& a, const Cuvant& b) {
return strcmp(a.txt, b.txt) <= 0;
}
int main() {
//Citire nr cuvinte
int nr_elemente;
cout << "Nr cuvinte : ";
cin >> nr_elemente;
//Citire vector cuvinte
Cuvant* v = new Cuvant[nr_elemente];
cout << "Introduceti cuvinte : ";
for (int index = 0; index < nr_elemente; index++)
cin >> v[index].txt;
//Sortare vector cuvinte
sort(v, v + nr_elemente, comp_cuv);
//Afisare vector cuvinte
cout << "Cuvinte sortate crescator :\n";
for (int index = 0; index < nr_elemente; index++)
cout << v[index].txt << " ";
delete[] v;
}