Cdorsu Posted September 2, 2015 Share Posted September 2, 2015 (edited) O metoda destul de usoara cu care sa faceti permutari este functia std::next_permutation aflata in biblioteca #include <algorithm> Puteti folosi aceasta funtie in orice clasa STL. Pentru putina practica sa verificam daca doua cuvinte sunt anagrame. Doua cuvinte anagrame sunt doua cuvinte care au aceleasi litere (nu conteaza daca sunt sau nu in ordine). #include <iostream> // intrari si iesiri standard #include <algorithm> // Avem nevoie pentru functia next_permutation #include <string.h> //Avem nevoie pentru clasa string bool Anagrama(std::string str,std::string str2) //Functia care verifica daca cele doua cuvinte sunt anagrame { if(str1 == str2)//Daca sunt aceleasi cuvinte sunt anagrame return true; do//Nu stiu dece, dar am vrut sa folosesc un do-while aici { if(str == str2)//verificam daca cele doua siruri coincid return true; //daca coincid, returnam adevarat }while(std::next_permutation(str.begin(),//Iterator pentru locul de unde se incepe permutarea str.end()));//Iterator pentru locul unde se termina permutarea - Elementele din string cu care vom face permutarea (cu toate) return false; //Sirurile nu au coincis niciodata, deci nu sunt anagrame } int main()//Functia principala { std::string str, str2;//cele doua siruri std::cout<<"Care este primul cuvant?\n"; std::cin>>str;//citim primul sir std::cout<<"Care este al doilea cuvant?\n"; std::cin>>str2;//citim al doilea sir if(Anagrama(str,str2))//verificam si afisam mesajele corespunzatoare { std::cout<<"Cele doua cuvinte sunt anagrame.\n"; return 0; } std::cout<<"Cele doua cuvinte nu sunt anagrame.\n"; return 0; } Rezultatul: Edited September 2, 2015 by Cdorsu 1 Link to comment Share on other sites More sharing options...
ALexu Posted September 14, 2015 Share Posted September 14, 2015 Topic closed ! Link to comment Share on other sites More sharing options...
Recommended Posts