Advertisement
DMG

Šifra

DMG
Feb 24th, 2013
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.58 KB | None | 0 0
  1. /* Jedna od metoda za šifriranje poruka za šifriranje koristi kljuc koji postavlja rijec
  2. dutine m  (m<10) u kojoj su sva slova razlicita. Alfabetski poredak slova u toj rijeci
  3. predstavlja numericki oblik kljuca za šifriranje.
  4. Poruka koja se šifrira  ispisuje se kao niz znakova bez razmaka po redovima u tablicu
  5. koja ima m stupaca. Ukoliko na kraju ostane slobodnih mjesta, dodaju se redom slova
  6. engleskog alfabeta. Šifrirana poruka se dobija zapisujuci  ispisani  tekst ali po stupcima  i  to u
  7. poretku koj je odreCen numerickim oblikom kljuca.
  8. Slova DT, LJ i NJ se smatraju kao parovi slova D i Z, L i J, odnosno N i J. U
  9. porukama nema slova C, C, Ð, Š, T. Tako se pri šifriranju smatra da LJETO ima 5 slova (L, J,
  10. E, T, O).
  11.  
  12. Treba napisati program koji ce za dani kljuc i ocitanu poruku ispisati šifriranu poruku.
  13.    
  14. Ulazni podaci
  15. S tastature se ucitava u jednom redu kljucna rijec maksimalne dutine 9 slova, u kojoj
  16. se slova ne ponavljaju, a u drugom redu se ucitava poruka koju telimo šifrirati. Sva slova, i u
  17. kljucnoj rijeci i u poruci koju šifriramo, su mala slova engleskog alfabeta. U poruci nema
  18. razmaka.
  19.  
  20. Izlazni podaci
  21. Na ekranu se ispisuje šifrirana poruka, takoCe malim slovima i bez razmaka. */
  22. #include <iostream>
  23. using namespace std;
  24. main()
  25. {
  26.       char a[100][100];
  27.       string s, k;
  28.      
  29.       cin >> s >> k;
  30.       string p = s;  
  31.  
  32.      
  33.       int n = s.length();
  34.       int m = k.length()/n;
  35.      
  36.       if (k.length()%n!=0)
  37.          m = m + 1;
  38.          
  39.       for (int i=0; i<n - k.length()%n; i++)
  40.       k[k.length()+i] = 97+i;
  41.          
  42.       int l = 0;  
  43.       for (int i=0; i<m; i++)
  44.       for (int j=0; j<n; j++)
  45.           {
  46.                a[i][j] = k[l];
  47.                l++;
  48.           }
  49.        
  50.          
  51.       for (int i=n-2; i>=0; i--)
  52.       for (int j=0; j<=i; j++)
  53.       if (s[j] > s[j+1])
  54.       {
  55.                char t = s[j];
  56.                s[j] = s[j+1];
  57.                s[j+1] = t;
  58.       }
  59.      
  60.       // cout << s << endl;
  61.        string res = "";
  62.        
  63.       for (int i=0; i<s.length(); i++)
  64.       {
  65.           for (int j=0; j<p.length(); j++)
  66.               if (s[i] == p[j])
  67.                  {
  68.                        for (int k=0; k<m; k++)
  69.                             res = res + a[k][j];
  70.                  }
  71.       }
  72.      
  73.       cout << res << endl;
  74.      
  75.       /*
  76.       // stampanje ono kako izgleda  
  77.      
  78.       for (int i=0; i<m; i++)
  79.       { for (int j=0; j<n; j++)
  80.       cout << a[i][j] << " ";
  81.       cout << endl;
  82.       } */
  83.            
  84.       system ("PAUSE");
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement