Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <map>
- #include <ctime>
- #include <stdlib.h>
- #include <fstream>
- using namespace std;
- void wypelnij_alfabet(char tablica[]) {
- for (int i = 0; i < 26; i++) {
- tablica[i] = 97 + i;
- }
- tablica[26] = 0;
- }
- void wypelnij_kodem(char kod[]) {
- char tmp;
- int i, j;
- bool ok = false;
- i = j = 0;
- srand((unsigned)time(0));
- while (i < 26) {
- ok = false;
- while (ok == false) {
- tmp = rand()%26 + 97;
- for (j = 0; j < i && (tmp != kod[j]) && (tmp != i + 97); j++) {}
- if (j == i) ok = true;
- else ok = false;
- }
- kod[i] = tmp;
- i++;
- }
- kod[26] = 0;
- }
- void wyswietl(char tablica[], char kod[]) {
- cout<<" Kodowanie: "<<endl<<endl;
- for (int j = 0; j < 26; j++) {
- cout<<" "<<tablica[j]<<" -> "<<kod[j]<<endl;
- }
- cout<<endl;
- }
- int main (int argc, char * argv[]) {
- char tablica[27];
- char kod[27];
- int x = 1;
- int j = 0;
- ofstream file("slownik.txt");
- string tekst;
- while (x < argc) {
- tekst += argv[x];
- if (x != argc - 1) tekst += " ";
- x++;
- }
- cout<<endl<<"Tekst, ktory podales: "<<tekst<<endl;
- wypelnij_alfabet(tablica);
- wypelnij_kodem(kod);
- wyswietl(tablica, kod);
- file<<kod;
- file.close();
- map<char, char> mapa;
- map <char, char> mapa2;
- for (int i = 0; i < 26; i++) {
- mapa.insert(pair<char, char>(tablica[i],kod[i]));
- }
- map<char, char>::iterator it = mapa.begin();
- j = 0;
- tekst.c_str();
- while (tekst[j] != 0) {
- it = mapa.find(tekst[j]);
- if (tekst[j] == 32) {
- j++; continue;
- }
- else {
- tekst[j] = it->second;
- j++;
- }
- }
- ifstream plik("slownik.txt");
- j = 0;
- cout<<"Zakodowany tekst: "<<tekst<<endl;
- cout<<"Odkodowany: ";
- char znak;
- map<char, char>slownik;
- while (j < 26) {
- slownik.insert(pair<char,char>(tablica[j],plik.get()));
- j++;
- }
- j = 0;
- while (tekst[j] != 0) {
- it = slownik.begin();
- if (tekst[j] == 32) {
- j++; continue;
- }
- else {
- while ((it->second) != (tekst[j])) {
- it++;
- }
- tekst[j] = it->first;
- j++;
- }
- }
- cout<<tekst<<endl<<endl;
- plik.close();
- }
Add Comment
Please, Sign In to add comment