Răspuns :
Program C++ :
#include <iostream>
#include <forward_list>
#include <string>
#include <sstream>
//Comparator pentru sortarea cuvintelor descrescator dupa numarul de aparitii
bool comparator_cuvinte(std::pair<std::string, int>& a, std::pair<std::string, int>& b) {
return a.second > b.second;
}
//Citire fraza
std::string citire_cuvant() {
std::string input;
std::getline(std::cin, input);
//Transformare in litere mici, eliminare caractere extra
for (auto& c : input) {
if (c >= 'a' && c <= 'z') continue;
if (c >= 'A' && c <= 'Z') c = c - 'A' + 'a';
else c = ' ';
}
return input;
}
//Construire lista cu cuvinte si numar de aparitii
std::forward_list<std::pair<std::string, int>> creare_lista_cuvinte(std::string input) {
std::forward_list<std::pair<std::string, int>> lista;
std::istringstream iss(input);
std::string word;
while (iss >> word) {
bool gasit = 0;
for (auto it = lista.begin(); it != lista.end(); it++) {
if (it->first == word) {
it->second++;
gasit = 1;
break;
}
}
if (!gasit) lista.push_front({ word, 1 });
}
return lista;
}
void afisare(std::forward_list<std::pair<std::string, int>> lista) {
for (auto item : lista) {
std::cout << std::endl << item.first << " - " << item.second;
}
}
int main() {
//Citire fraza
std::string input = citire_cuvant();
//Creare lista cuvinte
std::forward_list<std::pair<std::string, int>> lista = creare_lista_cuvinte(input);
//Sortare in functie de numarul de aparitii
lista.sort(comparator_cuvinte);
//Afisare rezultat
afisare(lista);
}

Vă mulțumim că ați vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Dacă aveți întrebări sau nevoie de asistență suplimentară, nu ezitați să ne contactați. Ne vedem curând și nu uitați să ne adăugați la marcaje!