C/C++

Помогите пожалуйста написать программу на С++

Текстовый файл содержит неизвестное количество целочисленных значений, только положительные числа в диапазоне [0-99], разделенных одним или несколькими пробелами или символом «новой строки». Напишите программу, которая:
- прочитав такой файл только один раз (имя файла нужно спросить у пользователя)
- вычисляет и отображает на экране: - количество значений, содержащихся в файле
- количество значений в диапазоне по базе 10 ([0-9], [10-19], ..[90-99])
- записывать все выходы в выходной файл (output.txt).

Пример: предположим следующее содержимое файла:
27 49 15 18 11 26 4 33 2 99
Затем программа должна отобразить следующие сообщения:
Количество значений: 10
Значения в диапазоне [0-9]: 2
Значения в диапазоне [10-19]: 3
Значения в диапазоне [20-29]: 2
Значения в диапазоне [30–39]: 1
Значения в диапазоне [40–49]: 1
Значения в диапазоне [50-59]: 0
Значения в диапазоне [60–69]: 0
Значения в диапазоне [70–79]: 0
Значения в диапазоне [80–89]: 0
Значения в диапазоне [90–99]: 1
#include <iostream>
#include <map>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
int main() {
system("chcp 1251 > nul");
cout << "Имя файла с раширением: ";
string filename;
getline(cin, filename);
ifstream file(filename);
if (file.is_open()) {
map<int, int> box;
int value;
int count = 0;
while (file >> value) {
++box[value / 10];
++count;
}
file.close();
vector<int> res(10);
for (const auto& [key, value] : box) res[key] = value;
ofstream save("output.txt");
if (save.is_open()) {
save << "Количество значений: " << count << '\n';
auto a = 0, b = 9;
for (auto x : res) {
save << "Значения в диапазоне [" << a << "-" << b << "]: " << x << '\n';
a += 10;
b += 10;
}
save.close();
} else {
puts("Целевой файл не создан!");
system("pause > nul");
}
} else {
puts("Исходный файл не найден!");
system("pause > nul");
}
}
Аким Ковалев
Аким Ковалев
67 638
Лучший ответ
programmersforum.ru/showthread.php?t=69193
Роман Лопухин
Роман Лопухин
53 157
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
cout << "Enter a name of the file: ";
string file_name;
cin >> file_name;

ifstream fin (file_name);
//ifstream fin (file_name + ".txt"s);

if (fin.is_open()) {
unsigned nums[11] = { 0 };
unsigned val;
while(fin >> val) {
++nums[10];
for (int i = 0; i < 10; ++i) {
if (val >= i*10 && val < (i+1)*10) ++nums[i];
}
}

cout << "Number of values: " << nums[10] << "\n";
for (int i = 0; i < 10; ++i) {
cout << "Values in the range [" << i*10 << "-";
cout << (i+1)*10-1 << "]: " << nums[i] << "\n";
}

fin.close();
} else {
cout << "File not found!\n";
}

return 0;
}
Кирилл Шумский Здравствуйте. После того как напишешь имя файла оно говорит что файл не найден