Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <windows.h>
- using namespace std;
- const int
- MIN_ARR_LENGTH = 1,
- MAX_ARR_LENGTH = 100,
- MIN_ARR_VALUE = -100,
- MAX_ARR_VALUE = 100;
- int getInt(int min, int max)
- {
- int n;
- bool isInCorrect;
- do
- {
- isInCorrect = true;
- cin >> n;
- if (cin.fail() || (cin.get() != '\n'))
- {
- cout << "Введены некорректные данные" << endl;
- cin.clear();
- while (cin.get() != '\n');
- }
- else
- {
- cin.clear();
- if (min < n || max > n)
- {
- isInCorrect = false;
- }
- else
- {
- cout << "Введено значение не входящее в диапазон допустимых значений" << endl;
- }
- }
- } while (isInCorrect);
- return n;
- }
- void inputArrFromConsole(int* arr, int length)
- {
- int i;
- for (i = 0; i < length; i++)
- {
- cout << "Введите элемент последовательности №" << i + 1 << ":" << endl;
- arr[i] = getInt(MIN_ARR_VALUE, MAX_ARR_VALUE);
- }
- }
- string inputFilePathForInput()
- {
- ifstream fin;
- string path;
- bool isIncorrect;
- do
- {
- isIncorrect = false;
- cout << "Данные в файлы должны быть записаны следующим образом :\nN(длина последовательности)\na1 a2 a3 a4... an\n";
- cout << "Введите путь к файлу для получения исходных данных: \n";
- cin >> path;
- fin.open(path);
- if (!fin.is_open())
- {
- cout << "Файл по введенному пути не найден! Проверьте корректность введенных данных и повторите ввод.\n";
- isIncorrect = true;
- }
- } while (isIncorrect);
- fin.close();
- return path;
- }
- string inputFilePathForOutput()
- {
- string path;
- string extension;
- cout << "Для вывода введите путь к файлу и его имя\n";
- cin >> path;
- return path;
- }
- bool checkFileData(string path)
- {
- ifstream fin;
- bool isIncorrect;
- fin.open(path);
- isIncorrect = false;
- int length;
- fin >> length;
- if (fin.fail())
- {
- fin.clear();
- isIncorrect = true;
- cout << "Данные в файле представлены в неправильном формате! Внесите изменения в файл и повторите попытку.\n";
- while (cin.get() != '\n');
- }
- int* checkArr = new int[length];
- for (int i = 0; i < length; i++)
- {
- fin >> checkArr[i];
- if (!fin.eof() && fin.fail())
- {
- cout << "Последовательность введена некорректно! Внесите изменения в файл и повторите попытку.\n";
- isIncorrect = true;
- fin.clear();
- while (cin.get() != '\n');
- }
- }
- delete[] checkArr;
- fin.close();
- return isIncorrect;
- }
- void inputFileArray(int* arr, int& lengthArr, const string path)
- {
- ifstream fin;
- fin.open(path);
- fin >> lengthArr;
- arr = new int[lengthArr];
- for (int i = 0; i < lengthArr; i++)
- {
- fin >> arr[i];
- }
- fin.close();
- }
- void inputArray(int*& arr, int choice, int& lengthArr)
- {
- if (choice == 1)
- {
- cout << "Введите длину последовательности:\n";
- lengthArr = getInt(MIN_ARR_LENGTH, MAX_ARR_LENGTH);
- arr = new int[lengthArr];
- inputArrFromConsole(arr, lengthArr);
- }
- else
- {
- bool IsIncorrect;
- string path;
- do
- {
- path = inputFilePathForInput();
- IsIncorrect = checkFileData(path);
- } while (IsIncorrect);
- inputFileArray(arr, lengthArr, path);
- }
- }
- bool analizeArr(int* arr, int lengthA)
- {
- bool IsNonIncreasing;
- IsNonIncreasing = true;
- for (int i = 0; i < lengthA - 1; i++)
- if (arr[i] < arr[i + 1])
- IsNonIncreasing = false;
- return IsNonIncreasing;
- }
- void outputVerdict(int* arr, int choice, int length)
- {
- bool verdict;
- verdict = analizeArr(arr, length);
- if (choice == 1)
- {
- if (verdict)
- cout << "Последовательность является невозрастающей";
- else
- cout << "Последовательность не является невозрастающей";
- }
- else
- {
- ofstream fout;
- string path;
- path = inputFilePathForOutput();
- fout.open(path);
- if (verdict)
- fout << "Последовательность является невозрастающей";
- else
- fout << "Последовательность не является невозрастающей";
- fout.close();
- }
- }
- int main()
- {
- int lengthA, choice;
- int* arrA = new int;
- SetConsoleOutputCP(CP_UTF8);
- cout << "Эта программа определит, является ли заданная последовательность невозрастающей\nДиапазон для ввода длины последовательности от 1 до 100\nДиапазон для ввода элементов от -100 до 100\n";
- cout << "Выберите способ ввода:\n1.Ввод из консоли\n2.Ввод из файла" << endl;
- choice = getInt(1, 2);
- inputArray(arrA, choice, lengthA);
- cout << "Выберите способ вывода:\n1.Вывод в консоль\n2.Вывод в файл" << endl;
- choice = getInt(1, 2);
- outputVerdict(arrA, choice, lengthA);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement