ПОМОГИТЕ КОД ЯЗЫКА C++ ДАЮ 60 БАЛЛОВ
Розробити програму, яка читає з файлу одновимірний масив. Здійснює
сортування різними методами (бульбашковим, вставки та вибору). Результати
обчислень по завданнях та впорядкований масив – записує у інший файл. Всі
впорядкування сформувати у функції, які викликаються з використанням команди
вибору.
1. номер максимального по модулю елемента масиву;
2. суму елементів масиву, розташованих після першого додатного елемента.
Ответы
#include <iostream>
#include <fstream>
#include <cmath>
const int MAX_SIZE = 100;
// Прототипи функцій
void bubbleSort(int array[], int size);
void insertionSort(int array[], int size);
void selectionSort(int array[], int size);
int findMaxAbsElement(int array[], int size);
int sumAfterFirstPositive(int array[], int size);
int main() {
int array[MAX_SIZE];
int size;
// Зчитати масив з файлу
std::ifstream inputFile("array.txt");
if (inputFile.is_open()) {
inputFile >> size;
for (int i = 0; i < size; i++) {
inputFile >> array[i];
}
inputFile.close();
} else {
std::cerr << "Error opening array.txt" << std::endl;
return 1;
}
// Сортування масиву різними методами
bubbleSort(array, size);
insertionSort(array, size);
selectionSort(array, size);
// Обчислити та роздрукувати результати
int maxAbsElement = findMaxAbsElement(array, size);
int sum = sumAfterFirstPositive(array, size);
std::cout << "The maximum element by absolute value is: " << maxAbsElement << std::endl;
std::cout << "The sum of the elements after the first positive element is: " << sum << std::endl;
// Записати відсортований масив у файл
std::ofstream outputFile("sorted_array.txt");
if (outputFile.is_open()) {
for (int i = 0; i < size; i++) {
outputFile << array[i] << " ";
}
outputFile.close();
} else {
std::cerr << "Error opening sorted_array.txt" << std::endl;
return 1;
}
return 0;
}
// Функція бульбашкового сортування
void bubbleSort(int array[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
// Функція сортування вставок
void insertionSort(int array[], int size) {
for (int i = 1; i < size; i++) {
int key = array[i];
int j = i - 1;
while (j >= 0 && array[j] > key) {
array[j + 1] = array[j];
j--;
}
array[j + 1] = key;
}
}
// Функція сортування вибірки
void selectionSort(int array[], int size) {
for (int i = 0; i < size - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < size; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
int temp = array[i];
array[i] = array[minIndex];
array[minIndex] = temp;
}
}
// Функція пошуку максимального елемента за абсолютною величиною
int findMaxAbsElement(int array[], int size) {
int max = std::abs(array[0]);
for (int i = 1; i < size; i++) {
int absValue = std::abs(array[i]);
if (absValue > max) {
max = absValue;
}
}
return max;
}
// Функція знаходження суми елементів після першого додатного елементу
int sumAfterFirstPositive(int array[], int size) {
int sum = 0;
bool found = false;
for (int i = 0; i < size; i++) {
if (array[i] > 0) {
found = true;
}
if (found) {
sum += array[i];
}
}
return sum;
}
У даній програмі масив зчитується з файлу з назвою "array.txt", а відсортований масив записується у файл з назвою "sorted_array.txt". Файл повинен містити розмір масиву, за яким слідують елементи масиву, кожен з яких відокремлюється пропуском.
Сподіваюся, це допоможе!