C++ ile Anagram Bulma Programı
Kullanıcının girdiği metindeki harflerin tüm anagramlarını bulan C++ programı. Dikkat ! uzun bir metin girmemeniz tavsiye edilir.
#include < iostream >
#include < string >
#include < vector >
void FindAnagrams(const std::string& metin,
std::string anagram, std::vector < bool > & kullanilanHarfler,
std::vector < std::string > & anagramlar);
int main()
{
std::cout << "Metni girin: ";
std::string metin;
std::getline(std::cin, metin);
std::vector < std::string > anagramlar;
std::vector < bool > kullanilanHarfler(metin.length(), false);
FindAnagrams(metin, "", kullanilanHarfler, anagramlar);
std::cout << "Tum anagramlar:" << std::endl;
for (const auto& anagram : anagramlar)
{
std::cout << anagram << std::endl;
}
return 0;
}
void FindAnagrams(const std::string& metin, std::string anagram, std::vector < bool > & kullanilanHarfler, std::vector < std::string > & anagramlar)
{
if (anagram.length() == metin.length())
{
anagramlar.push_back(anagram);
return;
}
for (size_t i = 0; i < metin.length(); i++)
{
if (!kullanilanHarfler[i])
{
kullanilanHarfler[i] = true;
FindAnagrams(metin, anagram + metin[i], kullanilanHarfler, anagramlar);
kullanilanHarfler[i] = false;
}
}
}
Giriş/Çıkış işlemleri için gerekli kütüphane
#include < iostream >
C++ ile String (metin) kullanacağız
#include < string >
C++ ile Vektör (vector) kullanacağız
#include < vector >
C++ ile Anagramları bulan yardımcı fonksiyon (recursive)
void FindAnagrams(const std::string& metin,
std::string anagram, std::vector < bool > & kullanilanHarfler,
std::vector < std::string > & anagramlar);
C++ ile Kullanıcıdan bir metin girmesi istenir
std::cout << "Metni girin: ";
std::string metin;
C++ ile Tüm satırı metin olarak alır
std::getline(std::cin, metin);
C++ ile Tüm anagramları tutacak bir vektör oluşturulur
std::vector < std::string > anagramlar;
C++ ile Kullanılan harfleri takip etmek için bir vektör oluşturulur
std::vector < bool > kullanilanHarfler(metin.length(), false);
C++ ile Anagramları oluşturan fonksiyon çağrılır
FindAnagrams(metin, "", kullanilanHarfler, anagramlar);
C++ ile Her bir anagramı ekrana yazdırır
std::cout << "Tum anagramlar:" << std::endl;
for (const auto& anagram : anagramlar)
{
std::cout << anagram << std::endl;
}
C++ ile Programın başarıyla sonlandığını belirtir
return 0;
C++ ile Anagramları bulan yardımcı fonksiyon (recursive)
void FindAnagrams(const std::string& metin, std::string anagram, std::vector < bool > & kullanilanHarfler, std::vector < std::string > & anagramlar)
{
if (anagram.length() == metin.length())
{
anagramlar.push_back(anagram); // Eğer geçerli anagram uzunluğu, metin uzunluğuna eşitse, bu bir anagramdır ve vektöre eklenir
return;
}
// Metindeki her harfi teker teker kullanarak anagramları oluşturur
for (size_t i = 0; i < metin.length(); i++)
{
if (!kullanilanHarfler[i])
{
kullanilanHarfler[i] = true; // Harf kullanıldı olarak işaretlenir
FindAnagrams(metin, anagram + metin[i], kullanilanHarfler, anagramlar); // Rekürsif olarak diğer anagramları oluşturmak için fonksiyon tekrar çağrılır
kullanilanHarfler[i] = false; // Harf kullanılmadı olarak işaretlenir (backtracking)
}
}
}