Работа с контейнером и файлом input.txt

Задача звучит следующим образом. Написать функцию, с помощью которой подготовить текстовый файл input.txt, сохранив в него 100 случайных целых чисел в диапазоне от -50 до 50 по одному на строке. Файл возвращается функцией как результат. Написать функцию inputfile(), получающую файл как аргумент и возвращающий последовательный контейнер, заполненный числами из файла. Написать функцию modify(), получающую в качестве аргумента контейнер- результат функции inputfile(). Модифицированный контейнер возвращается в качестве результата. Добавить контейнер-результат вычисление суммы и среднего арифметического по абсолютной величине. В качестве контейнера использовать вектор, двустороннюю очередь и список.

(в коде, для примера я делал не 100 чисел, а 5) У меня проблемы с 38, 56, 73, 116 строками кода (я сделал их как комментарии) Этот код создает случайные целые числа, но не выполняет функции Modify () и Add (). На консоли у меня высвечивается: File is done! и Maiking of container... Что мне делать?

#include<iostream>
#include<fstream>
#include<string>
#include<sstream>
#include<ctime>
#include<vector>
#include<deque>
#include<list>
#include<algorithm>
#include<cstdlib>
#include <iterator>
#include <cmath>
#include <stdio.h>
#pragma warning(suppress : 4996)

using namespace std;

#include <stdio.h>

FILE* File(int N, int count) {

    srand(time(NULL));
    FILE* file;
    fopen_s(&file, "input.txt", "w");
    fstream in(file);
  

        for (int i = 1; i <= count; ++i) {
            in << rand() % (2 * N + 1) - N << endl;
        }

        cout << "File is done!" << endl;

        return file;
}

vector<int> inputfile_to_vector(FILE *File){
   // ifstream in(File);
   fstream in("input.txt", fstream::in | fstream::out);
    
    in.seekg(0);
    int x;
    vector<int> vector;
    in >> x;
   
     while (!in.eof()) {
           vector.push_back(x);
           in >> x;
     }
    
     return vector;
}

deque<int> inputfile_to_deque(FILE *File){
    ifstream in(File);
   // fstream in("input.txt", fstream::in | fstream::out);
    
     in.seekg(0);
     int x;
     deque<int> deque;
     in >> x;
   
     while (!in.eof()){
           deque.push_back(x);
           in >> x;
     }
     
     return deque;
}

list<int> inputfile_to_list(FILE *File){
    ifstream in(File);
   // fstream in("input.txt", fstream::in | fstream::out);
    
     in.seekg(0);
     int x;
     list<int> list;
     in >> x;
    
    while (!in.eof()){
          list.push_back(x);
          in >> x;
    }
    
    return list;
}

template <class T>
T& modify(T& x){

    int firstnechot = 0;

    for (const auto& i : x){
        if (std::abs(i) % 2 == 1){
            firstnechot = std::abs(i);
            break;
        }
    }
    for (auto& i : x) { i += firstnechot; }
   
    return x;
}

template <class T>
    inline void Add(T& conteiner){
    typename T::const_iterator pos;
    int S = 0, SA = 0, N = 0;

    for (pos = conteiner.begin(); pos != conteiner.end(); ++pos) {
        S += *pos;
        SA += abs(*pos);
        N++;
    }
   
    conteiner.push_back(S);
    //conteiner.push_back(SA / N);
    
    cout << "Sum and average were add to container" << endl;
}

int Random(){ return rand() % (2 * 50 + 1) - 50; }  


int main(){

setlocale(0, "");

    FILE *F = File(50, 5);

    cout << "Maiking of container..." << endl;
    vector<int> V = inputfile_to_vector(F);
    deque<int> D = inputfile_to_deque(F);
    list<int> L = inputfile_to_list(F);

    cout << "Changing of container..." << endl;
    modify(V);
    Add(D);
  
    system("pause");
}


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