Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Attachment.h"
- void input1(int argc, char* argv[], TElem*& stack1, TElem*& stack2) {
- // создание стеков из файла
- if (argc < 3) { // три параметра: путь+имя запущенного файла и два текстовых(один входной+выходной)
- printf("Мало параметров\nPress any key");
- exit(1); // выходим из программы
- }
- FILE* fin1 = fopen(argv[1], "rt"); // открытие текстового файла с информацией для первого стека
- if (fin1 == NULL) {
- printf("Error: не удалось открыть первый файл с исходными данными %s\n", argv[1]);
- printf("Press any key.\n");
- exit(1);
- }
- int kol1 = 0; // количество элементов в первом стеке
- create_stack(&stack1, fin1, &kol1); // создаем первый стек
- if (kol1 == 0) { printf("Первый стек пустой.\n"); }
- else { printf("Создан первый стек, состоящий из %d элеметов.\n", kol1); }
- fclose(fin1); // закрываем входные файлы
- }
- void input2(int argc, char* argv[], TElem*& stack2, TElem*& stack3) {
- // создание стеков из файла
- if (argc < 3) { // три параметра: путь+имя запущенного файла и два текстовых(один входной+выходной)
- printf("Мало параметров\nPress any key");
- exit(1); // выходим из программы
- }
- FILE* fin1 = fopen(argv[1], "rt"); // открытие текстового файла с информацией для первого стека
- if (fin1 == NULL) {
- printf("Error: не удалось открыть первый файл с исходными данными %s\n", argv[1]);
- printf("Press any key.\n");
- exit(1);
- }
- int kol2 = 0; // количество элементов в 2 стеке
- create_stack(&stack2, fin1, &kol2); // создаем 2 стек
- if (kol2 == 0) { printf("Второй стек пустой.\n"); }
- else { printf("Создан второй стек, состоящий из %d элеметов.\n", kol2); }
- fclose(fin1); // закрываем входные файлы
- }
- void input3(int argc, char* argv[], TElem*& stack3, TElem*& stack4) {
- // создание стеков из файла
- if (argc < 3) { // три параметра: путь+имя запущенного файла и два текстовых(один входной+выходной)
- printf("Мало параметров\nPress any key");
- exit(1); // выходим из программы
- }
- FILE* fin1 = fopen(argv[1], "rt"); // открытие текстового файла с информацией для первого стека
- if (fin1 == NULL) {
- printf("Error: не удалось открыть первый файл с исходными данными %s\n", argv[1]);
- printf("Press any key.\n");
- exit(1);
- }
- int kol3 = 0; // количество элементов в 3 стеке
- create_stack(&stack3, fin1, &kol3); // создаем первый стек
- if (kol3 == 0) { printf("Третий стек пустой.\n"); }
- else { printf("Создан третий стек, состоящий из %d элеметов.\n", kol3); }
- fclose(fin1); // закрываем входные файлы
- }
- void output_c(TElem* stack1, TElem* stack2, TElem* stack3, TElem* stack4) {
- // вывод стеков в консоль
- printf("Первый стек:");
- print_c(stack1);
- printf("Второй стек:");
- print_c(stack2);
- printf("Третий стек:");
- print_c(stack3);
- printf("Четвертый стек:");
- print_c(stack4);
- }
- void output_f(int argc, char* argv[], TElem* stack1, TElem* stack2, TElem* stack3, TElem* stack4) {
- // вывод стеков в текстовый файл
- if (argc < 3) {// три параметра: путь+имя запущенного файла и два текстовых(один входной+выходной)
- printf("Мало параметров\nPress any key");
- exit(1);
- }
- FILE* fout = fopen(argv[2], "wt"); // открытие текстового файла для записи информации
- if (fout == NULL) {
- printf("Error: не удалось открыть второй файл с исходными данными %s\n", argv[2]);
- printf("Press any key ");
- exit(1);
- }
- fprintf(fout, "Первый стек:");
- print_f(stack1, fout);
- fprintf(fout, "Второй стек:");
- print_f(stack2, fout);
- fprintf(fout, "Третий стек:");
- print_f(stack3, fout);
- fprintf(fout, "Четвертый стек:");
- print_f(stack4, fout);
- printf("Стеки выведены в текстовый файл.");
- fclose(fout); // закрыть файл для записи
- }
- TElem* solution(TElem*& stack1, TElem*& stack2, TElem*& stack3, TElem*& stack4) {
- // решение задачи
- TElem* stack = NULL; // изначально возвращаемое значение = 0
- do {
- TopToTop(&stack1, &stack2); // перекладываем в другой стек
- TopToTop(&stack2, &stack3); // перекладываем в другой стек
- TopToTop(&stack3, &stack4); // перекладываем в другой стек
- } while (stack1); // пока 1 стек не нулевой
- do {
- TopToTop(&stack2, &stack3); // перекладываем в другой стек
- TopToTop(&stack3, &stack4); // перекладываем в другой стек
- } while (stack2); // пока 2 стек не нулевой
- do {
- TopToTop(&stack3, &stack4); // перекладываем в другой стек
- } while (stack3); // пока 3 стек не нулевой
- return stack;
- }
- void free_stacks(TElem** stack1, TElem** stack2, TElem** stack3, TElem** stack4) {
- // очистка первого, второго и третьего стеков
- (*stack1) = free_stack(stack1);
- (*stack2) = free_stack(stack2);
- (*stack3) = free_stack(stack3);
- (*stack4) = free_stack(stack4);
- printf("Стеки очищены.");
- }
Advertisement
Add Comment
Please, Sign In to add comment