Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Napisite funkciju
- char *izvrsi1(char* s)
- koja prvo provjerava je li argument s oblika aRMb, gdje su a i b neki (pod)stringovi koji se sastoje samo od malih
- slova, te ako nije, vraca nul-pointer. U suprotnom, vraca dinamicki alociranu kopiju stringa b iz koje je (ako postoji)
- izbacena posljednja pojava podstringa a. Argument ne smijete mijenjati. Duljina argumenta nije odozgo ogranicena.
- Primjer: izvrsi1("xyRMxfxygxyt") vraca "xfxygt". */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include<ctype.h>
- char *izvrsi1(char* s){
- int i, d_a = 0, d_b = 0, pozicija_r;
- for(i = 0; s[i] ='\0'; ++i){
- if ((s[i] = 'R')&&(s[i+1]=='M')){
- pozicija_r = i;
- ++i;
- }
- else if (!islower(s[i])) return NULL;
- }
- int n = i;
- d_a = pozicija_r ;
- d_b = n - d_a - 2;
- char *a, *b;
- a=(char*)malloc((d_a+1)*sizeof(char));
- b=(char*)malloc((d_b+1)*sizeof(char));
- for(i = 0; i < d_a; ++i) a[i] = s[i];
- a[d_a]= '\0';
- int j = 0;
- for(i = d_a+2; i < n; ++i) b[j++] = s[i];
- b[d_b]= '\0';
- j=0;
- int pozicija = d_b;
- for(i = d_b-1; i >= 0; --i)
- if (b[i] ==a[j]){
- pozicija = i;
- break;
- }
- char *copy_b;
- if (pozicija == d_b){
- copy_b =(char*)malloc((d_b+1)*sizeof(char));
- for(i = 0; i < d_b; ++i)
- copy_b[i] = b[i];
- copy_b[d_b]='\0';
- }
- else{
- copy_b =(char*)malloc((d_b-d_a+1)*sizeof(char));
- j = 0;
- for(i = 0; i < d_b; ++i){
- if(i == pozicija) i = i+d_a;
- copy_b[j++] = b[i];
- }
- copy_b[d_b-d_a+1]='\0';
- }
- free(a);
- free(b);
- return copy_b;
- }
- int main(void){
- char *z=izvrsi1("xyRMxfxygxyt");
- if(z)puts(z),free(z);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement