С++
Всі роботи проводяться з файлом у бінарному режимі.
Використовувати масив не можна.
Написати такі функції:
1. Згенерувати у файл випадкові цілі числа від -100 до 100. Кількість
чисел випадкова від 1 – 100.
2. Підрахувати кількість чисел у файлі;
3. Підрахувати суму чисел у файлі;
4. Підрахувати середнє арифметичне чисел у файлі;
5. Вивести числа більші за середнє арифметичне.
6. Відсортувати числа у файлі за зростанням.
Зробити меню для тестування функцій.
Ответ:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <algorithm>
using namespace std;
// Функція для генерації випадкових чисел та запису їх у файл
void generateRandomNumbers(const string& filename)
{
ofstream file(filename, ios::binary);
if (!file)
{
cout << «Помилка при відкритті файлу.» << endl;
return;
}
srand(static_cast<unsigned int>(time(nullptr)));
int count = rand() % 100 + 1; // Випадкова кількість чисел від 1 до 100
for (int i = 0; i < count; ++i)
{
int num = rand() % 201 — 100; // Випадкове число від -100 до 100
file.write(reinterpret_cast<const char*>(&num), sizeof(int));
}
file.close();
}
// Функція для підрахунку кількості чисел у файлі
int countNumbers(const string& filename)
{
ifstream file(filename, ios::binary);
if (!file)
{
cout << «Помилка при відкритті файлу.» << endl;
return 0;
}
file.seekg(0, ios::end);
int fileSize = file.tellg(); // Розмір файлу в байтах
int numCount = fileSize / sizeof(int); // Кількість чисел
file.close();
return numCount;
}
// Функція для підрахунку суми чисел у файлі
int calculateSum(const string& filename)
{
ifstream file(filename, ios::binary);
if (!file)
{
cout << «Помилка при відкритті файлу.» << endl;
return 0;
}
int sum = 0;
int num;
while (file.read(reinterpret_cast<char*>(&num), sizeof(int)))
{
sum += num;
}
file.close();
return sum;
}
// Функція для підрахунку середнього арифметичного чисел у файлі
double calculateAverage(const string& filename)
{
int count = countNumbers(filename);
int sum = calculateSum(filename);
if (count > 0)
{
return static_cast<double>(sum) / count;
}
return 0.0;
}
// Функція для виведення чисел більших за середнє арифметичне
void printNumbersAboveAverage(const string& filename)
{
double average = calculateAverage(filename);
ifstream file(filename, ios::binary);
if (!file)
{
cout << «Помилка при відкритті файлу.» << endl;
return;
}
int num;
while (file.read(reinterpret_cast<char*>(&num), sizeof(int)))
{
if (num > average)
{
cout << num << » «;
}
}
file.close();
cout << endl;
}
// Функція для