Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

c++ szyfr płotkowy, rozmieszczenie liter

Ostatnio zmodyfikowano 2018-10-22 21:44
Autor Wiadomość
we3te4
Temat założony przez niniejszego użytkownika
c++ szyfr płotkowy, rozmieszczenie liter
» 2018-10-22 21:04:17
Oto następujący kod szyfru płotkowego. Mam problem ze zrozumieniem tego jak działa rozmieszczenie liter na 'płotku'
dziękuję z góry za pomoc.

#include <iostream>
#include <regex>
#include <fstream>

using namespace std;

void Szyfrowanie(){
    string tekst;
    cout<<"Podaj tekst: ";
    cin>>tekst;

    //usuwanie białych znaków z wiadomości
    //tekst = regex_replace(tekst, regex("\S+"), ""); //regex zajmuje sie wyrazeniamy regularnymi

    cout<<"Podaj klucz: ";
    int klucz;
    cin>>klucz;

    char plotek[klucz][tekst.length()];

    //STWORZENIE PUSTEJ TABLICY
    for(int i=0; i<klucz; i++){
        for(int j=0; j<tekst.length(); j++) {
        plotek[i][j] = '.';
        }
    }

    //umieszczanie liter jedna po druegiej w macierzy w zig-zag
    int row = 0;
    int check = 0;
    for(int i=0; i<tekst.length(); i++){
        if(check==0){
            plotek[row][i]=tekst[i];
            row++;
            if(row==klucz){
                check = 1;
                row--;
            }
        }
        else if(check==1){
                row--;
                plotek[row][i]=tekst[i];
                if(row==0){
                    check=0;
                    row=1;
                }
                }
    }
    //tworzenie zaszyfrowanego tekstu
    string Zaszyfrowany = "";
    for(int i=0; i<klucz; i++){
        for(int j=0; j<tekst.length(); j++){
        cout << plotek[i][j];
        Zaszyfrowany += plotek[i][j];
        }
        cout<<endl;

    }
    //usunięcie kropek z zaszyfrowanego tekstu
    Zaszyfrowany = regex_replace(Zaszyfrowany, regex("\\."), "");
    cout <<"Zaszyfrowany tekst: " <<endl <<Zaszyfrowany;

    //ZAPIS ZASZYFROWANEGO TEKSTU DO PLIKU
        fstream plik;
        plik.open("zaszyfrowany.txt",ios::out);
        plik<<Zaszyfrowany<<endl;
        plik.close();
        plik.clear();
}

int main()
{
    cout<<"1. Szyfruj "<<endl;
    cout<<"2. Deszyfruj "<<endl;
    int wybor;
    cin>>wybor;

    if(wybor==1)
    {
        cout<<"Szyfrowanie "<<endl;
        Szyfrowanie();
    }
 
    else
    {
       cout<<"Zly wybor. Sprobuj jeszcze raz. "<<endl;
    }

    return 0;
}
 
P-172644
pekfos
» 2018-10-22 21:28:55
Zadaj konkretne pytanie.
P-172647
we3te4
Temat założony przez niniejszego użytkownika
odp
» 2018-10-22 21:44:19
chciałbym wiedzieć jak działa te rozmieszczenie liter w tzw. 'zig-zag'
bo wiem, że gdy zaczynamy w pierwszym i ostatnim rzędzie to jest trochę inaczej niż w środkowych
P-172648
« 1 »
  Strona 1 z 1