View difference between Paste ID: XfZQw3ny and CsFpCZd9
SHOW: | | - or go back to the newest paste.
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;
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
}