C program u zadani string :

U navedeni string :
a ) odrediti broj riječi ;
b ) broj riječi koje počinju sa M ;
c) broj riječi čiji je prvi i zadnji znak jednaki ;
d) odrediti dužinu najkraće riječi




  1. /* T5 zadatak 10 - U datom stringu:
  2. a) odrediti broj reči;
  3. b) broj reči koje počinju sa M;
  4. c) broj reči čiji su prvi i poslednji znak jednaki;
  5. d) odrediti dužinu najkraće reči */
  6.  
  7. #include <stdio.h>
  8. #include <string.h>
  9. #define MAX 100
  10.  
  11. int main(){
  12.         char str1[101],str2[101];
  13.         int i,brReci=0,duzina,brReciM=0,istaSlova=0,min[MAX]={},duzinaMin;
  14.         char * pok = str1;
  15.  
  16.         printf("Unesite prvi string:"); // unos stringa
  17.         gets(str1);                     // unos stringa
  18.         __fpurge(stdin);                // ciscenje ulaa
  19.        
  20.         duzina = strlen(str1); // duzina stringa
  21.        
  22.         for(i=0;i<duzina;i++){
  23.                 if(str1[i]==' ' || str1[i+1]=='\0') brReci++;
  24.                                 // ukoliko je na poziciji 'i' 'razmak' onda je to jedna
  25.                                 //rec ili ako je na 'i+1' poziciji kraj stringa znaci da je to jedna rec
  26.                
  27.         }
  28.  
  29.         printf("Broj reci u stringu je %d.\n",brReci); // ispis broja reci
  30.        
  31.         if(str1[0]=='M' || str1[0]=='m') brReciM++; // ako je pocetna rec na slovo 'm' ili 'M' uvecava se
  32.        
  33.         for(i=0;i<duzina;i++){
  34.                
  35.                 if((str1[i]==' ' && str1[i+1]=='M') || (str1[i]==' ' && str1[i+1]=='m')) brReciM++;
  36.                 // prvi uslov je da je slovo 'm' posle 'razmaka' onda se uvecava
  37.         }
  38.         printf("Broj reci sa pocetnim slovom 'M' je %d.\n",brReciM); // ispis broja reci koje pocinju sa 'm' 'M'
  39.        
  40.         pok = strtok (str1," "); // strtok isece string do 'razmaka'
  41.         i=0;
  42.  
  43.         while(pok!=NULL){ //radi sve dok ne dodje do kraja stringa
  44.                
  45.                 strcpy(str2,pok); // kopira rec u drugi string
  46.                 int duz=strlen(str2); // uzme duzinu stringa
  47.                 min[i]=duz; //niz duzina svih reci
  48.                 i++;   
  49.                 if(str2[0]==str2[duz-1]){ //uporedi da li je isto prvo i poslednje slovo
  50.                         istaSlova++;    // ako jeste uveca se
  51.                 }
  52.                
  53.                 pok = strtok (NULL, " "); //uzme novi deo stringa tj novu rec
  54.         }
  55.         printf("Broj reci sa istim pocetnim i krajnjim slovom je %d.\n",istaSlova); //ispis
  56.        
  57.         duzinaMin = min[0]; // uzme prvu vr kao najmanju
  58.         for(i=0;i<duzina;i++){
  59.                 if(duzinaMin > min[i] && min[i]!=0){ // i poredi sa ostalima kako duzina ne moze da bude 0 iskljucujemo to
  60.                         duzinaMin=min[i];       //standardno trazenje min vrednosti u nizu     
  61.                 }
  62.         }
  63.         printf("Najkraca rec ima %d slova.\n",duzinaMin); //ispis
  64.         return 0;
  65. }


Learn More :