• Предмет: Информатика
  • Автор: Kukuwka0Ha0DepeBe
  • Вопрос задан 3 месяца назад

С++
Всі роботи проводяться з файлом у бінарному режимі.
Використовувати масив не можна.
Написати такі функції:
1. Згенерувати у файл випадкові цілі числа від -100 до 100. Кількість
чисел випадкова від 1 – 100.
2. Підрахувати кількість чисел у файлі;
3. Підрахувати суму чисел у файлі;
4. Підрахувати середнє арифметичне чисел у файлі;
5. Вивести числа більші за середнє арифметичне.
6. Відсортувати числа у файлі за зростанням.
Зробити меню для тестування функцій.

Ответы

Ответ дал: zelenskiy24052009
0

Ответ:

#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;

}

// Функція для

Вас заинтересует