Guest User

Untitled

a guest
Feb 21st, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.22 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <fstream>
  4. #include <stdlib.h>
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. int wys;//wysokosc płotka
  10. char tab[100];//przed szyfr
  11. char tab2[100];//po szyfr
  12. char tab3[100];//po deszyfr
  13. FILE *infile;//plik wejsciowy
  14. FILE *outfile1;//plik wyjsciowy 1 szyfr
  15. FILE *outfile2;//plik wyjsciowy 2 deszyfr
  16. int odl;//odległosc pomieedzypłotkami
  17. int zmiana1;// zmiana odleglosci pomiedzy znakami płotka
  18. int licz=0;//licznik przesuniecia
  19. int fortel;//licznik tablicy
  20. int lampa=0;//dlugosc ciagu znaków w tablicy
  21. int b=0;//licznike przeskowków
  22. cout<<"podaj wyskosc płotka"<<endl;//wypisanie komunikatu na konsoli
  23. cin>>wys;//wczytannie wartosci podanej przez uzytkownika
  24. odl=wys*2-2;//wylicznie odleglosci pomiedzy najwyzszymi punktami płotka
  25. zmiana1=odl;//przypisanie zmianiie odleglosci wartosci zmiennej "odl"
  26. fortel=0;// wyzerowanie licznika tablic
  27.  
  28.  
  29.  
  30.  
  31. infile=fopen("plik.txt", "r+t");//otwarcie pliku z danymi textowymi
  32. if ( ! infile ) return 0;//sprawdzenie poprawnosci otwarcia jesli nie przerwanie dzialania programu
  33.  
  34. outfile1=fopen("kodowanie.txt", "w");//otwarcie pliku z danymi textowymi
  35. if ( ! outfile1 ) return 0;//sprawdzenie poprawnosci otwarcia jesli nie przerwanie dzialania programu
  36.  
  37. outfile2=fopen("rozkodowanie.txt", "w");//otwarcie pliku z danymi textowymi
  38. if ( ! outfile2) return 0;//sprawdzenie poprawnosci otwarcia jesli nie przerwanie dzialania programu
  39.  
  40.  
  41. fscanf(infile,"%[^\n]",tab);//wczytanie danych tekstowych z pliku do momentu wykrycia znaku końca lini
  42. lampa=strlen(tab);//przypisanie zmiennej lapa wartsci rownej długości ciągu znaków w tablicy
  43. cout<<"tekst do szyfrowania"<<endl<<tab<<endl;//wypisanie komunikatu na konsoli
  44.  
  45. lampa-=1;//zmniejszenie wartosci zmiennej lampa w celu usprawnienia dzialania petli
  46. for(int a=0;a<wys;a++) //petla główna początek szyfrowania
  47. {
  48. for(b;b<=lampa;b+=zmiana1)//petla szyfrujaca i wypisujaca
  49. {
  50. cout<<tab[b];//wypisanie element tablicy o indeksie rownym wartości zmiennej b
  51. tab2[fortel]=tab[b];//przypisanie wartosci komórki tablicy pierwszej o indeksie równym
  52. //wartosci zmiennej b do komórki tablicy drugiej o indeksie równym
  53. //wartosci zmiennej fortel
  54. if((a!=wys-1)&&a!=0)//sprawdzenie czy zmienna a nie jest równa wysokości płotka i 0
  55. {
  56. zmiana1=odl-zmiana1;//przypisanie wartosci dla zmienej zmiana1
  57. }
  58. else
  59. {
  60. zmiana1=odl;//przypisanie wartosci dla zmienej zmiana1
  61. }
  62. fortel++; //inkrmentacja zmiennj fortel
  63. for(int i=1;i<zmiana1;i++)//pętla odzielajaca poszczególne znaki w czasie wypisywania na konsoli
  64. {
  65. cout<<" ";
  66. }
  67. }
  68.  
  69. licz+=2;//zwikeszenie poprzedniej wartosci zmiennej licz o dwa
  70. zmiana1=licz;//przypisanie zmiennej zmmiana1 wartosci zmiennej licz
  71. b=a+1;//przypisanie wartosci zmiennej b wartosci zmiennej a zwiekszonej o 1
  72. cout<<endl;//przejscie kursora do nowej lini
  73.  
  74. for(int i=0;i<=a;i++)//petala odsuwajaca kursor podczas wypisywania płotka
  75. {
  76. cout<<" ";
  77. }
  78. }
  79.  
  80. cout<<endl<<"tekst po szyfrowaniu: "<<endl;//wypisanie komuniaktu
  81.  
  82. for(int i=0;i<=lampa;i++)//petla wypisujaca zawartosc tablicy drugiej
  83. {
  84. cout<<tab2[i];//wypiannie wartosci komórki tablicy drugiej o indeksie i
  85. }
  86. b=0;// wyzerowanie wartosci zmiennej be na potrzeby deszyfracji
  87. licz=0;//wyzerownie licznika
  88. zmiana1=odl;//przywrócenie poczatkoweej wartosci dla zmiennej zmiana 1;
  89. fortel=0;//wyzerowanie licznika tablicy
  90. cout<<endl;//przejscie kursora do nowej lini na konsoli
  91.  
  92. for(int a=0;a<wys;a++)//poczatek petli głownej deszyfrujacej
  93. {
  94. for(b;b<=lampa;b+=zmiana1)//petla deszyfrujac i wypisujaca
  95. {
  96. cout<<tab2[fortel];//wypisanie element tablicy drugiej o indeksie rownym wartości zmiennej fortel
  97. tab3[b]=tab2[fortel];//przypisanie wartosci komórki tablicy drugiej o indeksie równym
  98. //wartosci zmiennej fortel do komórki tablicy trzeciej o indeksie równym
  99. //wartosci zmiennej b
  100. if((a!=wys-1)&&a!=0)//sprawdzenie czy zmienna a nie jest równa wysokości płotka i 0
  101. {
  102. zmiana1=odl-zmiana1;//przypisanie wartosci dla zmienej zmiana1
  103. }
  104. else
  105. {
  106. zmiana1=odl;//przypisanie wartosci dla zmienej zmiana1
  107. }
  108. fortel++; //inkrmentacja zmiennj fortel
  109. for(int i=1;i<zmiana1;i++)//pętla odzielajaca poszczególne znaki w czasie wypisywania na konsoli
  110. {
  111. cout<<" ";
  112. }
  113. }
  114.  
  115. licz+=2;//zwikeszenie poprzedniej wartosci zmiennej licz o dwa
  116. zmiana1=licz; //przypisanie zmiennej zmmiana1 wartosci zmiennej licz
  117. b=a+1;//przypisanie wartosci zmiennej b wartosci zmiennej a zwiekszonej o 1
  118. cout<<endl; //przejscie kursora do nowej lini
  119. for(int i=0;i<=a;i++)//petala odsuwajaca kursor podczas od brzegu wypisywania płotka
  120. {
  121. cout<<" ";
  122. }
  123. }
  124. cout<<endl<<"tekst po deszyfracji: "<<endl;//wypisanie komuniakt
  125. for(int i=0;i<=lampa;i++)//petala wypisujaca
  126. {
  127. cout<<tab3[i];//wypiasnie wartosci komórek tablicy 3
  128. }
  129. cout<<endl;
  130. fprintf(outfile1,"%s",tab2);//wpisanie zawartosci tablicy 2 do pliku
  131. fprintf(outfile2,"%s",tab3);//wpisanie zawartosci tablicy 3 do pliku
  132. fclose (infile);//zamkniecie pliku zwolnienie pamieci
  133. fclose (outfile1);//zamkniecie pliku zwolnienie pamieci
  134. fclose (outfile2);//zamkniecie pliku zwolnienie pamieci
  135. system("PAUSE");//oczekiwanie na nacisniecie klawisza przez urzytkownika
  136. return EXIT_SUCCESS;//poprawne zakonczenie dzialania programu
  137. }
Add Comment
Please, Sign In to add comment