Facebook
From Kamilek, 7 Years ago, written in C.
Embed
Download Paste or View Raw
Hits: 329
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int* wyszukajIndeksZnaku(char* t, char k, int* ilosc);
  5. char* wyszukajWyrazOdZnaku(char* t, char k,int* dlugosclan);
  6. int cyfry(char* t, int* ile);
  7.  
  8.  
  9. int main()
  10. {
  11. char tab[50];
  12. char k;
  13. int* index=NULL;
  14. char* tabwyrazow=NULL;
  15. int ili=0;
  16. int ilc=0;
  17. int dlugosclan=0;
  18. int i;
  19. int max=0;
  20. fflush(stdin);
  21. printf("\n Wpisz lancuch ponizej : ");
  22. fflush(stdin);
  23. fgets (tab, 50, stdin);
  24. printf("\nOto lancuch, ktory tak uprzejmie zadeklarowales:\n %s",tab);
  25. printf("\nPodaj znak jaki chcesz wyszukac:");
  26. fflush(stdin);
  27. k=getchar();
  28. printf("\nWyszukiwany przez Ciebie znak to:%c",k);
  29. index=wyszukajIndeksZnaku(tab,k,&ili);
  30. printf("\nIndeksy miejsc, na ktorych znajduje sie poszukiwany znak:");
  31. for(i=0;i<ili;i++)
  32.     {printf(" %d ",*(index+i));
  33.     }
  34. printf("\nIlosc poszukiwanych znakow w lancuchu: %d",ili);
  35. tabwyrazow=wyszukajWyrazOdZnaku(tab,k,&dlugosclan);
  36. printf("\nWyrazy zaczynajace sie na dany znak: ");
  37. for(i=0;i<dlugosclan;i++)
  38.     {printf("%c",*(tabwyrazow+i));
  39.     }
  40. printf("\nMaxymalna cyfra w lancuchu znakow to: %d", cyfry(tab, &ilc));
  41. printf("\nLiczba cyfr w lancuchu to: %d",ilc);
  42. }
  43.  
  44. int* wyszukajIndeksZnaku(char* t, char k,int* ilosc)
  45. {
  46. int i=0,j=0;
  47. int *p=NULL;
  48. p=(int*)malloc((j+1)*sizeof(int));
  49.     for(i=0;*(t+i)!='\0';i++){
  50.         if(*(t+i)==k){
  51.         *(p+j)=i;
  52.         j++;
  53.         p=(int*)realloc(p,(j+1)*sizeof(int));
  54.         *ilosc=*ilosc+1;
  55.  
  56.     }
  57.     }
  58. return p;
  59. }
  60. char* wyszukajWyrazOdZnaku(char* t, char k, int* dlugosclan)
  61. {   int i,j=0,h;
  62.     char* p=NULL;
  63.     p=(char*)malloc((j+1)*sizeof(char));
  64.  
  65.     for(i=0;*(t+i)!='\0';i++)
  66.     {       if(i==0 && *(t+i)==k)
  67.             for(h=i;*(t+h)!='\0' && *(t+i)!=' ';h++)
  68.             {
  69.                 *(p+j)=*(t+h);
  70.                 j++;
  71.                 p=(char*)realloc(p,(j+1)*sizeof(char));
  72.                 i=h;
  73.             }
  74.             if(i!=0 && *(t+i)==k && *(t+i-1)==' ')
  75.             for(h=i;*(t+h)!='\0' && *(t+i)!=' ';h++)
  76.             {
  77.                 *(p+j)=*(t+h);
  78.                 j++;
  79.                 p=(char*)realloc(p,(j+1)*sizeof(char));
  80.                 i=h;
  81.             }
  82.     }
  83.     *dlugosclan=j;
  84.     return p;
  85. }
  86. int cyfry(char* t, int* ile)
  87. {int i,j=0;
  88. char* p=NULL;
  89. int max;
  90. p=(char*)malloc((j+1)*sizeof(char));
  91.     for(i=0;*(t+i)!='\0';i++)
  92.     {
  93.         if(*(t+i)>='0' && *(t+i)<='9')
  94.         {
  95.             *(p+j)=*(t+i);
  96.             j++;
  97.             p=(char*)realloc(p,(j+1)*sizeof(char));
  98.         }
  99.     }
  100.     max=(*p)-'0';
  101.     for(i=0;i<j;i++)
  102.         max=(*(p+i)-'0')>max ? (*(p+i)-'0'):max;
  103. *ile=j;
  104.     return max;
  105.  
  106. }
  107.