Дан файл целых чисел. Получить новый файл, в котором располагаются сначала все совершенные элементы, а потом остальные
bool sov(int x)
{
int s = 0;
for (int i = 1; i < x; i++)
{
if (x % i == 0) s += i;
}
if (s == x) return true;
else return false;
}
int main()
{
int n, x;
ofstream f("f.txt");
cout << "Enter kol-vo" << endl;
cin >> n;
for (int i = 0; i < n; i++)
{
cout << "Enter elem" << endl;
cin >> x;
f << x << endl;
}
f.close();
cout << "File:";
ifstream h;
h.open("f.txt");
ofstream g("g.txt");
while (!h.eof())
{
h >> x;
if (!h.eof()) {
if (sov(x))
g << x << endl;
}
}
h.seekg(0, ios::beg); //пробовала без этой строчки
while (!h.eof())
{
h >> x;
if (!h.eof()) {
if (!sov(x))
g << x << endl;
}
}
h.close();
g.close();
h.open("g.txt");
while (!h.eof())
{
h >> x;
if (!h.eof()) cout << x << " ";
}
h.close();
}
Написала программу, но она выводит только совершенные числа, а остальные нет. Не понимаю в чем проблема, подскажите пожалуйста как довести программу до рабочего состояния?
Источник: Stack Overflow на русском