Advertisement
Guest User

Untitled

a guest
Apr 18th, 2015
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. /* Napisite funkciju
  2. char *izvrsi1(char* s)
  3. koja prvo provjerava je li argument s oblika aRMb, gdje su a i b neki (pod)stringovi koji se sastoje samo od malih
  4. slova, te ako nije, vraca nul-pointer. U suprotnom, vraca dinamicki alociranu kopiju stringa b iz koje je (ako postoji)
  5. izbacena posljednja pojava podstringa a. Argument ne smijete mijenjati. Duljina argumenta nije odozgo ogranicena.
  6. Primjer: izvrsi1("xyRMxfxygxyt") vraca "xfxygt". */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include<ctype.h>
  12. char *izvrsi1(char* s){
  13. int i, d_a = 0, d_b = 0, pozicija_r;
  14. for(i = 0; s[i] ='\0'; ++i){
  15. if ((s[i] = 'R')&&(s[i+1]=='M')) pozicija_r = i;
  16. else if (!islower(s[i])) return NULL;
  17. }
  18. int n = i;
  19. d_a = pozicija_r ;
  20. d_b = n - d_a - 2;
  21. char *a, *b;
  22. a=(char*)malloc((d_a+1)*sizeof(char));
  23. b=(char*)malloc((d_b+1)*sizeof(char));
  24.  
  25. for(i = 0; i < d_a; ++i) a[i] = s[i];
  26. a[d_a]= '\0';
  27.  
  28. int j = 0;
  29. for(i = d_a+2; i < n; ++i) b[j++] = s[i];
  30. b[d_b]= '\0';
  31. j=0;
  32. int pozicija = d_b;
  33. for(i = d_b-1; i >= 0; --i)
  34. if (b[i] ==a[j]){
  35. pozicija = i;
  36. break;
  37. }
  38. char *copy_b;
  39. if (pozicija == d_b){
  40. copy_b =(char*)malloc((d_b+1)*sizeof(char));
  41. for(i = 0; i < d_b; ++i)
  42. copy_b[i] = b[i];
  43. copy_b[d_b]='\0';
  44.  
  45. }
  46. else{
  47. copy_b =(char*)malloc((d_b-d_a+1)*sizeof(char));
  48. j = 0;
  49. for(i = 0; i < d_b; ++i){
  50. if(i == pozicija) i = i+d_a;
  51. copy_b[j++] = b[i];
  52. }
  53. copy_b[d_b-d_a+1]='\0';
  54. }
  55. free(a);
  56. free(b);
  57. return copy_b;
  58. }
  59. int main(void){
  60. char *z=izvrsi1("xyRMxfxygxyt");
  61. if(z)puts(z),free(z);
  62. return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement