C++ nasıl harf değiştiririm?

RSK06

Hectopat
Katılım
29 Aralık 2020
Mesajlar
2.365
Çözümler
4
Daha fazla  
Cinsiyet
Erkek
Mesela.
String alphabet {"abc...abc..."};
String Key {"xtl...skg..."};

Yapmam gereken şey mesela bir cümle var, normal alfabe ile yazılmış abc. Mesela o cümledeki her 'a' harfini Key'deki rastgele 'a'ya denk gelen harf ile değiştirmem lazım burada 'X' oluyor.
 
'z' yerine Key'den rastgele elde edeceğiniz şeyi koyarsınız.

Kod:
int main() {
string str = "merhaba";
for (auto& i : str) {
if (i == 'a') {
i = 'z';
}
}

cout << str << endl;

return 0;
}

Öyle olur mu ki? Uğraştırmaz mı :)
yapmam gereken mesela
cin >> secret_msg;
Gizli bir mesaj giriyorum rastgele.
Bu mesajdaki tüm sayıları Key'e göre değiştirmesi lazım birazdan tam örnek atacağım belki anlamamışsınızdır ne demek istediğimi.
 
1619617510044.png

Haklısınız kusura bakmayın.
 
Şifreleme yapacaksanız rastgeleden gidemezsiniz.
Size hash lazım.

Pek bilgim yok ama biraz bakacağım. İş görür bir şeyler elde edersem yazarım.
Bir yerden sonra istediğin program tam ne yapmalı hala anlamadığımı fark ettim.

Kullanıcıdan girdi alıp onu şifreleyip sonra da çözüp yazdırıyor gibi. Şifreliyi çözdüğünde elde edeceği şeyi zaten biliyor, ne anlamı var ki?

İnternette ne aramam gerektiğinden bile emin değildim bu yüzden. Bulduklarım da alakasız şeyler oldu.

Şu şekilde bir şey yaptım. Aslında hiç elle tutulur yanı yok. İki taraflı map de kullanılabilir. Boost'ta varmış. Onu kullanmak daha mantıklı olur.

Kod:
#include <iostream>
#include <algorithm>
#include <string>
#include <ctime>

using namespace std;

string alpha{ "abcdefghijklmnopqrstuvwxyz" };
string randAlpha{ alpha };

void encrypt(string& str, char** arr) {
    for (auto i{ 0 }; i < str.length(); ++i) {
        str[i] = arr[1][str[i] - 'a'];
    }
}

void decrypt(string& str, char** arr) {
    for (auto i{ 0 }; i < str.length(); ++i) {
        auto j{ -1 };
        while (str[i] != arr[1][++j]);
        str[i] = arr[0][j];
    }
}

int main() {
    srand(time(NULL));
    random_shuffle(randAlpha.begin(), randAlpha.end());
    char* arr[2];
    arr[0] = &alpha[0];
    arr[1] = &randAlpha[0];

    string str;
    cout << "metin gir: ";
    cin >> str;

    encrypt(str, arr);
    cout << str << endl;
    decrypt(str, arr);
    cout << str << endl;

    return 0;
}
 
Son düzenleme:
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı