Подскажите пожалуйста, почему выводятся мусорные значения?

Подскажите пожалуйста, почему выводятся мусорные значения?

#include <iostream>
#include <fstream>
#include <sstream>
#include <stdio.h>
#include <string>
#include <algorithm>
#include <cmath>
using namespace std;
int main() {
    setlocale(0, "");
    ifstream fout("input.txt");
    ofstream mout("output.txt");
    float ch;
    int Count = 0;
    while (fout >> ch)
        Count++;
    cout << "Чисел в файле -" << Count << endl;
    int* mass = new int[Count];
    int i = 0;
    for (i = 0; i < Count; i++)
        fout >> mass[i];
    int temp = 0;
    for (int i = 0; i < Count - 1; i++) {
        for (int j = 0; j < Count - 1; j++) {
            if (mass[j] > mass[j + 1]) {
                temp = mass[j];
                mass[j] = mass[j + 1];
                mass[j + 1] = temp;
            }
        }
    }
    for (int i = 0; i < Count; i++) {
        mout << mass[i] << endl;
        cout << mass[i] << endl;
    }
}

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

Автор решения: Zhihar

т.е. вы 1 раз считали данные из файла

while (fout >> ch)
    Count++;

и дальше продолжаете читать данные из того же файла

for (i = 0; i < Count; i++)
    fout >> mass[i];

но вы же еще ранее достигли конца файла

что же в надеетесь из него считать?

вам надо

  1. или закрыть и открыть файл заново

  2. или установить указатель на начало файла

  3. или в самом начале уже сразу считывать файл в массив

Лучше всего п.3) - только вместо динамического массива можно использовать вектор std::vector<float> (вы же на С++ пишите)

→ Ссылка