Подскажите пожалуйста, почему выводятся мусорные значения?
Подскажите пожалуйста, почему выводятся мусорные значения?
#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];
но вы же еще ранее достигли конца файла
что же в надеетесь из него считать?
вам надо
или закрыть и открыть файл заново
или установить указатель на начало файла
или в самом начале уже сразу считывать файл в массив
Лучше всего п.3) - только вместо динамического массива можно использовать вектор std::vector<float> (вы же на С++ пишите)