String u stringu

Autor zadatka: Aleksandar Vasiljević <alexva02@uns.ac.rs>

Napisati program koji omogućava umetanje podstringa u polazni string na zadatu poziciju.

Na početku programa, od korisnika se zahteva da unese dva stringa, polazni (maksimalne dužine 70 karaktera) i umetnuti (maksimalne dužine 20 karaktera). Nakon toga korisnik unosi poziciju na koju želi da umetne podstring (voditi računa o tome da pozicija mora biti prirodan broj ne veći od dužine polaznog stringa). Ako korisnik unese poziciju koja premašuje dužinu polaznog stringa, ispisati poruku o grešci i završiti program. Rezultujući string (pomoć: može a ne mora biti u novom stringu) ispisati u obrnutom redosledu.

Primer rada programa:

Unesite polazni string: Ovo je primer stringa.
Unesite podstring koji zelite da umetnete u polazni string: prvog
Na koju poziciju zelite da umetnete uneti podstring (prirodan broj ne veci od 70)? 13

String nakon modifikacije: .agnirts govrp remirp ej ovO

Primer rada programa kada nije moguće umetnuti string:

Unesite polazni string: Ovo je primer stringa.
Unesite podstring koji zelite da umetnete u polazni string: prvog
Na koju poziciju zelite da umetnete uneti podstring (prirodan broj ne veci od 70)? 60

Nije moguce umetnuti string na 60. poziciju u polaznom stringu!

Primer rešenja

 1#include <stdio.h>
 2#include <string.h>
 3
 4#define DUZINA_STRINGA 70 + 1
 5#define DUZINA_PODSTRINGA 20 + 1
 6
 7int main() {
 8    char polazni[DUZINA_STRINGA], umetnuti[DUZINA_PODSTRINGA], krajnji[DUZINA_STRINGA + DUZINA_PODSTRINGA];
 9    int pozicija, i, j, k = 0;
10
11    printf("Unesite polazni string: ");
12    fgets(polazni, DUZINA_STRINGA, stdin);
13
14    int duzina_polazni = strlen(polazni);
15    if(duzina_polazni < DUZINA_STRINGA - 1) polazni[strlen(polazni) - 1] = '\0';
16
17    printf("Unesite podstring koji zelite da umetnete u polazni string: ");
18    fgets(umetnuti, DUZINA_PODSTRINGA, stdin);
19
20    int duzina_umetnuti = strlen(umetnuti);
21    if(duzina_umetnuti < DUZINA_PODSTRINGA - 1) umetnuti[strlen(umetnuti) - 1] = '\0';
22
23    do {
24        printf("Na koju poziciju zelite da umetnete uneti podstring (prirodan broj ne veci od %d)? ", DUZINA_STRINGA - 1);
25        scanf("%d", &pozicija);
26    } while (pozicija <= 0 || pozicija > DUZINA_STRINGA);
27
28    if (strlen(polazni) < pozicija) {
29        printf("\nNije moguce umetnuti string na %d. poziciju u polaznom stringu!\n", pozicija);
30    } else {
31
32        for (i = 0; i <= pozicija; i++)
33            krajnji[k++] = polazni[i];
34
35        j = i;
36
37        for (i = 0; i < strlen(umetnuti); i++)
38            krajnji[k++] = umetnuti[i];
39
40        krajnji[k++] = ' ';
41
42        for (i = j; i <= strlen(polazni); i++)
43            krajnji[k++] = polazni[i];
44
45        krajnji[k] = '\0';
46
47        printf("\nString nakon modifikacije: ");
48
49        for (i = strlen(krajnji); i >= 0; i--)
50            printf("%c", krajnji[i]);
51
52        printf("\n");
53    }
54
55    return 0;
56}