Advertisement
Guest User

Untitled

a guest
Apr 18th, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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')){
  16. pozicija_r = i;
  17. ++i;
  18. }
  19. else if (!islower(s[i])) return NULL;
  20. }
  21. int n = i;
  22. d_a = pozicija_r ;
  23. d_b = n - d_a - 2;
  24. char *a, *b;
  25. a=(char*)malloc((d_a+1)*sizeof(char));
  26. b=(char*)malloc((d_b+1)*sizeof(char));
  27.  
  28. for(i = 0; i < d_a; ++i) a[i] = s[i];
  29. a[d_a]= '\0';
  30.  
  31. int j = 0;
  32. for(i = d_a+2; i < n; ++i) b[j++] = s[i];
  33. b[d_b]= '\0';
  34. j=0;
  35. int pozicija = d_b;
  36. for(i = d_b-1; i >= 0; --i)
  37. if (b[i] ==a[j]){
  38. pozicija = i;
  39. break;
  40. }
  41. char *copy_b;
  42. if (pozicija == d_b){
  43. copy_b =(char*)malloc((d_b+1)*sizeof(char));
  44. for(i = 0; i < d_b; ++i)
  45. copy_b[i] = b[i];
  46. copy_b[d_b]='\0';
  47.  
  48. }
  49. else{
  50. copy_b =(char*)malloc((d_b-d_a+1)*sizeof(char));
  51. j = 0;
  52. for(i = 0; i < d_b; ++i){
  53. if(i == pozicija) i = i+d_a;
  54. copy_b[j++] = b[i];
  55. }
  56. copy_b[d_b-d_a+1]='\0';
  57. }
  58. free(a);
  59. free(b);
  60. return copy_b;
  61. }
  62. int main(void){
  63. char *z=izvrsi1("xyRMxfxygxyt");
  64. if(z)puts(z),free(z);
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement