Advertisement
Guest User

Merry C++hristmas

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