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}