Функции считывания и вывода массива

Дано: Функция ввода массива с текстового файла (считывания) (несколько недооформленная как оказалось), а также функция вывода (все, что считало, выводить на экран). Вопрос, что делать, в таком случае? a - это используемое в нескольких случаях (вариативно, но не вместе!) "хранилище" формального целочисленного массива А. В задании требуется реализовать на функциях множество вариантов ввода этого и другого массивов (прикр. код основной программы) для посл. обработки и вывода. Программа прерывается, не создает файл результирующий, поэтому отследить логику нарушения я не могу.

    void input_arrayA_from_file(int *a,int size)
{ 

FILE * f1;

f1 = fopen("test.txt", "rt");

for (int i = 0; i < size; i++)
{
    fscanf(f1, " %d", a + i); 
}
fclose(f1); 

}


void output_arrayA_file(int *a,int size)
{

FILE * rez_f1;
rez_f1 = fopen("test.txt", "w");
for (int i = 0; i < size; i++)
{
    fprintf(rez_f1, "A[%d]= %d ",  a[i]);
}
fclose(rez_f1); 

}

case 2:
                            {
                            printf("Введите размерность массива A: ");
                            scanf("%i", &n);

                            // вызываемый прототип функции ввода 
                            printf("-------Введите данные с файла test.txt, расположенного непосредственно в папке с программой-------");

                            input_arrayA_from_file(a,n);
                            output_arrayA_file(a,n);


                            break;

========================================= main.cpp - полный код

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <clocale>
#include <stdlib.h>
#include <fstream>
using namespace std;


int *get_arrayA(int size);
int *get_arrayB(int size2);
void input_arrayA_from_file(int *a,int size); 
void output_arrayA_file(int *a, int size);

int *get_array_randA(int size);
int *get_array_randB(int size2);

int *FindOtvet(int *a, int *b, int size, int size2, int *size3);
void print_array(int *d, int size3, int select1);

int main()
{   //setlocale (LC_ALL,"Russian");
    setlocale (0, "");

    int deystvie;
    int deystvie1;
    int deystvie2;
    int deystvie3;
                  int *a=0; 
                  int n = 0; // локальная переменная размера массива А в задачи 1 преобраз. в size 
                  int *b = 0; 
                  int m = 0; // локальная переменная размера массива B в задачи, преобр. в size2 
                  int *d = 0; // сформ. массив D - результирующий (1 задача) 
                  int h = 0; 
                  int select1; //глобальная переменная, которую мы отсылаем в функцию, для опр. каким обр. будем выводить данные



    printf ("----------Меню----------: \n");
    printf ("1 - Обработка массива.\n");
    printf ("2 - Обработка матриц.\n");
    printf ("3 - Задача с использованием геометрических данных.\n");
    printf("\n");
    printf ("Выберите действие:\n ");
    scanf("%i",&deystvie);

    switch (deystvie)
    {   case 1 :
            {   printf("-----Обработка массива-----\n ");
                printf("\n");
                printf("Выберите нужное действие:\n ");
                printf("1.Ввод исходных данных с консоли1 \n ");
                printf("2.Ввод исходных данных с файла\n ");
                printf("3.Задание массива случайным образом\n ");
                scanf("%i",&deystvie1);

                switch(deystvie1)
                {   
                case 1:
                     { 
                 printf("-------Введите данные с консоли-------");
                 printf("\n");

                 printf("Введите размерность массива A: ");
                 scanf("%i", &n);
                 a = get_arrayA(n);

                 printf("Введите размерность массива B: ");
                 scanf("%i", &m);
                 b = get_arrayB(m);

                 printf("\n");
                 d = FindOtvet(a, b, n, m, &h); //функция нахождения ответа 6.1 при ручном вводе

                printf("\n");
                printf("Выберите нужное действие:\n ");
                printf("1 - Вывод результирующего массива на консоль \n ");
                printf("2 - Вывод результирующего массива в файл \n ");

                scanf("%i",&select1);
                print_array(d, h, select1);



                //free(a); 
                //free(b); 
                //free(d);

                   break;
                        }
                     //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    case 2:
                        {
                        printf("Введите размерность массива A: ");
                        scanf("%i", &n);

                        // вызываемый прототип функции ввода 
                        printf("-------Введите данные с файла test.txt, расположенного непосредственно в папке с программой-------");

                        input_arrayA_from_file(a,n);
                        output_arrayA_file(a,n);


                        break;
                        }
                    case 3:
                        {
                         //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                        printf("-------Массив генерируется...)-------");
                        printf("\n");
                        printf("Введите размерность массива A: ");
                        scanf("%i", &n);
                        printf("\n");
                        a = get_array_randA(n);

                        printf("Введите размерность массива B: ");
                        scanf("%i", &m);
                        printf("\n");
                        b = get_array_randB(m);


                        d = FindOtvet(a, b, n, m, &h); //функция нахождения ответа 6.1 при ручном вводе
                         printf("\n");
                         printf("Выберите нужное действие:\n ");
                         printf("1 - Вывод результирующего массива на консоль \n ");
                         printf("2 - Вывод результирующего массива в файл \n ");

                        scanf("%i",&select1);
                        print_array(d, h, select1);

                       //free(a); 
                       //free(b); 
                       //free(d);

                         //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                        }
                        break;
                    default:
                        break;
                }
            }
            break;

        case 2 :
            {   printf("-----Обработка матрицы-----\n ");
                printf("Выберите нужное действие2:\n ");
                printf("1.Ввод исходных данных с консоли2 \n ");
                printf("2.Ввод исходных данных с файла2\n ");
                printf("3.Задание матрицы случайным образом2\n ");
                scanf("%i",&deystvie2);

                switch(deystvie2)
                {   case 1:

                        printf("-------Введите данные с консоли-------");
                        // вызываемый прототип функции ввода и обработки данных с консоли
                        break;
                    case 2:
                        printf("-------Введите данные с файла, расположенного в (путь)-------");
                        // вызываемый прототип функции ввода и обработки данных с файла
                        break;
                    case 3:
                        printf("-------Массив генерируется...)-------");
                        // вызываемый прототип функции генерации и обработки данных
                        break;
                    default:
                        break;
                }
            }
            break;

        case 3 :
            {   printf("-----Обработка геометрического3-----\n ");
                printf("Выберите нужное действие3:\n ");
                printf("1.Ввод исходных данных с консоли3 \n ");
                printf("2.Ввод исходных данных с файла3\n ");
                printf("3.Задание массива случайным образом3\n ");
                scanf("%i",&deystvie3);


                {       
                    switch(deystvie3)
                        {   case 1:
                                printf("-------Введите данные с консоли-------");
                                // вызываемый прототип функции ввода и обработки данных с консоли
                                break;
                            case 2:
                                printf("-------Введите данные с файла, расположенного в (путь)-------");
                                // вызываемый прототип функции ввода и обработки данных с файла
                                break;
                            case 3:
                                printf("-------Массив генерируется...)-------");
                                // вызываемый прототип функции генерации и обработки данных
                                break;
                            default:
                                break;
                        }
                }
                break;

            default:
                printf("Выбрано неправильное значение.\n");
                break;
            }
    }

    getch();
    return 0;
}

Ошибка следующего рода (конфликт): https://i.stack.imgur.com/73N7i.png


Ответы (0 шт):