У цій главі скомпоновані задачі таких типів:
Напишіть функцію з прототипом void SwapArr(int* arr, int n, int k1, int k2), яка у масиві arr міняє місцями елементи з індексами k1 та k2.
Напишіть програму, яка:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void RandArr(int* arr, int n, int a, int b);
void PrintArr(int* arr, int n);
int FindFirst(int* arr, int n);
int FindLast(int* arr, int n);
void SwapArr(int* arr, int n, int k1, int k2);
int main() {
srand(time(0)); // Ініціалізація генератора випадкових чисел
int a, b, n;
cout << "Введіть початок інтервалу a: ";
cin >> a;
cout << "Введіть кінець інтервалу b: ";
cin >> b;
cout << "Введіть кількість елементів масиву n: ";
cin >> n;
int mass[n]; // Оголошення масиву
RandArr(mass, n, a, b); // Заповнення масиву
cout << "Початковий масив: ";
PrintArr(mass, n); // Виведення масиву
int firstEven = FindFirst(mass, n); // Індекс першого парного
int lastOdd = FindLast(mass, n); // Індекс останнього непарного
if (firstEven != -1 && lastOdd != -1) {
SwapArr(mass, n, firstEven, lastOdd); // Обмін елементів
cout << "Масив після обміну: ";
PrintArr(mass, n);
} else {
cout << "error: не знайдено потрібних елементів";
}
return 0;
}
void RandArr(int* arr, int n, int a, int b) {
for (int i = 0; i < n; i++) {
arr[i] = a + rand() % (b - a + 1);
}
}
void PrintArr(int* arr, int n) {
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
int FindFirst(int* arr, int n) {
for (int i = 0; i < n; i++) {
if (arr[i] % 2 == 0) { // Перевірка на парність
return i;
}
}
return -1; // Якщо парних елементів немає
}
int FindLast(int* arr, int n) {
for (int i = n - 1; i >= 0; i--) {
if (arr[i] % 2 != 0) { // Перевірка на непарність
return i;
}
}
return -1; // Якщо непарних елементів немає
}
void SwapArr(int* arr, int n, int k1, int k2) {
if (k1 >= 0 && k1 < n && k2 >= 0 && k2 < n) {
int temp = arr[k1];
arr[k1] = arr[k2];
arr[k2] = temp;
}
}
Знаходить індекс першого парного елемента:
Знаходить індекс останнього непарного елемента:
Міняє місцями два елементи масиву:
Введіть початок інтервалу a: 1
Введіть кінець інтервалу b: 10
Введіть кількість елементів масиву n: 6
Початковий масив: 3 8 5 2 7 4
Масив після обміну: 3 7 5 2 8 4
Введіть початок інтервалу a: 1
Введіть кінець інтервалу b: 9
Введіть кількість елементів масиву n: 5
Початковий масив: 3 7 5 9 1
Error: не знайдено потрібних елементів
Введіть початок інтервалу a: 2
Введіть кінець інтервалу b: 10
Введіть кількість елементів масиву n: 4
Початковий масив: 2 4 6 8
Error: не знайдено потрібних елементів
Ця програма демонструє роботу з масивом, пошук конкретних елементів та їх обмін. Особливістю реалізації є перевірка наявності обох потрібних елементів перед виконанням обміну.
Напишіть функцію з прототипом void SwapArr(int* arr, int n, int k1, int k2), яка у масиві arr переставляє в зворотному порядку всі елементи, що знаходяться між елементами з індексами k1 та k2 включно.
Напишіть програму, яка:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void RandArr(int* arr, int n, int a, int b);
void PrintArr(int* arr, int n);
void SwapArr(int* arr, int n, int k1, int k2);
int main() {
srand(time(0)); // Ініціалізація генератора випадкових чисел
int a, b, n;
cout << "Введіть початок інтервалу a: ";
cin >> a;
cout << "Введіть кінець інтервалу b: ";
cin >> b;
cout << "Введіть кількість елементів масиву n: ";
cin >> n;
int mass[n]; // Оголошення масиву
RandArr(mass, n, a, b); // Заповнення масиву
cout << "Початковий масив: ";
PrintArr(mass, n); // Виведення масиву
// Реверсуємо весь масив (від першого до останнього елемента)
SwapArr(mass, n, 0, n-1);
cout << "Масив після реверсування: ";
PrintArr(mass, n);
return 0;
}
void RandArr(int* arr, int n, int a, int b) {
for (int i = 0; i < n; i++) {
arr[i] = a + rand() % (b - a + 1);
}
}
void PrintArr(int* arr, int n) {
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
void SwapArr(int* arr, int n, int k1, int k2) {
// Перевірка коректності індексів
if (k1 < 0 || k2 >= n || k1 > k2) return;
// Реверсування підмасиву від k1 до k2
while (k1 < k2) {
// Обмін елементів місцями
int temp = arr[k1];
arr[k1] = arr[k2];
arr[k2] = temp;
// Зсув індексів до центру
k1++;
k2--;
}
}
Функція SwapArr виконує наступні дії:
Введіть початок інтервалу a: 1
Введіть кінець інтервалу b: 10
Введіть кількість елементів масиву n: 5
Початковий масив: 3 8 5 2 7
Масив після реверсування: 7 2 5 8 3
Введіть початок інтервалу a: 10
Введіть кінець інтервалу b: 20
Введіть кількість елементів масиву n: 6
Початковий масив: 12 15 18 11 14 17
Масив після реверсування: 17 14 11 18 15 12
Ця програма демонструє реверсування масиву шляхом обміну елементів від початку до кінця. Функція SwapArr є універсальною і може використовуватись для реверсування будь-якої частини масиву, заданої індексами k1 і k2.
За допомогою функцій: RandArr, PrintArr, FindFirst, FindLast, SwapArr у одновимірному масиві поміняйте місцями перший та останній від'ємні елементи масиву. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функцій: RandArr, PrintArr, FindFirst, FindLast, SwapArr у одновимірному масиві поміняйте місцями перший та останній додатні елементи масиву. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функцій: RandArr, PrintArr, FindFirst, FindLast, SwapArr у одновимірному масиві поміняйте місцями перший та останній елементи масиву які кратні 3. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функцій: RandArr, PrintArr, IndMin, IndMax, SwapArr у одновимірному масиві поміняйте місцями перший мінімальний та перший максимальний елементи. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функцій: RandArr, PrintArr, IndMin, IndMax, SwapArr у одновимірному масиві поміняйте місцями останній мінімальний та останній максимальний елементи. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функцій: RandArr, PrintArr, FindFirst, FindLast, SwapArr у одновимірному масиві поміняйте місцями перше та останнє однозначні числа. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функцій: RandArr, PrintArr, FindFirst, FindLast, SwapArr у одновимірному масиві поміняйте місцями перше та останнє двозначні числа. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функцій: RandArr, PrintArr, FindFirst, FindLast, SwapArr у одновимірному масиві поміняйте місцями його перше однозначне та останнє двозначне числа. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функцій: RandArr, PrintArr, FindFirst, FindLast, IsPrime, SwapArr у одновимірному масиві поміняйте місцями його перше та останнє прості числа. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функцій: RandArr, PrintArr, FindFirst, FindLast, IsFib, SwapArr у одновимірному масиві поміняйте місцями його перше та останнє числа Фібоначчі. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функцій: RandArr, PrintArr, FindFirst, FindLast, SwapArr у одновимірному масиві переставте у зворотному порядку всі його елементи між першим та останнім від'ємними елементами. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функцій: RandArr, PrintArr, FindFirst, FindLast, SwapArr у одновимірному масиві переставте у зворотному порядку всі його елементи між першим та останнім елементами, що кратні 5. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функцій: RandArr, PrintArr, IndMin, IndMax, SwapArr у одновимірному масиві переставте у зворотному порядку його елементи між першим мінімальним та останнім максимальним. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функцій: RandArr, PrintArr, FindFirst, FindLast, IsPrime, SwapArr у одновимірному масиві переставте у зворотному порядку його елементи між першим та останнім простими числами. Якщо хоча б один із елементів не знайдено, то вивести повідомлення.
За допомогою функції RandArr заповніть одновимірний масив випадковими цілими числами.
За допомогою функції PrintArr виведіть масив на екран.
За допомогою функції SwapArr у одновимірному масиві переставте елементи його половин у зворотному порядку.
Для парної кількості елементів, наприклад, було (0 1 2 3 4 5 6 7), стало (3 2 1 0 7 6 5 4).
Для непарної кількості елементів, наприклад, було (0 1 2 3 4 5 6 7 8), стало (3 2 1 0 8 7 6 5 4).
За допомогою функції RandArr заповніть одновимірний масив випадковими цілими числами.
За допомогою функції PrintArr виведіть масив на екран.
Напишіть функцію з прототипом void SwapArr(int* arr, int n), яка міняє місцями його половини таким чином:
Для парної кількості елементів, наприклад, було (0 1 2 3 4 5 6 7 8 9), стало (5 6 7 8 9 0 1 2 3 4).
Для непарної кількості елементів, наприклад, було (0 1 2 3 4 5 6 7 8), стало (5 6 7 8 0 1 2 3 4).
За допомогою функції RandArr заповніть одновимірний масив з парної кількості елементів випадковими цілими числами.
За допомогою функції PrintArr виведіть масив на екран.
Якщо в масиві непарна кількість елементів, то вивести повідомлення.
Напишіть функцію з прототипом void SwapArr(int* arr, int n), яка міняє місцями його елементи таким чином: наприклад, було 0 1 2 3 4 5 6 7 8 9 стало 1 0 3 2 5 4 7 6 9 8. Тобто перший з другим, третій з четвертим ...