97 lines
2.4 KiB
C++
97 lines
2.4 KiB
C++
|
#include <iostream>
|
|||
|
#include <windows.h>
|
|||
|
using namespace std;
|
|||
|
|
|||
|
|
|||
|
int findMinIndex(double* arr, int size) {
|
|||
|
int minIndex = 0;
|
|||
|
|
|||
|
for (int i = 1; i < size; i++) {
|
|||
|
if (arr[i] < arr[minIndex]) {
|
|||
|
minIndex = i;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return minIndex;
|
|||
|
}
|
|||
|
|
|||
|
int findMaxIndex(double* arr, int size) {
|
|||
|
int maxIndex = 0;
|
|||
|
|
|||
|
for (int i = 1; i < size; i++) {
|
|||
|
if (arr[i] > arr[maxIndex]) {
|
|||
|
maxIndex = i;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return maxIndex;
|
|||
|
}
|
|||
|
|
|||
|
void swapMinMax(double* arr, int size) {
|
|||
|
int minIndex = findMinIndex(arr, size);
|
|||
|
int maxIndex = findMaxIndex(arr, size);
|
|||
|
|
|||
|
double temp = arr[minIndex];
|
|||
|
arr[minIndex] = arr[maxIndex];
|
|||
|
arr[maxIndex] = temp;
|
|||
|
}
|
|||
|
|
|||
|
int main() {
|
|||
|
|
|||
|
SetConsoleOutputCP(CP_UTF8);
|
|||
|
|
|||
|
int n, i;
|
|||
|
double* arr;
|
|||
|
|
|||
|
cout << "Введіть кількість елементів послідовності: ";
|
|||
|
cin >> n;
|
|||
|
|
|||
|
arr = new double[n];
|
|||
|
|
|||
|
for (i = 0; i < n; i++) {
|
|||
|
cout << "Введіть " << i + 1 << "-й елемент: ";
|
|||
|
cin >> arr[i];
|
|||
|
}
|
|||
|
|
|||
|
// шукаємо перше від'ємне число
|
|||
|
int firstNegativeIndex = -1;
|
|||
|
for (i = 0; i < n; i++) {
|
|||
|
if (arr[i] < 0) {
|
|||
|
firstNegativeIndex = i;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (firstNegativeIndex == -1) {
|
|||
|
cout << "У послідовності немає від'ємних чисел." << endl;
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
// виділяємо пам'ять для нового масиву
|
|||
|
int new_size = n - firstNegativeIndex - 1;
|
|||
|
double* new_arr = new double[new_size];
|
|||
|
|
|||
|
// копіюємо елементи від першого від'ємного числа в новий масив
|
|||
|
for (i = firstNegativeIndex + 1; i < n; i++) {
|
|||
|
new_arr[i - firstNegativeIndex - 1] = arr[i];
|
|||
|
}
|
|||
|
|
|||
|
// виводимо новий масив
|
|||
|
cout << "Новий масив: ";
|
|||
|
for (i = 0; i < new_size; i++) {
|
|||
|
cout << new_arr[i] << " ";
|
|||
|
}
|
|||
|
cout << endl;
|
|||
|
|
|||
|
// міняємо місцями мінімальний та максимальний елементи в новому масиві
|
|||
|
swapMinMax(new_arr, new_size);
|
|||
|
|
|||
|
// виводимо новий масив
|
|||
|
cout << "Новий масив зі зміненими місцями мінімального та максимального елементів: ";
|
|||
|
for (i = 0; i < new_size; i++) {
|
|||
|
cout << new_arr[i] << " ";
|
|||
|
}
|
|||
|
cout << endl;
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|