Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5.  
  6. // subprogram in care verificam daca un substring este format doar din cifre
  7. int verif(char *cuv){
  8. int lung = strlen(cuv);
  9. for (int i = 0; i < lung; i++)
  10. if ((cuv[i] < '0' || cuv[i] > '9') && cuv[i] != '\n') //trebuie sa verificam daca caracterul este diferit si de endline
  11. return 0;
  12. return 1;
  13. }
  14. //subprogram in care criptam cuvintele
  15. void encriptare(char *cuv){
  16. int key = cuv[0]; //retinem cheia
  17. int lung = strlen(cuv);
  18. if (cuv[lung-1] == '\n'){ //tratam diferit cazul in care ultimul caracter este endline
  19. cuv[lung-1] = '\0';
  20. for (int i = 1; i < lung-1; ++i){
  21. if (cuv[i] != 26) // caracterul sa fie diferit de end of file
  22. cuv[i] = ((key + cuv[i])%256); //encriptam cu cheia
  23. }
  24. }
  25. else
  26. for (int i = 1; i < lung; ++i){
  27. if (cuv[i] != 26) // sa fie diferit de end of file
  28. cuv[i] = (key + cuv[i]%256); //encriptam cu cheia
  29. }
  30. printf("%s ",cuv); //afisam cuvantul nou creat
  31. }
  32. //subprogram de citire si apelare a celorlalte subprograme
  33. void citire(){
  34. int n;
  35. scanf("%d",&n); //citim numarul de randuri
  36. char *sir_decodificat;
  37. sir_decodificat = calloc(200,sizeof(char)); //alocam dinamic sirul pe care vrem sa il codificam
  38. fgets(sir_decodificat,200,stdin); // trebuie sa citim prima data in gol pentru a putea citi fiecare linie
  39. free(sir_decodificat);
  40. for (int i = 0; i < n; i++){
  41. sir_decodificat = calloc(200,sizeof(char));
  42. fgets(sir_decodificat,200,stdin);
  43. int len = strlen(sir_decodificat);
  44.  
  45. char *cuv = strtok(sir_decodificat," "); //luam fiecare substring despartit prin spatiu si verificam daca e numar sau nu
  46. while(cuv){
  47. int result = verif(cuv);
  48. if (result == 0) // daca substringul este cuvant, il encriptam
  49. encriptare(cuv);
  50. else
  51. printf("%s ",cuv); //altfel il afisam
  52. cuv = strtok(NULL," ");
  53. }
  54. printf("\n");
  55. free(sir_decodificat); //eliberam memoria folosita
  56. }
  57.  
  58. }
  59.  
  60.  
  61. int main (){
  62.  
  63. citire(); //apelam subprogramul de citire care mai departe apeleaza restul subprogramelor
  64.  
  65. return 0;
  66.  
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement