Witam! Sprawdzi ktoś co jest nie tak z tym szyfrem Cezara? #include <iostream>#include <string>#include <cctype>#include <fstream>using namespace std;const string alfabet_m = "aąbcćdeęfghijklłmnńoóprsśtuvwxyzźż";const string alfabet_w = "AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUVWXYZŹŻ ";char Cezar_Pl(char znak, int klucz){ int i = alfabet_m.find(znak); if(i >= 0 && i < 35) { // Use modulus with the correct size of the alphabet i = (i + klucz) % 35; // Return the character from the appropriate alphabet return alfabet_m[i]; } i = alfabet_w.find(znak); if(i >= 0 && i < 35) { i = (i + klucz) % 35; return alfabet_w[i]; } // If the character is not in any alphabet, return the same character return znak;}string Cezar(string s, int klucz){ string szyfrogram = ""; for(int i = 0; i < s.size(); i++) { szyfrogram = szyfrogram + Cezar_Pl(s[i], klucz); } return szyfrogram; // Return the encrypted string}int ZnajdzKlucz(){ int Liczniki[35]; for(int i = 0; i < 35; i++) { Liczniki[i] = 0; } string s; ifstream wejscie("tajne.txt"); // Add missing semicolon while(getline(wejscie, s)) { for(int i = 0; i < s.size(); i++) { int j = alfabet_m.find(s[i]); if(j >= 0 && j < 35) { Liczniki[j]++; } else { j = alfabet_w.find(s[i]); // Reuse the same variable if(j >= 0 && j < 35) { Liczniki[j]++; } } } } wejscie.close(); int klucz = 0; for(int i = 1; i < 35; i++) // Start from i=1 to avoid using an uninitialized variable { if(Liczniki[i] > Liczniki[klucz]) { klucz = i; } } return klucz; // Return the found key}void Szyfruj(int klucz){ string s; ifstream wejscie("tajne.txt"); // Add missing semicolon ofstream wyjscie("t_odszyfrowany.txt"); while(getline(wejscie, s)) { wyjscie << Cezar(s, klucz) << endl; } wejscie.close(); wyjscie.close(); // Change colon to semicolon}int main(){ Szyfruj(35 - ZnajdzKlucz()); cout << "Plik t_odszyfrowany.txt zostal utworzony!"; return 0; // Add return statement}​
Answer

Life Enjoy

" Life is not a problem to be solved but a reality to be experienced! "

Get in touch

Social

© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.