C++ (Qt)int main(int argc, char** argv) { std::vector <int> vec; // получаем имя файла из командной строки, если там пусто, то input.txt (по умолчанию) std::string iFileName = GetInName(argc, argv); // читаем данные из файла int err = ReadData(iFileName, vec); if (err) return ShowError(err, &iFileName); // выполняем содержательную часть int result; err = sumOfMaxAndMin(arr, &result); if (err) return ShowError(err, &iFileName); // записываем выходной файл std::string oFileName = GetOutName(argc, argv); err = WriteResult(oFileName, result); if (err) return ShowError(err, &oFileName); return 0;}
C++ (Qt)#include <vector>#include <string>#include <iostream>#include <fstream>#include <sstream>#include <algorithm> int readData(const std::string& iFileName, std::vector<int>& arr);int writeResult(const std::string& oFileName, int &result);int showError(int err, const std::string& fileName);int sumOfMaxAndMin(const std::vector<int>& arr, int& result); int main(int argc, char** argv) { // Массив для хранения входных данных std::vector <int> arr; // Имя входного файла std::string iFileName = "input.txt"; // Читаем данные из файла int err = readData(iFileName, arr); if (err) return showError(err, iFileName); // Выполняем содержательную часть int result; err = sumOfMaxAndMin(arr, result); if (err) return showError(err, iFileName); // Записываем выходной файл std::string oFileName = "output.txt"; err = writeResult(oFileName, result); if (err) return showError(err, oFileName); return 0;} /** * Читаем данные из файла * * @param iFileName Имя входного файла * @param vec Массив, в который будут считаны входные данные * @return Код ошибки: 0 - если ошибок нет * 1 - если файл не удалось открыть * 2 - если в файле некорректные данные */int readData(const std::string& iFileName, std::vector<int>& arr) { // Открываем файл с входными данными std::ifstream in; in.open(iFileName.c_str()); if (!in.is_open()) { return 1; } // Читаем данные из файла int value, err = 0; std::string input; while (in >> input) { if (std::stringstream(input) >> value) { arr.push_back(value); } else { err = 2; break; } } // Закрываем файл и возвращаем код ошибки in.close(); return err;} /** * Записываем результат выходной в файл * * @param iFileName Имя выходного файла * @param vec Массив, который нужно записать в файл * @return Код ошибки: 0 - если ошибок нет * 1 - если файл не удалось открыть * 2 - если в файле не удалось записать */int writeResult(const std::string& oFileName, int& result) { // Открываем файл для записи std::ofstream out; out.open(oFileName.c_str()); if (!out.is_open()) { return 1; } // Записываем данные в файл out << result << std::endl; // Закрываем файл и возвращаем код ошибки out.close(); return 0;} /** * Выводит текст с ошибкой на экран * * @param err Код ошибки * @param iFileName Имя файла, в котором произошла ошибка */int showError(int err, const std::string& fileName) { switch (err) { case 1: std::cerr << "Error: could not open the file " << fileName.c_str() << std::endl; break; case 2: std::cerr << "Error: incorrect data in the file " << fileName.c_str() << std::endl; break; default: std::cerr << "Error code: " << err << "; file name: " << fileName.c_str() << std::endl; break; } return err;} /** * Сумма максимума из чисел с чётными номерами и * минимума из чисел с нечётными номерами * * @param arr Массив целых чисел * @param result Сумма максимума из чисел с чётными номерами и * минимума из чисел с нечётными номерами * @return Код ошибки */int sumOfMaxAndMin(const std::vector<int>& arr, int& result) { // Массивы для чисел с чётным и нечётными номерами std::vector<int> odd; std::vector<int> even; // Размер входного массива std::size_t size = arr.size(); // Сортируем на чётный и нечётные массивы for (int i = 0; i < size; ++i) { if ((i+1)%2 != 0) { odd.push_back(arr[i]); } else { even.push_back(arr[i]); } } // Находим минимальный среди нечётных int min = 0; if (odd.size() > 0) { min = *std::min_element(odd.begin(), odd.end()); } // Находим максимальный среди чётных int max = 0; if (even.size() > 0) { max = *std::max_element(even.begin(), even.end()); } // Вычисляем результат result = max + min; // Возвращаем код ошибки return 0;}
/** * Сумма максимума из чисел с чётными номерами и * минимума из чисел с нечётными номерами * * @param arr Массив целых чисел * @param result Сумма максимума из чисел с чётными номерами и * минимума из чисел с нечётными номерами * @return Код ошибки */int sumOfMaxAndMin(const std::vector<int>& arr, int& result) { // Массивы для чисел с чётным и нечётными номерами std::vector<int> odd; std::vector<int> even; // Размер входного массива std::size_t size = arr.size(); // Сортируем на чётный и нечётные массивы for (int i = 0; i < size; ++i) { if ((i+1)%2 != 0) { odd.push_back(arr[i]); } else { even.push_back(arr[i]); } } // Находим минимальный среди нечётных int min = 0; if (odd.size() > 0) { min = *std::min_element(odd.begin(), odd.end()); } // Находим максимальный среди чётных int max = 0; if (even.size() > 0) { max = *std::max_element(even.begin(), even.end()); } // Вычисляем результат result = max + min; // Возвращаем код ошибки return 0;}