Răspuns :
Răspuns:
#include <iostream>
#include <map>
#include <vector>
#include <string>
std::map<char, int> creareDictionar(const std::string& cuvantCurent);
void creareVector(int numarCuvinte, std::vector<std::string>& vectorCuvinte);
int main()
{
int numarCuvinte, contorAnagrame{};
std::cout << "Introdu numarul de cuvinte >> ";
std::cin >> numarCuvinte;
/* vectorul în care salvăm cuvintele */
std::vector<std::string> vectorCuvinte;
creareVector(numarCuvinte, vectorCuvinte);
/* creăm primul dicționar pentru a-l putea compara cu restul */
std::map<char, int> primulDictionar = creareDictionar(vectorCuvinte.at(0));
for (std::size_t i{ 1 }; i < vectorCuvinte.size(); ++i) {
/* creăm dicționarul cuvântului curent */
std::map<char, int> dictionarCurent = creareDictionar(vectorCuvinte.at(i));
/* și dacă cele două dicționare sunt egale => anagramă */
if (primulDictionar == dictionarCurent) {
std::cout << "Cuvantul \"" << vectorCuvinte.at(i) << "\" este anagrama!\n";
contorAnagrame++;
}
}
/* la final afișăm câte anagrame avem */
std::cout << contorAnagrame << "\n";
return 0;
}
void creareVector(int numarCuvinte, std::vector<std::string>& vectorCuvinte)
{
vectorCuvinte.reserve(numarCuvinte + 1);
/* citim cuvântul și-l adăugăm în std::vector */
for (int i{}; i < numarCuvinte + 1; ++i) {
std::string cuvantCitit;
std::cout << "Introdu cuvantul >> ";
std::cin >> cuvantCitit;
vectorCuvinte.push_back(cuvantCitit);
}
}
std::map<char, int> creareDictionar(const std::string& cuvantCurent)
{
std::map<char, int> dictionar;
for (const char& caracterCurent : cuvantCurent) {
/* dacă cheia nu există o adaugă cu valoarea 0 pe care mai apoi o incrementează, dacă există o incrementează */
dictionar[caracterCurent]++;
}
return dictionar;
}
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!