Witam mam problem z kodem cezara, mam gotowy program ale muszę jeszcze dodać wskaźniki ale za bardzo nie wiem w których miejscach i jak się za to zabrać. Poniżej przedstawiam kod źródłowy programu :
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
ifstream odczyt("dane.txt");
ofstream zapis("wynik.txt");
void szyfrowanie(int k)
{
string litera1, litera2;
while (!odczyt.eof())
{
odczyt >> litera1;
for (int i = 0; i < litera1.length(); i++)
{
if ((int)litera1[i] > 64 && (int)litera1[i] < 91)
{
if ((int)litera1[i] < 91 && (int)litera1[i] + k>90)
litera2.push_back(litera1[i] - 26 + k);
if ((int)litera1[i] < 91 && (int)litera1[i] + k < 91)
litera2.push_back(litera1[i] + k);
if ((int)litera1[i] > 96 && (int)litera1[i] + k > 122)
litera2.push_back(litera1[i] - 26 + k);
if ((int)litera1[i] > 96 && (int)litera1[i] + k < 123)
litera2.push_back(litera1[i] + k);
}
if ((int)litera1[i] > 96 && (int)litera1[i] < 123)
{
if ((int)litera1[i] < 91 && (int)litera1[i] + k>90)
litera2.push_back(litera1[i] - 26 + k);
if ((int)litera1[i] < 91 && (int)litera1[i] + k < 91)
litera2.push_back(litera1[i] + k);
if ((int)litera1[i] > 96 && (int)litera1[i] + k > 122)
litera2.push_back(litera1[i] - 26 + k);
if ((int)litera1[i] > 96 && (int)litera1[i] + k < 123)
litera2.push_back(litera1[i] + k);
}
}
zapis << litera2 << endl;
litera2.clear();
}
}
void deszyfrowanie(int k)
{
string litera1, litera2;
while (!odczyt.eof())
{
odczyt >> litera1;
for (int i = 0; i < litera1.length(); i++)
{
if ((int)litera1[i] > 96 && (int)litera1[i] < 123)
{
if ((int)litera1[i] > 64 && (int)litera1[i] - k < 65 && (int)litera1[i] < 95)
litera2.push_back(litera1[i] + 26 - k);
if ((int)litera1[i] > 64 && (int)litera1[i] - k > 64 && (int)litera1[i] < 95)
litera2.push_back(litera1[i] - k);
if ((int)litera1[i] > 96 && (int)litera1[i] - k < 97)
litera2.push_back(litera1[i] + 26 - k);
if ((int)litera1[i] > 96 && (int)litera1[i] - k > 96)
litera2.push_back(litera1[i] - k);
}
if ((int)litera1[i] > 64 && (int)litera1[i] < 91)
{
if ((int)litera1[i] > 64 && (int)litera1[i] - k < 65 && (int)litera1[i] < 95)
litera2.push_back(litera1[i] + 26 - k);
if ((int)litera1[i] > 64 && (int)litera1[i] - k > 64 && (int)litera1[i] < 95)
litera2.push_back(litera1[i] - k);
if ((int)litera1[i] > 96 && (int)litera1[i] - k < 97)
litera2.push_back(litera1[i] + 26 - k);
if ((int)litera1[i] > 96 && (int)litera1[i] - k > 96)
litera2.push_back(litera1[i] - k);
}
}
zapis << litera2 << endl;
litera2.clear();
}
}
int main()
{
int a;
int klucz;
cout << "Podaj klucz: ";
cin >> klucz;
if (klucz >= 0)
for (; klucz > 25; )
klucz = klucz - 26;
else
for (; klucz < 0;)
klucz = klucz + 26;
cout << "Jesli chcesz szyfrowac wcisnij 1, jesli chcesz deszyfrowac, wcisnij 2: ";
do {
cin >> a;
if (a == 1)
{
szyfrowanie(klucz);
system("pause");
return 0;
}
if (a == 2)
{
deszyfrowanie(klucz);
system("pause");
return 0;
}
else
cout << "Wprowadziles niepoprawna liczbe, sprobuj jeszcze raz: " << endl;
} while (a != 1 || a != 2);
system("pause");
}