Dimitrija

Laboratoriski ISPITNI - 20/21 SP ALT

Jan 20th, 2021 (edited)
529
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.27 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #define MAX 100
  4.  
  5.  
  6. /*
  7.  
  8. Од стаднарден влез се читаат N низи од знаци (стрингови) не подолги од 80 знаци. На почетокот на програмата се читаат два цели броеви:
  9.  
  10. N - бројот на низи од знаци кои ќе се читаат и
  11. X - поместување.
  12. Секоја од вчитаните низи од знаци треба да се трансформира на тој начин што секоја од малите и големите букви (a-z, A-Z) се заменува со истата буква поместена X места понапред во азбуката (a-z). Ако се надмине опсегот на буквите во азбуката, се продолжува циклично од почетокот на азбуката. Трансформираната низа да се отпечати на СИ.
  13.  
  14. Трансформацијата да се имплементира со посебна рекурзивна функција.
  15.  
  16. Пример:
  17.  
  18. Welcome -> трансформирано со поместување 5 -> Bjqhtrj
  19.  
  20. Input
  21. 3 5
  22. Welcome to the Machine
  23. Another Brick in the Wall
  24. Shine on you crazy Diamond
  25.  
  26. Result
  27. Bjqhtrj yt ymj Rfhmnsj
  28. Fstymjw Gwnhp ns ymj Bfqq
  29. Xmnsj ts dtz hwfed Infrtsi
  30.  
  31. */
  32.  
  33. int rek(char *niza, int x){
  34.    
  35.     if (*niza != '\0'){
  36.        
  37.    
  38.     if (isalpha(*niza)){
  39.         if (isupper(*niza)){
  40.             if (*niza + x > 'Z'){
  41.                 *niza = 'A' + (*niza + x - 'Z' -1);
  42.             }
  43.             else{
  44.                 *niza+=x;
  45.             }
  46.        
  47.         }
  48.        
  49.         if (islower(*niza)){
  50.             if (*niza + x > 'z'){
  51.                 *niza = 'a' + (*niza + x - 'z'-1);
  52.             }
  53.             else{
  54.                 *niza+=x;
  55.             }
  56.        
  57.         }
  58.        
  59.     }
  60.    
  61.    
  62.     return rek(niza+1,x);
  63.  
  64.  
  65.     }
  66. }
  67.  
  68.  
  69. int main(){
  70.    
  71.     int x,n;
  72.     int i;
  73.     scanf("%d %d",&n,&x);
  74.     getchar();
  75.     char niza[MAX];
  76.     for (i=0;i<n;i++){
  77.         scanf("%[^\n]s",&niza[0]);
  78.         getchar();
  79.         rek(niza,x);
  80.         printf("%s\n",niza);
  81.     }
  82.  
  83.    
  84.  
  85.     return 0;
  86. }
Add Comment
Please, Sign In to add comment