Advertisement
KlimexuS

Untitled

Dec 15th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.63 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #include <string.h>
  4. #include <conio.h>
  5. #define N 5
  6. #define MAX_ZNAKOW 40
  7.  
  8.  
  9.  
  10. void show_arr(char arr[][MAX_ZNAKOW], int size);
  11. unsigned dodaj_napis(char* str);
  12. unsigned int ile_znakow(char* str);
  13. int usun_wyraz(char arr[][MAX_ZNAKOW], int index, int size);
  14. bool znajdz_wyraz(char*str, char arr[][MAX_ZNAKOW], int size);
  15. void uzupelnij(char arr[][MAX_ZNAKOW], int size);
  16. void wspolna(char arr[][N][MAX_ZNAKOW], int size[]);
  17.  
  18. int main()
  19. {
  20. bool znajdujesienapis = false;
  21. char tab[2][N][MAX_ZNAKOW];
  22. int nrTablicy = 0;
  23. int IloscNapisow[2];
  24.  
  25. printf("MENU\n aktualnie wyswietlana tablica : %d \n", nrTablicy+1);
  26. printf(" wpisz 1 by dodac wyraz \n 2 by wyswietlic wyrazy \n 3 by wyswietlic liczbe znakow \n 4 by usunac wyraz \n 5 by sprawdzic ile wyrazow jest w zbiorze \n 6 by sprawdzic czy wyraz nalezy do zbioru \n 7 by uzupelnic wyrazy litera a \n");
  27. char action = getch();
  28.  
  29. while(action != 'q' )
  30. {
  31. int suma;
  32. int i;
  33. int index;
  34. char wyraz;
  35. switch(action)
  36. {
  37. case '1':
  38. printf("podaj slowo\n");
  39. dodaj_napis(tab[nrTablicy][IloscNapisow[nrTablicy]]);
  40. IloscNapisow[nrTablicy] +=1;
  41. break;
  42.  
  43. case '2':
  44. printf("twoje slowa to:\n");
  45. printf("%d\n", IloscNapisow[nrTablicy]);
  46. show_arr(tab[nrTablicy], IloscNapisow[nrTablicy]);
  47. break;
  48. case '3':
  49. suma=0;
  50. for(i=0; i<IloscNapisow[nrTablicy]; i++)
  51. {
  52. suma += ile_znakow(tab[nrTablicy][i]);
  53. }
  54. printf("twoj zbior napisow ma %d znakow\n", suma);
  55. break;
  56. case '4':
  57. printf("Wybierz index wyrazu ktory chcesz usunac\n");
  58. scanf("%d", &index);
  59. IloscNapisow[nrTablicy] -= usun_wyraz(tab[nrTablicy], index, IloscNapisow[nrTablicy]);
  60. break;
  61. case '5':
  62. printf("Ilosc wyrazow to : %d \n", IloscNapisow[nrTablicy]);
  63. break;
  64. case '6':
  65.  
  66.  
  67.  
  68. znajdujesienapis = false;
  69. char str[40];
  70. printf("podaj slowo ktorego szukasz\n");
  71. scanf("%s", &str);
  72. if(znajdujesienapis=znajdz_wyraz(str, tab[nrTablicy], IloscNapisow[nrTablicy]))
  73. printf("znajduje sie napis\n");
  74.  
  75.  
  76. break;
  77.  
  78. case '7':
  79.  
  80. int g;
  81. for(g=0; g < IloscNapisow[nrTablicy]; g++)
  82. {
  83. uzupelnij(tab[nrTablicy], IloscNapisow[nrTablicy]);
  84. }
  85. printf("dopisano a do kazdego slowa\n");
  86. break;
  87.  
  88. case '8':
  89. nrTablicy = (nrTablicy+1)%2;
  90. printf("zmieniono tablice\n");
  91. break;
  92. case '9'
  93. wspolna(tab[nrTablicy], IloscNapisow[nrTablicy]);
  94. break;
  95.  
  96.  
  97.  
  98.  
  99.  
  100. }
  101. printf("MENU\n aktualnie wyswietlana tablica : %d \n", nrTablicy+1);
  102. printf(" wpisz 1 by dodac wyraz \n 2 by wyswietlic wyrazy \n 3 by wyswietlic liczbe znakow \n 4 by usunac wyraz \n 5 by sprawdzic ile wyrazow jest w zbiorze \n 6 by sprawdzic czy wyraz nalezy do zbioru \n 7 by uzupelnic wyrazy litera a \n");
  103. action = getch();
  104.  
  105.  
  106. }
  107.  
  108.  
  109.  
  110. }
  111.  
  112. unsigned dodaj_napis(char* str)
  113. {
  114. scanf("%s", str);
  115. }
  116.  
  117. void show_arr(char arr[][MAX_ZNAKOW], int size)
  118. {
  119. int i;
  120. for(i=0; i<size;i++)
  121. {
  122. printf("%s\n", arr[i]);
  123. }
  124. }
  125.  
  126. unsigned int ile_znakow(char* str)
  127. {
  128. const char *s;
  129. for (s = str; *s; ++s);
  130. return (s - str);
  131.  
  132. }
  133. int usun_wyraz(char arr[][MAX_ZNAKOW], int index, int size)
  134. {
  135. if(index > size || index < 0)
  136. return 0;
  137. int i;
  138. for(i = index; i<size-1; i++)
  139. {
  140. memcpy(arr[i], arr[i+1], ile_znakow(arr[i+1]));
  141. }
  142. return 1;
  143. }
  144. bool znajdz_wyraz(char*str, char arr[][MAX_ZNAKOW], int size)
  145. {
  146. int i;
  147. for(i=0; i<size; i++)
  148. {
  149. if(!strcmp(str, arr[i]))
  150. {
  151. return true;
  152. }
  153.  
  154. }
  155. return false;
  156. }
  157.  
  158. void uzupelnij(char arr[][MAX_ZNAKOW], int size)
  159. {
  160. int k;
  161. int i;
  162. int j;
  163. for(i=0; i<size; i++)
  164. {
  165. k = strlen(arr[i]);
  166.  
  167. for(j=k; j<40; j++)
  168. {
  169. arr[i][j]='a';
  170.  
  171. }
  172. arr[i][39] = '\0';
  173.  
  174. }
  175.  
  176. }
  177.  
  178. void wspolna(char arr[][N][MAX_ZNAKOW], int size[])
  179. {
  180. int i = 0;
  181. int j = 0;
  182. for(i; i<size[0]; i++)
  183. {
  184. for(j; j<size[1]; j++)
  185. {
  186. if(!strcmp(arr[0][i], arr[1][j]))
  187. printf( "Wyraz wspolny: %s", arr[0][i]);
  188. }
  189. }
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement