Advertisement
Guest User

ELS SEGADORS

a guest
Nov 21st, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.04 KB | None | 0 0
  1. //Principal
  2. #include <iostream>
  3. #include <time.h>
  4. #include "Aleatori.h"
  5. #include "FuncionsEncriptacio.h"
  6.  
  7. int main()
  8. {
  9. srand((unsigned)time(NULL));
  10.  
  11. Tcodebook_entry codebook[CODEBOOK_SIZE]; //Ejercicio 2
  12. char message[100] = { "Hola Maximino" };
  13. char codificado[100];
  14. char descodificado[100];
  15.  
  16. InicialitzaCodebook(codebook);
  17. ImprimirCodebook(codebook);
  18.  
  19. cout << endl << "Mensaje a codificar: " << message << endl;
  20. CodificaMissatge(codebook, message, codificado, 100);
  21. cout << endl << "Mensaje codificado: " << codificado << endl;
  22. DecodificaMissatge(codebook, codificado, descodificado, 100);
  23. cout << endl << "Mensaje final: " << descodificado << endl;
  24.  
  25. return 0;
  26. }
  27.  
  28. //FuncionsEncriptacio.cpp
  29. #include "FuncionsEncriptacio.h"
  30.  
  31. using namespace std;
  32.  
  33. bool JaUtilitzat(Tcodebook_entry codebook[], int Pos, int Simbol) // Ejercicio 3
  34. {
  35. int i = 0; bool trobat = false;
  36.  
  37. while ((i < Pos) && (!trobat))
  38. {
  39. if (codebook[i].output == Simbol)
  40. trobat = true;
  41. else
  42. i++;
  43. }
  44. return trobat;
  45. }
  46.  
  47. void InicialitzaCodebook(Tcodebook_entry codebook[]) // Ejercicio 4
  48. {
  49. codebook[0].input = CODEBOOK_MIN;
  50. codebook[0].output = Aleatori(CODEBOOK_MIN, CODEBOOK_MAX);
  51.  
  52. for (int i = 1; i < CODEBOOK_SIZE; i++)
  53. {
  54. codebook[i].input = CODEBOOK_MIN + i;
  55. bool trobat = true;
  56.  
  57. while (trobat == true)
  58. {
  59. int simbol = Aleatori(CODEBOOK_MIN, CODEBOOK_MAX);
  60. trobat = JaUtilitzat(codebook, i, simbol);
  61. codebook[i].output = simbol;
  62. }
  63. }
  64. }
  65.  
  66. void ImprimirCodebook(Tcodebook_entry codebook[]) // Ejercicio 5
  67. {
  68. for (int i = 0; i < CODEBOOK_SIZE; i++)
  69. {
  70. cout << "Index: " << i << " Input: " << codebook[i].input << " Output: " << codebook[i].output << endl;
  71. }
  72. }
  73.  
  74. bool TradueixCodi(Tcodebook_entry codebook[], char in_code, char &out_code) // Ejercicio 6
  75. {
  76. int i = 0; bool trobat = false;
  77.  
  78. while ((i < CODEBOOK_SIZE) && (!trobat))
  79. {
  80. if (codebook[i].input == in_code)
  81. {
  82. trobat = true;
  83. out_code = codebook[i].output;
  84. }
  85. else
  86. i++;
  87. }
  88. if (!trobat)
  89. out_code = in_code;
  90.  
  91. return trobat;
  92. }
  93.  
  94. bool TradueixCodiInvers(Tcodebook_entry codebook[], char in_code, char &out_code)
  95. {
  96. int i = 0; bool trobat = false;
  97.  
  98. while ((i < CODEBOOK_SIZE) && (!trobat))
  99. {
  100. if (codebook[i].output == in_code)
  101. {
  102. trobat = true;
  103. out_code = codebook[i].input;
  104. }
  105. else
  106. i++;
  107. }
  108. if (!trobat)
  109. out_code = in_code;
  110.  
  111. return trobat;
  112. }
  113.  
  114. void CodificaMissatge(Tcodebook_entry codebook[], char inputmsg[], char outputmsg[], int msg_lenght) // Ejercicio 7
  115. {
  116. for (int i = 0; i < msg_lenght; i++)
  117. {
  118. TradueixCodi(codebook, inputmsg[i], outputmsg[i]);
  119. }
  120. }
  121.  
  122. void DecodificaMissatge(Tcodebook_entry codebook[], char encodemsg[], char decodemsg[], int msg_lenght)
  123. {
  124. for (int i = 0; i < msg_lenght; i++)
  125. {
  126. TradueixCodiInvers(codebook, encodemsg[i], decodemsg[i]);
  127. }
  128. }
  129.  
  130. //FuncionsEncriptacio.h
  131. #include <iostream>
  132. #include "Aleatori.h"
  133. #define CODEBOOK_MIN 32
  134. #define CODEBOOK_MAX 126
  135. #define CODEBOOK_SIZE CODEBOOK_MAX - CODEBOOK_MIN + 1
  136.  
  137. using namespace std;
  138.  
  139. typedef struct //Ejercicio 1
  140. {
  141. char input;
  142. char output;
  143. }Tcodebook_entry;
  144.  
  145. bool JaUtilitzat(Tcodebook_entry codebook[], int Pos, int Simbol);
  146. void InicialitzaCodebook(Tcodebook_entry codebook[]);
  147. void ImprimirCodebook(Tcodebook_entry codebook[]);
  148. bool TradueixCodi(Tcodebook_entry codebook[], char in_code, char &out_code);
  149. bool TradueixCodiInvers(Tcodebook_entry codebook[], char in_code, char &out_code);
  150. void CodificaMissatge(Tcodebook_entry codebook[], char inputmsg[], char outputmsg[], int msg_lenght);
  151. void DecodificaMissatge(Tcodebook_entry codebook[], char encodemsg[], char decodemsg[], int msg_lenght);
  152.  
  153. //Aleatori.cpp
  154. #include "Aleatori.h"
  155.  
  156. int Aleatori(int NumMin, int NumMax)
  157. {
  158. int NumAleatori;
  159.  
  160. NumAleatori = NumMin + (rand() % (NumMax - NumMin + 1));
  161.  
  162. return NumAleatori;
  163. }
  164.  
  165. //Aleatori.h
  166. #include <stdlib.h>
  167. #include <time.h>
  168. #include <iostream>
  169.  
  170. using namespace std;
  171.  
  172. int Aleatori(int, int);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement