#1 2011-03-19 21:52:46

OskarF

Użytkownik

Zarejestrowany: 2011-02-03
Posty: 38
Punktów :   

4.4

Napisz program, który umożliwia szyfrowanie i deszyfrowanie podanego ciągu
znaków przy użyciu szyfru Cezara (który jest szczególnym przypadkiem szyfru
podstawieniowego monoalfabetycznego). Szyfrowanie ma realizować funkcja szyfruj,
która przyjmuje 2 parametry: pierwszy to łańcuch znaków, natomiast drugi
to przesunięcie alfabetu. Zamianie mają podlegać jedynie litery alfabetu angielskiego.
Wynikiem funkcji ma być zaszyfrowany tekst.
Przykład deklaracji funkcji:
string szyfruj(string tekst, unsigned int przesuniecie);
string deszyfruj(string tekst, unsigned int przesuniecie);
Przykład:
Szyfr Cezara z przesunięciem 1 dokonuje zamiany wg. schematu:
a -> b
b -> c
...
z -> a
Szyfr Cezara z przesunięciem 3 dokonuje zamiany wg. schematu:
a -> d
b -> e
...
z -> d







#include <iostream>
#include <string>

using namespace std;

string szyfruj(string tekst, unsigned int przesuniecie);
string deszyfruj(string tekst, unsigned int przesuniecie);

int main()
{
    unsigned int liczba;
    string tekst;
    cout<<"Witaj w programie szyfrujacym i deszyfrujacym \npodany tekst za pomoca szyfru Cezara."<<endl;
    cout<<"Podaj tekst ktory ma zostac zaszyfrowany."<<endl;
    getline(cin,tekst);
    cout<<"Podaj przesuniecie jakie ma zostac uzyte."<<endl;
    cin>>liczba;

    cout<<szyfruj(tekst,liczba)<<endl;
    cin.ignore();

    cout<<"Podaj tekst ktory ma zostac zdeszyfrowany."<<endl;
    getline(cin,tekst);
    cout<<"Podaj przesuniecie."<<endl;
    cin>>liczba;

    cout<<deszyfruj(tekst,liczba)<<endl;

    cin.get();
    return 0;
}

string szyfruj(string tekst, unsigned int przesuniecie)
{
    for(int i=0;i<tekst.size();i++)
    {
        tekst[i]=tolower(tekst[i]);
        if(tekst[i]>='a' && tekst[i]<='z')
        {
            tekst[i]+=przesuniecie;
            if(tekst[i]>'z') tekst[i]-=25; //litera a=97, z=122 : 122-97=25
        }
    }
    return tekst;
}

string deszyfruj(string tekst, unsigned int przesuniecie)
{
    for(int i=0;i<tekst.size();i++)
    {
        tekst[i]=tolower(tekst[i]);
        if(tekst[i]>='a' && tekst[i]<='z')
        {
            tekst[i]-=przesuniecie;
            if(tekst[i]<'a') tekst[i]+=25;
        }
    }
    return tekst;
}

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
przegrywanie kaset hi8 digital8 video 8 z kamery d Ciechocinek restauracje