Witam.
Może mi ktoś sprawdzić dlaczego mi ten kod nie działa pod linuxem? tzn. kompiluje się, ale gdy otwieram program to nic się nie dzieje. W win 7 działał bardzo dobrze.
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;
class program_szyfrujacy
{
public:
int wylosowane[30];
int dlugosc;
int gotowe_liczby[30];
static string znaki;
static int liczby[33];
string zaszyfrowane[20];
string tekst;
int pozycje_znakow[30];
float gotoweliczb[40];
void menu()
{
cout <<"\t\t\t==========" << endl;
cout <<"\t\t\t||ENIGMA||" << endl;
cout <<"\t\t\t==========" << endl;
cout <<"\n\n" << endl;
cout <<"========================"<< endl;
cout <<"||1.Szyfrowanie ||"<< endl;
cout <<"||2.Odszyfrowywanie ||"<< endl;
cout <<"||0.Wyjscie ||"<< endl;
cout <<"========================"<< endl;
}
int losowanie()
{
return (rand() % 31 ) + 1;
}
};
class odszyfrowywanie : public program_szyfrujacy
{
public:
int tab1[60];
int tab2[60];
string wpisztekst;
int sizetkst;
int tab3[60];
string tab4[60];
};
int program_szyfrujacy::liczby[33] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31};
std::string program_szyfrujacy::znaki = "abcdefghijklmnoprstuwz-123456789";
int main()
{
srand( time( NULL ) );
int opcja;
while(opcja !=0)
{
program_szyfrujacy enigma;
enigma.menu();
cin >> opcja;
cin.ignore();
switch (opcja)
{
case 1:
{
cout << "Podaj tekst do zaszyfrowania. Zamiast spacji uzyj znaku '-': ";
getline (cin,enigma.tekst);
enigma.dlugosc = enigma.tekst.length();
cout << "\a";
cout << "\n";
cout << "Twoj unikalny kod: Uwaga kod bedzie Ci potrzebny do odszyfrowania wiadomosci!!! " << endl;
cout <<"\nUnikalny kod: ";
for (int i = 0; i < enigma.dlugosc; i++)
{
enigma.wylosowane[i] = enigma.losowanie();
cout << enigma.wylosowane[i] << " ";
}
for (int i = 0; i < enigma.dlugosc; i++)
{
std::string strznak(enigma.tekst,i,1);
size_t pozycja = enigma.znaki.find (strznak);
enigma.pozycje_znakow[i] = pozycja;
}
for (int i = 0;i < enigma.dlugosc; i++)
{
enigma.gotowe_liczby[i] = (enigma.pozycje_znakow[i] + enigma.wylosowane[i])%31;
}
cout << "\n" << endl;
cout << "Twoj szyfr to: ";
for (int i = 0; i < enigma.dlugosc; i++)
{
std::string strznak2(enigma.znaki,enigma.gotowe_liczby[i],1);
enigma.zaszyfrowane[i] = strznak2;
cout << enigma.zaszyfrowane[i];
}
cout << "\n\n";
int klawisz;
cout << "\nWcisnij klawisz 1 aby kontynuowac:";
cin >> klawisz;
if (klawisz == 1)
{
system ("cls");
}
break;
}
case 2:
{
odszyfrowywanie obiekt;
cout << "\nPodaj szyfr: ";
cin >> obiekt.wpisztekst;
obiekt.sizetkst = obiekt.wpisztekst.length();
for (int i =0; i < obiekt.sizetkst; i++)
{
std::string strznak2(obiekt.wpisztekst,i,1);
size_t pozycja = obiekt.znaki.find (strznak2);
obiekt.tab1[i] = pozycja;
}
cout << "\n";
cout << "Wpisz unikalny kod:" << endl;
for (int i = 0; i < obiekt.sizetkst; i++)
{
cin >> obiekt.tab2[i];
}
int x;
for (int i = 0; i < obiekt.sizetkst; i++)
{
x = obiekt.tab1[i] - obiekt.tab2[i];
if (x < 0)
{
x = x + 31;
}
obiekt.tab3[i] = x;
}
cout << "\nWiadomosc: ";
for (int i = 0; i < obiekt.sizetkst; i++)
{
std::string strznak3(obiekt.znaki,obiekt.tab3[i],1);
obiekt.tab4[i] = strznak3;
std::cout << obiekt.tab4[i];
}
}
break;
}
}
}