/* T5 zadatak 10 - U datom stringu:
a) odrediti broj reči;
b) broj reči koje počinju sa M;
c) broj reči čiji su prvi i poslednji znak jednaki;
d) odrediti dužinu najkraće reči */
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char str1[101],str2[101];
int i,brReci=0,duzina,brReciM=0,istaSlova=0,min[MAX]={},duzinaMin;
char * pok = str1;
printf("Unesite prvi string:"); // unos stringa
gets(str1); // unos stringa
__fpurge(stdin); // ciscenje ulaa
duzina = strlen(str1); // duzina stringa
for(i=0;i<duzina;i++){
if(str1[i]==' ' || str1[i+1]=='\0') brReci++;
// ukoliko je na poziciji 'i' 'razmak' onda je to jedna
//rec ili ako je na 'i+1' poziciji kraj stringa znaci da je to jedna rec
}
printf("Broj reci u stringu je %d.\n",brReci); // ispis broja reci
if(str1[0]=='M' || str1[0]=='m') brReciM++; // ako je pocetna rec na slovo 'm' ili 'M' uvecava se
for(i=0;i<duzina;i++){
if((str1[i]==' ' && str1[i+1]=='M') || (str1[i]==' ' && str1[i+1]=='m')) brReciM++;
// prvi uslov je da je slovo 'm' posle 'razmaka' onda se uvecava
}
printf("Broj reci sa pocetnim slovom 'M' je %d.\n",brReciM); // ispis broja reci koje pocinju sa 'm' 'M'
pok = strtok (str1," "); // strtok isece string do 'razmaka'
i=0;
while(pok!=NULL){ //radi sve dok ne dodje do kraja stringa
strcpy(str2,pok); // kopira rec u drugi string
int duz=strlen(str2); // uzme duzinu stringa
min[i]=duz; //niz duzina svih reci
i++;
if(str2[0]==str2[duz-1]){ //uporedi da li je isto prvo i poslednje slovo
istaSlova++; // ako jeste uveca se
}
pok = strtok (NULL, " "); //uzme novi deo stringa tj novu rec
}
printf("Broj reci sa istim pocetnim i krajnjim slovom je %d.\n",istaSlova); //ispis
duzinaMin = min[0]; // uzme prvu vr kao najmanju
for(i=0;i<duzina;i++){
if(duzinaMin > min[i] && min[i]!=0){ // i poredi sa ostalima kako duzina ne moze da bude 0 iskljucujemo to
duzinaMin=min[i]; //standardno trazenje min vrednosti u nizu
}
}
printf("Najkraca rec ima %d slova.\n",duzinaMin); //ispis
return 0;
}