April 2023 1 5 Report
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
}​

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.