В коде я расписал функции: File(), Modify() и Add_Sum_Avarage(). File() должна заполнять файл числами, Modify() делает некоторую модификацию(у меня умножает на -1, если число отрицательное), Add_Sum_Avarage() высчитывает сумму всей последовательности, находит среднее арифметическое(эти числа добавляются в конец контейнера), находит максимум и минимум и высчитывает среднее арифметическое между ними, потом добавляет это среднее к каждому элементу последовательности.
Проблема заключается в том, что когда в main пишу сначала
Код:
File(50, 5);
std::deque<double> D = inputfile_to_deque();
Modify(D);
Add_Sum_Avarage(D);
выводится Modify() и Add_Sum_Avarage(). Когда пишу Код:
File(50, 5);
std::deque<double> D = inputfile_to_deque();
Add_Sum_Avarage(D);
Modify(D);
выводится только Modify(). В чем проблема? Должно выводится все File(), Modify() и Add_Sum_Avarage().
Код:
#include <iostream>
#include <fstream>
#include <string>
#include <ctime>
#include <vector>
#include <deque>
#include <list>
#include <algorithm>
#include <iterator>
#include <cmath>
void File(int N, int count){
std::ofstream out("input.txt");
for (int i = 1; i <= count; ++i) {
out << rand() % (2 * N + 1) - N << std::endl;
}
out << "File is done!" << std::endl;
}
std::vector<double> inputfile_to_vector() {
std::vector<double> vec;
std::fstream in("input.txt", std::fstream::in | std::fstream::out);
if (!in.is_open()) std::cout << "Cannot open file!\n";
else {
for (int x; in >> x; ) {
vec.push_back(x);
}
}
return vec;
}
std::deque<double> inputfile_to_deque() {
std::deque<double> deq;
std::fstream in("input.txt", std::fstream::in | std::fstream::out);
if (!in.is_open()) std::cout << "Cannot open file!\n";
else {
for (int x; in >> x; ) {
deq.push_back(x);
}
}
return deq;
}
std::list<double> inputfile_to_list() {
std::list<double> list;
std::fstream in("input.txt", std::fstream::in | std::fstream::out);
if (!in.is_open()) std::cout << "Cannot open file!\n";
else {
for (int x; in >> x; ) {
list.push_back(x);
}
}
return list;
}
template <class T>
T& Modify(T& X) {
std::ofstream out("input.txt");
typename T::iterator p;
for (auto& i : X) {
if (i < 0) {
i *= -1;
}
out << i << " ";
}
return X;
}
template <class T>
void Add_Sum_Avarage(T& conteiner) {
std::ofstream out("input.txt");
typename T::iterator pos;
typename T::iterator pos1;
typename T::iterator pos2;
int MAX = 0;
int MIN = 0;
int S = 0, N = 0;
double SA = 0;
for (const auto& i : conteiner) out << i << std::endl;
for (pos = conteiner.begin(); pos != conteiner.end(); ++pos) {
S += *pos;
SA += *pos;
N++;
}
conteiner.push_back(S);
conteiner.push_back(SA / N);
out << "\nSum of container = " << S << std::endl;
out << "Average of container = " << (SA / N) << std::endl;
for (pos1 = conteiner.begin(); pos1 != conteiner.end(); ++pos1)
if (MAX < *pos1) MAX = *pos1; out << "\nMAX = " << MAX << std::endl;
for (pos2 = conteiner.begin(); pos2 != conteiner.end(); ++pos2)
if (MIN > * pos2) MIN = *pos2; out << "MIN = " << MIN << std::endl;
double Avarage = (MAX + MIN) / 2.0;
out << "Avarage of max and min = " << Avarage << '\n' << std::endl;
for (const auto& i : conteiner) out << (i + std::abs(Avarage)) << std::endl;
}
int Random() { return rand() % (2 * 50 + 1) - 50; }
int main(){
srand(time(NULL));
File(50, 5);
std::cout << "Making of container..." << std::endl;
std::vector<double> V = inputfile_to_vector();
std::deque<double> D = inputfile_to_deque();
std::list<double> L = inputfile_to_list();
std::cout << "Changing of container..." << std::endl;
Modify(D);
Add_Sum_Avarage(D);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Решил таки посмотреть, какие изменения были введены в 20-ом стандарде и одно из первых изменений поставило меня в тупик: модулиЯ долго пытался...
компилятор выдает ошибки: maincpp:34:21: error: expected ‘;’ before string constant cout « "\n x=" « x « " y=" « y « " a=" « a « " с=" « с « " U=" « U; ^~~~~~~ main
Подскажите как я могу компилировать проекты в Sublime Text 3Пытался настроить "Build System" файл, но безрезультатно