Advertisement
Guest User

asdsa

a guest
Dec 12th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.70 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <cstdlib>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <ctype.h>
  6.  
  7. using namespace std;
  8.  
  9. void fileHandler(const char*, const char*, char** = nullptr, int* = nullptr);
  10.  
  11. void letter();
  12. void word();
  13. void line();
  14.  
  15. void securePointer(void*);
  16. void secureFile(FILE*);
  17.  
  18. char* makeArray(int);
  19. char** make2DArray(int, int);
  20.  
  21. int str_comp(const void* p1, const void* p2);
  22.  
  23. char** c;
  24. int size_c;
  25.  
  26. int main()
  27. {
  28.     c = make2DArray(256, 256);
  29.     fileHandler("be.txt", "rt", c, &size_c);
  30.     line();
  31.     word();
  32.     letter();
  33. }
  34.  
  35. void fileHandler(const char* fname, const char* mode, char** c, int* counter)
  36. {
  37.     FILE* g = fopen(fname, mode);
  38.     secureFile(g);
  39.     int i = 0;
  40.     while (!feof(g)) {
  41.         fgets(c[i], 255, g);
  42.         i++;
  43.     }
  44.     if (counter != nullptr)
  45.     {
  46.         *counter = i;
  47.     }
  48.     fclose(g);
  49. }
  50.  
  51. char* makeArray(int n)
  52. {
  53.     char* c = (char*)malloc(n * sizeof(char));
  54.     return c;
  55. }
  56.  
  57. char** make2DArray(int n, int m)
  58. {
  59.     char** c = (char**)malloc(256 * sizeof(char*));
  60.     securePointer(c);
  61.     for (int i = 0; i < 256; i++) {
  62.         c[i] = (char*)malloc(256 * sizeof(char));
  63.         securePointer(c[i]);
  64.     }
  65.     return c;
  66. }
  67.  
  68. int char_comp(const void* p1, const void* p2) {
  69.     char* char1 = (char*)p1;
  70.     char* char2 = (char*)p2;
  71.     return strcmp(char1, char2);
  72. }
  73.  
  74. int str_comp(const void* p1, const void* p2) {
  75.     char** str1 = (char**)p1;
  76.     char** str2 = (char**)p2;
  77.     return strcmp(*str1, *str2);
  78. }
  79.  
  80. void securePointer(void* ptr)
  81. {
  82.     if (ptr == nullptr)
  83.     {
  84.         puts("Nem sikerult letrehozni a pointer-t.");
  85.         exit(43);
  86.     }
  87. }
  88.  
  89. void secureFile(FILE* file)
  90. {
  91.     if (!file)
  92.     {
  93.         puts("Nem sikerult megnyitani az allomanyt.");
  94.         exit(43);
  95.     }
  96. }
  97.  
  98. void line() {
  99.  
  100.     //Valtozok deklaralasa
  101.     int i, j;
  102.     FILE* g;
  103.  
  104.     //Mondatok beolvasasa a tomb elemei kent
  105.  
  106.  
  107.     //Tomb rendezese ABC sorrendben quicksorttal
  108.     qsort(c, size_c, sizeof(char*), str_comp);
  109.  
  110.  
  111.     //A '\n' karakterek kiszedese
  112.     for (i = 0; i < size_c; i++) {
  113.         for (j = 0; j < strlen(c[i]); j++) {
  114.             if (c[i][j] == '\n') {
  115.                 c[i][j] = '\0';
  116.                 break;
  117.             }
  118.         }
  119.  
  120.     }
  121.  
  122.  
  123.     //A mondatok kiirasa a c.txt fileba
  124.     g = fopen("c.txt", "wt");
  125.     secureFile(g);
  126.     for (i = 0; i < size_c; i++) {
  127.         if (i == size_c - 1) {
  128.             fprintf(g, "%s", c[i]);
  129.         }
  130.         else {
  131.             fprintf(g, "%s\n", c[i]);
  132.         }
  133.     }
  134.  
  135.     fclose(g);
  136.  
  137. }
  138.  
  139.  
  140. void word() {
  141.  
  142.     //Valtozok deklaralasa
  143.     int i;
  144.     FILE* g;
  145.  
  146.  
  147.     //Szavas tomb lefoglalasa
  148.     char* a = makeArray(256);
  149.     char** b = make2DArray(256, 256);
  150.  
  151.     int size_b = 0;
  152.     for(int i = 0; i < size_c; ++i)
  153.     {
  154.         a = strtok(c[i], " ");
  155.         while (a != NULL)
  156.         {
  157.             strcpy(b[size_b], a);
  158.             size_b++;
  159.             a = strtok(NULL, " ");
  160.         }
  161.     }
  162.     size_b--;
  163.  
  164.  
  165.     //Tomb rendezese ABC sorrendben quicksorttal
  166.     qsort(b, size_b, sizeof(char*), str_comp);
  167.  
  168.  
  169.     //A szavak kiirasa a c.txt fileba
  170.     g = fopen("b.txt", "wt");
  171.     secureFile(g);
  172.  
  173.     for (i = 0; i < size_b; i++) {
  174.         if (i == size_b - 1) {
  175.             fprintf(g, "%s", b[i]);
  176.         }
  177.         else {
  178.             fprintf(g, "%s\n", b[i]);
  179.         }
  180.     }
  181.  
  182.     fclose(g);
  183.  
  184. }
  185.  
  186. void letter() {
  187.  
  188.     //Valtozok deklaralasa
  189.     int i;
  190.     FILE* g;
  191.  
  192.  
  193.     //Betus tomb lefoglalasa
  194.     char* a = makeArray(65536);
  195.  
  196.     int size_a = 0;
  197.     for (int i = 0; i < size_c; ++i)
  198.     {
  199.         for (int j = 0; j < strlen(c[i]); ++j)
  200.         {
  201.             a[size_a] = c[i][j];
  202.             size_a++;
  203.         }
  204.  
  205.     }
  206.  
  207.  
  208.     //A ' ' es '\n' karakter kiszedese
  209.     for (i = 0; i < size_a; i++) {
  210.         if (a[i] == ' ' || a[i] == '\n') {
  211.             for (int j = i; j < size_a; j++) {
  212.                 a[j] = a[j + 1];
  213.             }
  214.             size_a--;
  215.         }
  216.     }
  217.  
  218.  
  219.     //Tomb rendezese ABC sorrendben quicksorttal
  220.     qsort(a, size_a, sizeof(char), char_comp);
  221.  
  222.  
  223.     //A betuk kiirasa az a.txt fileba
  224.     g = fopen("a.txt", "wt");
  225.     secureFile(g);
  226.  
  227.     for (i = 0; i < size_a; i++) {
  228.         fprintf(g, "%c", a[i]);
  229.     }
  230.  
  231.     fclose(g);
  232.  
  233. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement