canadanali
04/12/2005, 22:53
aşağıdaki kodu visual c++ 6.0 da programı çalıştırınca aşagıdaki menü geliyor
1-Mesaji sifrele...
2-Sifrelenmis mesaji cozum
3-Programdan cik
seciminiz giriniz...:
örneğin seçimi 1 girince "Debug Asseriton Failed!" hatası veriyor..
//sifre.cpp
#include <iostream>
using namespace std;
//Vigenere tablosu (ingiliz alfabesine göre düzenlenmiş)
int secim;
const char tablo[26][26] = {
{ 'A','B','C','D','E','F','G','H','I','J','K','L','M ','N','O','P','Q','R','S','T','U','V','W','X','Y', 'Z' },
{ 'B','C','D','E','F','G','H','I','J','K','L','M','N ','O','P','Q','R','S','T','U','V','W','X','Y','Z', 'A' },
{ 'C','D','E','F','G','H','I','J','K','L','M','N','O ','P','Q','R','S','T','U','V','W','X','Y','Z','A', 'B' },
{ 'D','E','F','G','H','I','J','K','L','M','N','O','P ','Q','R','S','T','U','V','W','X','Y','Z','A','B', 'C' },
{ 'E','F','G','H','I','J','K','L','M','N','O','P','Q ','R','S','T','U','V','W','X','Y','Z','A','B','C', 'D' },
{ 'F','G','H','I','J','K','L','M','N','O','P','Q','R ','S','T','U','V','W','X','Y','Z','A','B','C','D', 'E' },
{ 'G','H','I','J','K','L','M','N','O','P','Q','R','S ','T','U','V','W','X','Y','Z','A','B','C','D','E', 'F' },
{ 'H','I','J','K','L','M','N','O','P','Q','R','S','T ','U','V','W','X','Y','Z','A','B','C','D','E','F', 'G' },
{ 'I','J','K','L','M','N','O','P','Q','R','S','T','U ','V','W','X','Y','Z','A','B','C','D','E','F','G', 'H' },
{ 'J','K','L','M','N','O','P','Q','R','S','T','U','V ','W','X','Y','Z','A','B','C','D','E','F','G','H', 'I' },
{ 'K','L','M','N','O','P','Q','R','S','T','U','V','W ','X','Y','Z','A','B','C','D','E','F','G','H','I', 'J' },
{ 'L','M','N','O','P','Q','R','S','T','U','V','W','X ','Y','Z','A','B','C','D','E','F','G','H','I','J', 'K' },
{ 'M','N','O','P','Q','R','S','T','U','V','W','X','Y ','Z','A','B','C','D','E','F','G','H','I','J','K', 'L' },
{ 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z ','A','B','C','D','E','F','G','H','I','J','K','L', 'M' },
{ 'O','P','Q','R','S','T','U','V','W','X','Y','Z','A ','B','C','D','E','F','G','H','I','J','K','L','M', 'N' },
{ 'P','Q','R','S','T','U','V','W','X','Y','Z','A','B ','C','D','E','F','G','H','I','J','K','L','M','N', 'O' },
{ 'Q','R','S','T','U','V','W','X','Y','Z','A','B','C ','D','E','F','G','H','I','J','K','L','M','N','O', 'P' },
{ 'R','S','T','U','V','W','X','Y','Z','A','B','C','D ','E','F','G','H','I','J','K','L','M','N','O','P', 'Q' },
{ 'S','T','U','V','W','X','Y','Z','A','B','C','D','E ','F','G','H','I','J','K','L','M','N','O','P','Q', 'R' },
{ 'T','U','V','W','X','Y','Z','A','B','C','D','E','F ','G','H','I','J','K','L','M','N','O','P','Q','R', 'S' },
{ 'U','V','W','X','Y','Z','A','B','C','D','E','F','G ','H','I','J','K','L','M','N','O','P','Q','R','S', 'T' },
{ 'V','W','X','Y','Z','A','B','C','D','E','F','G','H ','I','J','K','L','M','N','O','P','Q','R','S','T', 'U' },
{ 'W','X','Y','Z','A','B','C','D','E','F','G','H','I ','J','K','L','M','N','O','P','Q','R','S','T','U', 'V' },
{ 'X','Y','Z','A','B','C','D','E','F','G','H','I','J ','K','L','M','N','O','P','Q','R','S','T','U','V', 'W' },
{ 'Y','Z','A','B','C','D','E','F','G','H','I','J','K ','L','M','N','O','P','Q','R','S','T','U','V','W', 'X' },
{ 'Z','A','B','C','D','E','F','G','H','I','J','K','L ','M','N','O','P','Q','R','S','T','U','V','W','X', 'Y' } };
//Mesaj sınıfı değişken ve metodlarının deklarasyonu
class Mesaj
{
private:
char* pCMesaj;
char* pSMesaj;
char* pAnahtar;
public:
Mesaj();
void MesajAl();
void AnahtarAl();
void MesajSifrele();
void MesajCozumle();
void Menu();
~Mesaj();
};
//Varsayılan Kurucu
Mesaj::Mesaj()
{
}
// Mesajı al...
void Mesaj::MesajAl()
{
char *pGecici=new char[256];
cin.getline(pGecici,256,'\n');
cout<<endl;
pCMesaj = new char[strlen(pGecici)+1];
strcpy(pCMesaj, pGecici);
pSMesaj = new char[strlen(pGecici)+1];
strcpy(pSMesaj,pGecici);
delete[] pGecici;
}
//Anahtarı al...
void Mesaj::AnahtarAl()
{
char *pGecici = new char[32];
cout<<"Anahtari giriniz ve enter tusuna basiniz..." <<endl;
cin.getline(pGecici, 32, '\n');
cout<<endl;
pAnahtar = new char[strlen(pCMesaj)+1];
strcpy(pAnahtar,pCMesaj);
int i, j;
for(i = 0, j = 0; i < strlen(pCMesaj), j < strlen(pCMesaj); i++, j++)
{
if(pGecici[j] && pAnahtar[i])
{
pAnahtar[i] = pGecici[j];
}
else if(pGecici[j] == '\0')
{
j = -1;
i--;
}
else
break;
}
delete[] pGecici;
}
//Mesajı şifrele....
void Mesaj::MesajSifrele()
{
int saga, asagiya;
int i, j;
cout << "Mesaj sifrelendi..." << endl;
cout << endl <<pCMesaj<<endl<<pAnahtar << endl << endl;
for(j = 0; j < strlen(pSMesaj); j++)
{
for(i = 0; i < 26; i++)
{
if( !(isalpha(pCMesaj[j])))
{
saga = 30;
break;
}
if( ( toupper(pCMesaj[j]) == tablo[0][i]))
{
saga = i;
break;
}
}
for(i = 0; i < 26; i++)
{
if( !(isalpha(pCMesaj[j])))
{
asagiya = 30;
break;
}
if( ( toupper(pAnahtar[j]) == tablo[i][0]))
{
asagiya = i;
break;
}
}
if(saga != 30 && asagiya != 30)
pSMesaj[j] = tablo[asagiya][saga];
}
cout << pSMesaj << endl << endl;
}
//Mesajı çözümle....
void Mesaj::MesajCozumle()
{
int asagiya, saga, i, j;
cout << "Mesaj cozumlendi..." << endl;
cout << endl << pSMesaj << endl << pAnahtar << endl << endl;
for(j = 0; j < strlen(pSMesaj); j++)
{
for(i = 0; i < 26; i++)
{
if( !(isalpha(pAnahtar[j])))
{
saga = 30;
break;
}
if( ( toupper(pAnahtar[j]) == tablo[0][i]))
{
saga = i;
break;
}
}
for(i = 0; i < 26; i++)
{
if( !(isalpha(pSMesaj[j])))
{
asagiya = 30;
break;
}
if( ( toupper(pSMesaj[j]) == tablo[i][saga]))
{
asagiya = i;
break;
}
}
if(asagiya != 30)
pCMesaj[j] = tablo[asagiya][0];
}
cout << pCMesaj << endl;
}
void Mesaj::Menu()
{
cout<<"1-Mesaji sifrele..."<<endl;
cout<<"2-Sifrelenmis mesaji cozumle ..."<<endl;
cout<<"3-Programdan cik"<<endl;
cout<<"seciminiz giriniz...:";
cin>>secim;
}
//Yıkıcı
Mesaj::~Mesaj()
{
delete[] pCMesaj;
delete[] pSMesaj;
delete[] pAnahtar;
}
//Main fonksiyonu
int main()
{
//Mesaj sınfından mesaj nesnesi oluşturuldu...
Mesaj mesaj;
mesaj.Menu();
if(secim==1){
cout<<"Sifrelemek istediginiz mesaji giriniz ve enter tusuna basiniz...";
mesaj.MesajAl();
//mesaj.AnahtarAl();
//mesaj.MesajSifrele();
}
else if(secim==2){
cout<<"Cozumlemek istediginiz mesaji giriniz ve enter tusuna basiniz....";
mesaj.MesajAl();
mesaj.AnahtarAl();
mesaj.MesajCozumle();
}
else if(secim==3)
{
exit(0);
}
else
cout<<"aaaaaaaaaa";
return 0;
}
1-Mesaji sifrele...
2-Sifrelenmis mesaji cozum
3-Programdan cik
seciminiz giriniz...:
örneğin seçimi 1 girince "Debug Asseriton Failed!" hatası veriyor..
//sifre.cpp
#include <iostream>
using namespace std;
//Vigenere tablosu (ingiliz alfabesine göre düzenlenmiş)
int secim;
const char tablo[26][26] = {
{ 'A','B','C','D','E','F','G','H','I','J','K','L','M ','N','O','P','Q','R','S','T','U','V','W','X','Y', 'Z' },
{ 'B','C','D','E','F','G','H','I','J','K','L','M','N ','O','P','Q','R','S','T','U','V','W','X','Y','Z', 'A' },
{ 'C','D','E','F','G','H','I','J','K','L','M','N','O ','P','Q','R','S','T','U','V','W','X','Y','Z','A', 'B' },
{ 'D','E','F','G','H','I','J','K','L','M','N','O','P ','Q','R','S','T','U','V','W','X','Y','Z','A','B', 'C' },
{ 'E','F','G','H','I','J','K','L','M','N','O','P','Q ','R','S','T','U','V','W','X','Y','Z','A','B','C', 'D' },
{ 'F','G','H','I','J','K','L','M','N','O','P','Q','R ','S','T','U','V','W','X','Y','Z','A','B','C','D', 'E' },
{ 'G','H','I','J','K','L','M','N','O','P','Q','R','S ','T','U','V','W','X','Y','Z','A','B','C','D','E', 'F' },
{ 'H','I','J','K','L','M','N','O','P','Q','R','S','T ','U','V','W','X','Y','Z','A','B','C','D','E','F', 'G' },
{ 'I','J','K','L','M','N','O','P','Q','R','S','T','U ','V','W','X','Y','Z','A','B','C','D','E','F','G', 'H' },
{ 'J','K','L','M','N','O','P','Q','R','S','T','U','V ','W','X','Y','Z','A','B','C','D','E','F','G','H', 'I' },
{ 'K','L','M','N','O','P','Q','R','S','T','U','V','W ','X','Y','Z','A','B','C','D','E','F','G','H','I', 'J' },
{ 'L','M','N','O','P','Q','R','S','T','U','V','W','X ','Y','Z','A','B','C','D','E','F','G','H','I','J', 'K' },
{ 'M','N','O','P','Q','R','S','T','U','V','W','X','Y ','Z','A','B','C','D','E','F','G','H','I','J','K', 'L' },
{ 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z ','A','B','C','D','E','F','G','H','I','J','K','L', 'M' },
{ 'O','P','Q','R','S','T','U','V','W','X','Y','Z','A ','B','C','D','E','F','G','H','I','J','K','L','M', 'N' },
{ 'P','Q','R','S','T','U','V','W','X','Y','Z','A','B ','C','D','E','F','G','H','I','J','K','L','M','N', 'O' },
{ 'Q','R','S','T','U','V','W','X','Y','Z','A','B','C ','D','E','F','G','H','I','J','K','L','M','N','O', 'P' },
{ 'R','S','T','U','V','W','X','Y','Z','A','B','C','D ','E','F','G','H','I','J','K','L','M','N','O','P', 'Q' },
{ 'S','T','U','V','W','X','Y','Z','A','B','C','D','E ','F','G','H','I','J','K','L','M','N','O','P','Q', 'R' },
{ 'T','U','V','W','X','Y','Z','A','B','C','D','E','F ','G','H','I','J','K','L','M','N','O','P','Q','R', 'S' },
{ 'U','V','W','X','Y','Z','A','B','C','D','E','F','G ','H','I','J','K','L','M','N','O','P','Q','R','S', 'T' },
{ 'V','W','X','Y','Z','A','B','C','D','E','F','G','H ','I','J','K','L','M','N','O','P','Q','R','S','T', 'U' },
{ 'W','X','Y','Z','A','B','C','D','E','F','G','H','I ','J','K','L','M','N','O','P','Q','R','S','T','U', 'V' },
{ 'X','Y','Z','A','B','C','D','E','F','G','H','I','J ','K','L','M','N','O','P','Q','R','S','T','U','V', 'W' },
{ 'Y','Z','A','B','C','D','E','F','G','H','I','J','K ','L','M','N','O','P','Q','R','S','T','U','V','W', 'X' },
{ 'Z','A','B','C','D','E','F','G','H','I','J','K','L ','M','N','O','P','Q','R','S','T','U','V','W','X', 'Y' } };
//Mesaj sınıfı değişken ve metodlarının deklarasyonu
class Mesaj
{
private:
char* pCMesaj;
char* pSMesaj;
char* pAnahtar;
public:
Mesaj();
void MesajAl();
void AnahtarAl();
void MesajSifrele();
void MesajCozumle();
void Menu();
~Mesaj();
};
//Varsayılan Kurucu
Mesaj::Mesaj()
{
}
// Mesajı al...
void Mesaj::MesajAl()
{
char *pGecici=new char[256];
cin.getline(pGecici,256,'\n');
cout<<endl;
pCMesaj = new char[strlen(pGecici)+1];
strcpy(pCMesaj, pGecici);
pSMesaj = new char[strlen(pGecici)+1];
strcpy(pSMesaj,pGecici);
delete[] pGecici;
}
//Anahtarı al...
void Mesaj::AnahtarAl()
{
char *pGecici = new char[32];
cout<<"Anahtari giriniz ve enter tusuna basiniz..." <<endl;
cin.getline(pGecici, 32, '\n');
cout<<endl;
pAnahtar = new char[strlen(pCMesaj)+1];
strcpy(pAnahtar,pCMesaj);
int i, j;
for(i = 0, j = 0; i < strlen(pCMesaj), j < strlen(pCMesaj); i++, j++)
{
if(pGecici[j] && pAnahtar[i])
{
pAnahtar[i] = pGecici[j];
}
else if(pGecici[j] == '\0')
{
j = -1;
i--;
}
else
break;
}
delete[] pGecici;
}
//Mesajı şifrele....
void Mesaj::MesajSifrele()
{
int saga, asagiya;
int i, j;
cout << "Mesaj sifrelendi..." << endl;
cout << endl <<pCMesaj<<endl<<pAnahtar << endl << endl;
for(j = 0; j < strlen(pSMesaj); j++)
{
for(i = 0; i < 26; i++)
{
if( !(isalpha(pCMesaj[j])))
{
saga = 30;
break;
}
if( ( toupper(pCMesaj[j]) == tablo[0][i]))
{
saga = i;
break;
}
}
for(i = 0; i < 26; i++)
{
if( !(isalpha(pCMesaj[j])))
{
asagiya = 30;
break;
}
if( ( toupper(pAnahtar[j]) == tablo[i][0]))
{
asagiya = i;
break;
}
}
if(saga != 30 && asagiya != 30)
pSMesaj[j] = tablo[asagiya][saga];
}
cout << pSMesaj << endl << endl;
}
//Mesajı çözümle....
void Mesaj::MesajCozumle()
{
int asagiya, saga, i, j;
cout << "Mesaj cozumlendi..." << endl;
cout << endl << pSMesaj << endl << pAnahtar << endl << endl;
for(j = 0; j < strlen(pSMesaj); j++)
{
for(i = 0; i < 26; i++)
{
if( !(isalpha(pAnahtar[j])))
{
saga = 30;
break;
}
if( ( toupper(pAnahtar[j]) == tablo[0][i]))
{
saga = i;
break;
}
}
for(i = 0; i < 26; i++)
{
if( !(isalpha(pSMesaj[j])))
{
asagiya = 30;
break;
}
if( ( toupper(pSMesaj[j]) == tablo[i][saga]))
{
asagiya = i;
break;
}
}
if(asagiya != 30)
pCMesaj[j] = tablo[asagiya][0];
}
cout << pCMesaj << endl;
}
void Mesaj::Menu()
{
cout<<"1-Mesaji sifrele..."<<endl;
cout<<"2-Sifrelenmis mesaji cozumle ..."<<endl;
cout<<"3-Programdan cik"<<endl;
cout<<"seciminiz giriniz...:";
cin>>secim;
}
//Yıkıcı
Mesaj::~Mesaj()
{
delete[] pCMesaj;
delete[] pSMesaj;
delete[] pAnahtar;
}
//Main fonksiyonu
int main()
{
//Mesaj sınfından mesaj nesnesi oluşturuldu...
Mesaj mesaj;
mesaj.Menu();
if(secim==1){
cout<<"Sifrelemek istediginiz mesaji giriniz ve enter tusuna basiniz...";
mesaj.MesajAl();
//mesaj.AnahtarAl();
//mesaj.MesajSifrele();
}
else if(secim==2){
cout<<"Cozumlemek istediginiz mesaji giriniz ve enter tusuna basiniz....";
mesaj.MesajAl();
mesaj.AnahtarAl();
mesaj.MesajCozumle();
}
else if(secim==3)
{
exit(0);
}
else
cout<<"aaaaaaaaaa";
return 0;
}