witam!
czy mógłbym prosić o wyjaśnienie, dlaczego w tym programiku występuje błąd naruszenia ochrony pamięci??
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int wielkosc;
int* kod();
string szyfrowanie();
string deszyfrowanie();
//===================================
int main(int argc, char **argv) {
const string szyfruj = "SZYFRUJ";
const string deszyfruj = "DESZYFRUJ";
string in;
cin >> in;
if(in == szyfruj)
szyfrowanie();
else if(in == deszyfruj)
deszyfrowanie();
else
return 0;
return 0;
}
//===================================
//=================================== szyfrowanie
string szyfrowanie(){
int *wsk_kod = kod();
string sText;
cin >> sText;
for(int i = 0, j = 0; i < sText.size(); i++, j++){ // pętla szyfrująca
if(j >= wielkosc)
j = 0;
if((sText[i] + wsk_kod[j]) > 90){
int reszta = (sText[i] + wsk_kod[j]) - 91;
sText[i] = 65 + reszta;
}
else
sText[i] += wsk_kod[j];
}
cout << sText << endl;
delete [] wsk_kod;
}
//=================================== deszyfrowanie
string deszyfrowanie(){
int *wsk_kod = kod();
string sText;
cin >> sText;
for(int i = 0, j = 0; i < sText.size(); i++, j++){ // pętla szyfrująca
if(j >= wielkosc)
j = 0;
if((sText[i] - wsk_kod[j]) < 65){
int reszta = 64 - (sText[i] - wsk_kod[j]);
sText[i] = 90 - reszta;
}
else
sText[i] -= wsk_kod[j];
}
cout << sText << endl;
delete [] wsk_kod;
}
//=================================== kod
int* kod(){
string s;
stringstream ss;
cin >> s;
wielkosc = s.size();
int *liczba = new int[wielkosc];
for(int i = 0; i < wielkosc; i++){
ss.str("");
ss.clear();
ss << s[i];
ss >> liczba[i];
}
return liczba;
}