Programming_Course1_Session2/15/Lab15/Lab15.cpp

97 lines
2.4 KiB
C++
Raw Normal View History

2023-03-09 00:03:04 +02:00
#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;
}