Razmaci¶
Autor zadatka: Milena Počuča <milenapocuca@uns.ac.rs>
Sa standardnog ulaza (terminala) učitati string. Prebrojati koliko razmaka string sadrži na početku i na kraju i izbaciti sve razmake. Na standardni izlaz (terminal) ispisati string pre izbacivanja razmaka, kao i string posle izbacivanja razmaka. Prebrojati razmake na početku i kraju stringa i ispisati na terminal koliko ih ima. Ukoliko se posle razmaka na kraju stringa nalazi neki karakter, nije potrebno izbacivati te razmake (pogledati drugi primer interakcije sa programom).
Primer interakcije sa programom (unet je string sa 4 razmaka na početku i 5 razmaka na kraju):
Unesite string za proveru: Lorem ipsum dolor sit amet
String pre izbacivanja razmaka:
‘ Lorem ipsum dolor sit amet ’
String posle izbacivanja razmaka:
‘Lorem ipsum dolor sit amet’
Preskoceno je 9 razmaka.
Primer interakcije sa programom (unet je string sa 4 razmaka na početku i 5 razmaka na kraju) i tacka dodata na kraj:
Unesite string za proveru: Lorem ipsum dolor sit amet .
String pre izbacivanja razmaka:
‘ Lorem ipsum dolor sit amet ’
String posle izbacivanja razmaka:
‘Lorem ipsum dolor sit amet .’
Preskoceno je 4 razmaka.
Primer rešenja¶
1#include <stdio.h>
2#include <string.h>
3#define MAX_SIZE 100
4
5
6int main()
7{
8 char str[MAX_SIZE];
9
10 printf("Unesite string za proveru: ");
11 gets(str);
12
13 printf("\nString pre izbacivanja razmaka: \n'%s'", str);
14
15 int index, i, razmaci = 0;
16
17 // sklanjanje razmaka sa pocetka
18 index = 0;
19 while(str[index] == ' ')
20 {
21 index++;
22 razmaci++; // prebrojavannje razmaka
23 }
24
25 // pomeranje svih karaktera koji nisu razmaci u levo
26 i = 0;
27 while(str[i + index] != '\0')
28 {
29 str[i] = str[i + index];
30 i++;
31 }
32 str[i] = '\0'; //NULL karaketer za kraj stringa
33
34 int duzina = strlen(str);
35 index = -1;
36 for(i = duzina - 1; i >= 0; i--) {
37 if(str[i] != ' ') { // naisli smo na prvi karakter koji nije razmak - to ce biti index poslednjeg elementa
38 index = i;
39 break;
40 }
41 razmaci++; // brojimo razmake
42 }
43
44
45 // index ce biti poslednji karakter u stringu pre pocetka razmaka na kraju, pa posle njega dodajemo NULL karakter za kraj
46 str[index + 1] = '\0';
47
48 printf("\nString posle izbacivanja razmaka: \n'%s'", str);
49
50 printf("\nPreskoceno je %d razmaka.\n", razmaci);
51
52 return 0;
53}
54