// zadanie_8.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include #include using namespace std; void fillArr(double* pArr, int sizeOfArr) //Генерация массива из случайных чисел от 1 до 30 { srand(time(0)); for (int i(0); i < sizeOfArr; i++) { pArr[i] = rand() % 30 + 1; } } void manualFillArr(double* pArr, int sizeOfArr) //Ручной ввод массива { setlocale(0, "rus"); cout << "Введите элементы массива:\n>>"; for (int i(0); i < sizeOfArr; i++) { cin >> pArr[i]; } cout << endl; } void showArr(double* pArr, int sizeOfArr, int k) //Вывод массива на экран { if (k != 0) { for (int i(0); i < sizeOfArr; i++) { cout << pArr[i] << ' '; } cout << endl; } if (k == 1) { cout << "Массив создан автоматически." << endl; } } int posMaxNumArr(double* pArr, int sizeOfArr) //Находим макс значение, возвращаем позицию числа. { double Max = pArr[0]; int pos = 0; for (int i(1); i < sizeOfArr; i++) { if (Max < pArr[i]) { Max = pArr[i]; pos = i; } } cout << "Max = " << Max << ", position = " << (pos+1) << endl; return pos; } void sortAfterMax(double* pArr, int sizeOfArr) { int pos = posMaxNumArr(pArr, sizeOfArr); if ((pos != sizeOfArr)||( (pos+1) != sizeOfArr)) //Если Мах в конце, или предпоследний, делать ничего не нужно :р { double temp; for (int i(pos + 1); i < sizeOfArr; i++) { for (int j(i + 1); j < sizeOfArr; j++) { if (pArr[i] > pArr[j]) { temp = pArr[i]; pArr[i] = pArr[j]; pArr[j] = temp; } } } } } int main() { setlocale(0, "rus"); cout << "Введите кол-во элементов массива: \n"; int sizeOfArr; cin >> sizeOfArr; double* pArr = new double[sizeOfArr]; cout << "Создать массив автоматически(1)/вручную(0)?\n"; int k; cin >> k; //Определяет выбор пользователя switch (k) { case 1: fillArr(pArr, sizeOfArr); break; case 0: manualFillArr(pArr, sizeOfArr); break; default: { cout << "Недопустимое значение, попробуйте еще раз..."; getchar(); return 0; } break; } cout << "Первоначальный массив:\n"; showArr(pArr, sizeOfArr, k); sortAfterMax(pArr, sizeOfArr); cout << "Массив после сортировки:\n"; showArr(pArr, sizeOfArr, 2); delete[] pArr; system("pause"); return 0; }