Дан файл F (создать его), компонентами которого являются целые числа, не равные 0. Числа в файле записаны в следующем порядке: ++ -- ++ -- …, то есть два положительных числа, два отрицательных числа и т.д. Число компонентов файла F делится на 12. Переписать компоненты файла F в файл H так, чтобы в файле H числа шли в следующем порядке:+++ --- +++ ..., то есть три положительных числа, три отрицательных числа и т.д. Допустимо использование вспомогательного файла.
Ответы
C++
#include <bits/stdc++.h>
using namespace std;
int main()
{
queue<int>plusN;
queue<int>minN;
int temp;
ofstream out;
ifstream in;
in.open("F.txt");
if(!in.is_open())
{
in.close();
out.open("F.txt");
out << 1 << ' ' << 2 << ' ' << -3 << ' ' << -4 << ' ' << 5 << ' ' << 6 << ' ';
out << -7 << ' ' << -8 << ' ' << 9 << ' ' << 10 << ' ' << -11 << ' ' << -12;
out.close();
in.open("F.txt");
}
while(!in.eof()){in >> temp; if(temp > 0) plusN.push(temp); else minN.push(temp); }
in.close();
out.open("F.txt");
bool status = 0;
while(minN.size() != 0 || plusN.size() != 0)
{
if(!(status)) for(int j = 0; j < 3; j++) { out << plusN.front() << ' '; plusN.pop(); }
else for(int j = 0; j < 3; j++) { out << minN.front() << ' '; minN.pop(); }
status = !status;
}
out.close();
return 0;
}