Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.86 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define SUBOR "osemsmerovka.txt"
  5. #define VELKOST_ABECEDY 26
  6. #define VELKOST_INDEXU 5
  7.  
  8. char** nacitanie_suboru(int *riadok, int *stlpec, int *pocet_slov){
  9. char **osemsmerovka;
  10. FILE *fr;
  11. if ((fr=fopen(SUBOR, "r"))==NULL){
  12. printf("Subor sa nepodarilo otvort.\n");
  13. return 0;
  14. }
  15. fscanf(fr, "%d %d\n", riadok, stlpec);
  16. printf("%d %d\n", *riadok, *stlpec);
  17. osemsmerovka = (char **) malloc (*riadok * sizeof(char *));
  18.  
  19. for (int i=0; i<*riadok;i++){
  20. osemsmerovka[i] = (char *) malloc (*stlpec * sizeof(char));
  21. for (int j=0; j<*stlpec; j++) {
  22. fscanf(fr, "%c", &osemsmerovka[i][j]);
  23. }
  24. fgetc(fr);
  25. }
  26. char c;
  27. int n=0;
  28. //Pocet slov
  29. while ((c=getc(fr))!=EOF){
  30. if (c=='\n')
  31. n++;
  32. }
  33. n=n-1;
  34. *pocet_slov=n;
  35.  
  36.  
  37. if (fclose(fr)==EOF){
  38. printf("Subor sa nepodarilo zatovrit.\n");
  39. return 0;
  40. }
  41. return osemsmerovka;
  42. }
  43.  
  44. char nacitanie_slov(int pocet_slov, int riadok){
  45. char *slova;
  46. FILE *fr;
  47. if ((fr=fopen(SUBOR, "r"))==NULL){
  48. printf("Subor sa nepodarilo otvort.\n");
  49. return 0;
  50. }
  51. slova = (char *) malloc(pocet_slov * sizeof(char));
  52. char c;
  53. int n=0;
  54. while ((c=getc(fr))!=EOF){
  55. if (c=='\n')
  56. n++;
  57. if (n-1==riadok)
  58. break;
  59. }
  60. int i = 0;
  61. while ((fscanf(fr, "%s,", &slova[i]))!=EOF) {
  62. if (slova[i] == '\n')
  63. i++;
  64. printf("%s\n", slova);
  65. }
  66.  
  67. if (fclose(fr)==EOF){
  68. printf("Subor sa nepodarilo zatovrit.\n");
  69. return 0;
  70. }
  71. return *slova;
  72. }
  73.  
  74. int** vytvor_abecedu(int velkost, int velkost_indexu){
  75. int **abeceda = (int **) malloc(velkost * sizeof(int *));
  76. for (int i=0; i<velkost; i++){
  77. abeceda[i] = (int *) malloc(velkost_indexu * sizeof(int));
  78. memset(abeceda[i], -1, velkost_indexu);
  79. }
  80. return abeceda;
  81. }
  82.  
  83. void vypis_maticu(char **matica, int riadok, int stlpec){
  84. for (int i=0; i<riadok; i++){
  85. for (int j=0; j<stlpec; j++){
  86. printf("%c", matica[i][j]);
  87. }
  88. putchar('\n');
  89. }
  90. }
  91. int *zvacsi_velkost(int **matica, int riadok, int stlpec, int index[]){
  92. char c='A';
  93. int pocet=0;
  94. for (int i=0; i<VELKOST_ABECEDY; i++){
  95. for (int j=0; j<stlpec; j++){
  96. for (int k=0; k<stlpec; k++) {
  97. if (matica[j][k] == c) {
  98. pocet++;
  99. index[i] = matica[j][k];
  100. printf("%d%d ", index[j], index[k]);
  101. }
  102. }
  103. }
  104. if (i>VELKOST_ABECEDY)
  105. index = realloc(index, VELKOST_INDEXU * sizeof(int));
  106. pocet=0;
  107. c++;
  108. }
  109. return index;
  110. }
  111. void pocet_vyskytov(char **matica, int riadok, int stlpec, int **abeceda){
  112. char c='A';
  113. int pocet=0;
  114. for (int i=0; i<VELKOST_ABECEDY;i++){
  115. for (int j=0; j<riadok; j++){
  116. for (int k = 0; k < stlpec ; k++) {
  117. if (matica[j][k]==c) {
  118. *abeceda[i] = ++pocet;
  119. }
  120. }
  121. }
  122. pocet=0;
  123. c++;
  124. }
  125. char pismeno='A';
  126. for (int m=0; m<VELKOST_ABECEDY; m++)
  127. printf("%c:%d\n", pismeno++, *abeceda[m]);
  128. }
  129.  
  130.  
  131.  
  132. int main(){
  133. int **abeceda = vytvor_abecedu(VELKOST_ABECEDY, VELKOST_INDEXU);
  134. int riadok = 0, stlpec = 0, pocet_slov=0;
  135. int vyskyt[26];
  136. char *slova;
  137. int index[VELKOST_INDEXU];
  138. char **osemsmerovka = nacitanie_suboru(&riadok, &stlpec, &pocet_slov);
  139. vypis_maticu(osemsmerovka, riadok, stlpec);
  140. nacitanie_slov(pocet_slov, riadok);
  141. zvacsi_velkost(abeceda, riadok, stlpec, index);
  142. putchar('\n');
  143. pocet_vyskytov(osemsmerovka, riadok, stlpec, abeceda);
  144. return 0;
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement