Advertisement
KlimexuS

Untitled

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