amermo

Izbaci najkracu rijec iz stringa

Feb 14th, 2015
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.99 KB | None | 0 0
  1. /*Izbaci najkracu rijec iz stringa*/
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. int slovo(char c)
  8. {
  9.     if(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z')
  10.         return 1;
  11.     return 0;
  12. }
  13.  
  14. void izbaci(char *string)
  15. {
  16.     int min, counter, prva = 1;
  17.     char* p, *q;
  18.  
  19. /*Trazenje rijeci s najmanje slova - algoritam poredjenja s prvom rijeci*/
  20.  
  21.     while(*string != '\0')
  22.     {
  23.         counter = 0;
  24.         if(slovo(*string)==1)
  25.         {
  26.             /*Prebrojavamo slova dok god pokazivac pokazuje na slovo*/
  27.             int i;
  28.             for(i=0; slovo(string[i])==1; i++)
  29.             {
  30.                 counter++;
  31.             }
  32.             /*Ovaj uslov ce biti ispunjen samo u prvoj iteraciji, odnosno dok pokazivac ne prodje prvu rijec*/
  33.  
  34.             if(prva==1)
  35.             {
  36.                 min = counter;
  37.                 p = string;
  38.                 q = string + counter + 1;
  39.                 /*U min smjestamo broj slova te rijeci, pokazivac p stavljamo na prvo slovo prve rijeci, a pokazivac q na prvo slovo naredne rijeci*/
  40.             }
  41.             /*Svaka sljedeca iteracija nece zadovoljiti uslov prva == 1, pa poredimo sada broj slova svake rijeci sa prvom*/
  42.  
  43.             if(counter < min)
  44.             {
  45.                 min = counter;
  46.                 p = string;
  47.                 q = string + counter + 1;
  48.                 /*Ako smo je nasli zabiljezimo "koordinate" pokazivaca, analogno gore, p na pocetak te rijeci, a q na pocetak prve naredne*/
  49.             }
  50.             prva = 0; /*Nakon prve iteracije ovo je postalo 0*/
  51.             string+= counter; /*Predji na razmak*/
  52.         }
  53.         string++;
  54.     }
  55.     /*Klasicno izbacivanje odnosno izguravanje rijeci iz stringa*/
  56.     /*Imamo pocetak rijeci koje treba izbaciti, i pokazivac na narednu, i idemo overwrite p i q*/
  57.     while(*(q-1) != '\0')
  58.     {
  59.         *p++=*q++;
  60.     }
  61.  
  62. }
  63. int main()
  64. {
  65.     char string[100] = "Izbaci mene rijeci ovu ne sigurno";
  66.     izbaci(string);
  67.     puts(string);
  68. }
Advertisement
Add Comment
Please, Sign In to add comment