Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <cstdlib>
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- using namespace std;
- void fileHandler(const char*, const char*, char** = nullptr, int* = nullptr);
- void letter();
- void word();
- void line();
- void securePointer(void*);
- void secureFile(FILE*);
- char* makeArray(int);
- char** make2DArray(int, int);
- int str_comp(const void* p1, const void* p2);
- char** c;
- int size_c;
- int main()
- {
- c = make2DArray(256, 256);
- fileHandler("be.txt", "rt", c, &size_c);
- line();
- word();
- letter();
- }
- void fileHandler(const char* fname, const char* mode, char** c, int* counter)
- {
- FILE* g = fopen(fname, mode);
- secureFile(g);
- int i = 0;
- while (!feof(g)) {
- fgets(c[i], 255, g);
- i++;
- }
- if (counter != nullptr)
- {
- *counter = i;
- }
- fclose(g);
- }
- char* makeArray(int n)
- {
- char* c = (char*)malloc(n * sizeof(char));
- return c;
- }
- char** make2DArray(int n, int m)
- {
- char** c = (char**)malloc(256 * sizeof(char*));
- securePointer(c);
- for (int i = 0; i < 256; i++) {
- c[i] = (char*)malloc(256 * sizeof(char));
- securePointer(c[i]);
- }
- return c;
- }
- int char_comp(const void* p1, const void* p2) {
- char* char1 = (char*)p1;
- char* char2 = (char*)p2;
- return strcmp(char1, char2);
- }
- int str_comp(const void* p1, const void* p2) {
- char** str1 = (char**)p1;
- char** str2 = (char**)p2;
- return strcmp(*str1, *str2);
- }
- void securePointer(void* ptr)
- {
- if (ptr == nullptr)
- {
- puts("Nem sikerult letrehozni a pointer-t.");
- exit(43);
- }
- }
- void secureFile(FILE* file)
- {
- if (!file)
- {
- puts("Nem sikerult megnyitani az allomanyt.");
- exit(43);
- }
- }
- void line() {
- //Valtozok deklaralasa
- int i, j;
- FILE* g;
- //Mondatok beolvasasa a tomb elemei kent
- //Tomb rendezese ABC sorrendben quicksorttal
- qsort(c, size_c, sizeof(char*), str_comp);
- //A '\n' karakterek kiszedese
- for (i = 0; i < size_c; i++) {
- for (j = 0; j < strlen(c[i]); j++) {
- if (c[i][j] == '\n') {
- c[i][j] = '\0';
- break;
- }
- }
- }
- //A mondatok kiirasa a c.txt fileba
- g = fopen("c.txt", "wt");
- secureFile(g);
- for (i = 0; i < size_c; i++) {
- if (i == size_c - 1) {
- fprintf(g, "%s", c[i]);
- }
- else {
- fprintf(g, "%s\n", c[i]);
- }
- }
- fclose(g);
- }
- void word() {
- //Valtozok deklaralasa
- int i;
- FILE* g;
- //Szavas tomb lefoglalasa
- char* a = makeArray(256);
- char** b = make2DArray(256, 256);
- int size_b = 0;
- for(int i = 0; i < size_c; ++i)
- {
- a = strtok(c[i], " ");
- while (a != NULL)
- {
- strcpy(b[size_b], a);
- size_b++;
- a = strtok(NULL, " ");
- }
- }
- size_b--;
- //Tomb rendezese ABC sorrendben quicksorttal
- qsort(b, size_b, sizeof(char*), str_comp);
- //A szavak kiirasa a c.txt fileba
- g = fopen("b.txt", "wt");
- secureFile(g);
- for (i = 0; i < size_b; i++) {
- if (i == size_b - 1) {
- fprintf(g, "%s", b[i]);
- }
- else {
- fprintf(g, "%s\n", b[i]);
- }
- }
- fclose(g);
- }
- void letter() {
- //Valtozok deklaralasa
- int i;
- FILE* g;
- //Betus tomb lefoglalasa
- char* a = makeArray(65536);
- int size_a = 0;
- for (int i = 0; i < size_c; ++i)
- {
- for (int j = 0; j < strlen(c[i]); ++j)
- {
- a[size_a] = c[i][j];
- size_a++;
- }
- }
- //A ' ' es '\n' karakter kiszedese
- for (i = 0; i < size_a; i++) {
- if (a[i] == ' ' || a[i] == '\n') {
- for (int j = i; j < size_a; j++) {
- a[j] = a[j + 1];
- }
- size_a--;
- }
- }
- //Tomb rendezese ABC sorrendben quicksorttal
- qsort(a, size_a, sizeof(char), char_comp);
- //A betuk kiirasa az a.txt fileba
- g = fopen("a.txt", "wt");
- secureFile(g);
- for (i = 0; i < size_a; i++) {
- fprintf(g, "%c", a[i]);
- }
- fclose(g);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement