Advertisement
KlimexuS

Untitled

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