Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <iostream>
- #include <fstream>
- #include <stdlib.h>
- using namespace std;
- int main()
- {
- int wys;//wysokosc płotka
- char tab[100];//przed szyfr
- char tab2[100];//po szyfr
- char tab3[100];//po deszyfr
- FILE *infile;//plik wejsciowy
- FILE *outfile1;//plik wyjsciowy 1 szyfr
- FILE *outfile2;//plik wyjsciowy 2 deszyfr
- int odl;//odległosc pomieedzypłotkami
- int zmiana1;// zmiana odleglosci pomiedzy znakami płotka
- int licz=0;//licznik przesuniecia
- int fortel;//licznik tablicy
- int lampa=0;//dlugosc ciagu znaków w tablicy
- int b=0;//licznike przeskowków
- cout<<"podaj wyskosc płotka"<<endl;//wypisanie komunikatu na konsoli
- cin>>wys;//wczytannie wartosci podanej przez uzytkownika
- odl=wys*2-2;//wylicznie odleglosci pomiedzy najwyzszymi punktami płotka
- zmiana1=odl;//przypisanie zmianiie odleglosci wartosci zmiennej "odl"
- fortel=0;// wyzerowanie licznika tablic
- infile=fopen("plik.txt", "r+t");//otwarcie pliku z danymi textowymi
- if ( ! infile ) return 0;//sprawdzenie poprawnosci otwarcia jesli nie przerwanie dzialania programu
- outfile1=fopen("kodowanie.txt", "w");//otwarcie pliku z danymi textowymi
- if ( ! outfile1 ) return 0;//sprawdzenie poprawnosci otwarcia jesli nie przerwanie dzialania programu
- outfile2=fopen("rozkodowanie.txt", "w");//otwarcie pliku z danymi textowymi
- if ( ! outfile2) return 0;//sprawdzenie poprawnosci otwarcia jesli nie przerwanie dzialania programu
- fscanf(infile,"%[^\n]",tab);//wczytanie danych tekstowych z pliku do momentu wykrycia znaku końca lini
- lampa=strlen(tab);//przypisanie zmiennej lapa wartsci rownej długości ciągu znaków w tablicy
- cout<<"tekst do szyfrowania"<<endl<<tab<<endl;//wypisanie komunikatu na konsoli
- lampa-=1;//zmniejszenie wartosci zmiennej lampa w celu usprawnienia dzialania petli
- for(int a=0;a<wys;a++) //petla główna początek szyfrowania
- {
- for(b;b<=lampa;b+=zmiana1)//petla szyfrujaca i wypisujaca
- {
- cout<<tab[b];//wypisanie element tablicy o indeksie rownym wartości zmiennej b
- tab2[fortel]=tab[b];//przypisanie wartosci komórki tablicy pierwszej o indeksie równym
- //wartosci zmiennej b do komórki tablicy drugiej o indeksie równym
- //wartosci zmiennej fortel
- if((a!=wys-1)&&a!=0)//sprawdzenie czy zmienna a nie jest równa wysokości płotka i 0
- {
- zmiana1=odl-zmiana1;//przypisanie wartosci dla zmienej zmiana1
- }
- else
- {
- zmiana1=odl;//przypisanie wartosci dla zmienej zmiana1
- }
- fortel++; //inkrmentacja zmiennj fortel
- for(int i=1;i<zmiana1;i++)//pętla odzielajaca poszczególne znaki w czasie wypisywania na konsoli
- {
- cout<<" ";
- }
- }
- licz+=2;//zwikeszenie poprzedniej wartosci zmiennej licz o dwa
- zmiana1=licz;//przypisanie zmiennej zmmiana1 wartosci zmiennej licz
- b=a+1;//przypisanie wartosci zmiennej b wartosci zmiennej a zwiekszonej o 1
- cout<<endl;//przejscie kursora do nowej lini
- for(int i=0;i<=a;i++)//petala odsuwajaca kursor podczas wypisywania płotka
- {
- cout<<" ";
- }
- }
- cout<<endl<<"tekst po szyfrowaniu: "<<endl;//wypisanie komuniaktu
- for(int i=0;i<=lampa;i++)//petla wypisujaca zawartosc tablicy drugiej
- {
- cout<<tab2[i];//wypiannie wartosci komórki tablicy drugiej o indeksie i
- }
- b=0;// wyzerowanie wartosci zmiennej be na potrzeby deszyfracji
- licz=0;//wyzerownie licznika
- zmiana1=odl;//przywrócenie poczatkoweej wartosci dla zmiennej zmiana 1;
- fortel=0;//wyzerowanie licznika tablicy
- cout<<endl;//przejscie kursora do nowej lini na konsoli
- for(int a=0;a<wys;a++)//poczatek petli głownej deszyfrujacej
- {
- for(b;b<=lampa;b+=zmiana1)//petla deszyfrujac i wypisujaca
- {
- cout<<tab2[fortel];//wypisanie element tablicy drugiej o indeksie rownym wartości zmiennej fortel
- tab3[b]=tab2[fortel];//przypisanie wartosci komórki tablicy drugiej o indeksie równym
- //wartosci zmiennej fortel do komórki tablicy trzeciej o indeksie równym
- //wartosci zmiennej b
- if((a!=wys-1)&&a!=0)//sprawdzenie czy zmienna a nie jest równa wysokości płotka i 0
- {
- zmiana1=odl-zmiana1;//przypisanie wartosci dla zmienej zmiana1
- }
- else
- {
- zmiana1=odl;//przypisanie wartosci dla zmienej zmiana1
- }
- fortel++; //inkrmentacja zmiennj fortel
- for(int i=1;i<zmiana1;i++)//pętla odzielajaca poszczególne znaki w czasie wypisywania na konsoli
- {
- cout<<" ";
- }
- }
- licz+=2;//zwikeszenie poprzedniej wartosci zmiennej licz o dwa
- zmiana1=licz; //przypisanie zmiennej zmmiana1 wartosci zmiennej licz
- b=a+1;//przypisanie wartosci zmiennej b wartosci zmiennej a zwiekszonej o 1
- cout<<endl; //przejscie kursora do nowej lini
- for(int i=0;i<=a;i++)//petala odsuwajaca kursor podczas od brzegu wypisywania płotka
- {
- cout<<" ";
- }
- }
- cout<<endl<<"tekst po deszyfracji: "<<endl;//wypisanie komuniakt
- for(int i=0;i<=lampa;i++)//petala wypisujaca
- {
- cout<<tab3[i];//wypiasnie wartosci komórek tablicy 3
- }
- cout<<endl;
- fprintf(outfile1,"%s",tab2);//wpisanie zawartosci tablicy 2 do pliku
- fprintf(outfile2,"%s",tab3);//wpisanie zawartosci tablicy 3 do pliku
- fclose (infile);//zamkniecie pliku zwolnienie pamieci
- fclose (outfile1);//zamkniecie pliku zwolnienie pamieci
- fclose (outfile2);//zamkniecie pliku zwolnienie pamieci
- system("PAUSE");//oczekiwanie na nacisniecie klawisza przez urzytkownika
- return EXIT_SUCCESS;//poprawne zakonczenie dzialania programu
- }
Add Comment
Please, Sign In to add comment