Функции считывания и вывода массива
Дано: Функция ввода массива с текстового файла (считывания) (несколько недооформленная как оказалось), а также функция вывода (все, что считало, выводить на экран). Вопрос, что делать, в таком случае? 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