/* xnagyl2.c ZPPLS13 */ #include #include #include #define MAX_STR 50 void strinsert(char *s, int d, char *s2, int i); void strdelete(char *s, int i, int n); int main() { char s[MAX_STR] = ""; char s2[MAX_STR] = ""; char vyber; int i, n, d, len; while(vyber = getchar()) { if(vyber == 'N') { scanf("%s", &s); printf("%s",s); } else if(vyber == 'V') { scanf("%d %s", &i, &s2); len = strlen(s2); strinsert(s, len, s2, i); printf("%s",s); } else if(vyber == 'Z') { scanf("%d %d", &i, &n); strdelete(s, i, n); printf("%s\n",s); } else if(vyber == 'K') { break; } } return 0; } void strinsert(char *s, int d, char *s2, int i) { int len; char *str; str = (char *)malloc(d * sizeof(char)); len = strlen(s); if(len == 0 || MAX_STR < len + d) { printf("do retazca nie je mozne vlozit podretazec od zvolenej pozicie\n"); return; } strncpy(str, s, i); str[i] = '\0'; strdelete(s, 0, i); strcat(str, s2); strcat(str, s); strcpy(s, str); } void strdelete(char *s, int i, int n) { int j; int len; len = strlen(s); if(i+n > len || len == 0) { printf("z retazca nie je mozne vymazat znaky\n"); return; } for(j=i; j