Завдання 1: Є двовимірний масив цілих чисел розміром «5х5». Необхідно заповнити його довільними числами від «1» до «100». Необхідно знайти найбільший та найменший елемент масиву і вивести їх кількість (тобто, скільки разів повторюється найбільший та найменший елемент).
Приклад роботи програми:
Вивід:
max: 97 nmax: 2
min: 3 nmin: 1
Приклад програми:
#include <iostream>
#include <ctime>
int main()
{
srand(time(0));
//зробимо розмір масиву через константну змінну щоб при потребі його
//збільшити/зменшити змінюючи лише одну цифру
const int SIZE = 5;
int mas[SIZE][SIZE];
//заповнюємо масив числами від "1" до "100"
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
mas[i][j] = rand() % 100 + 1;
//max, min - максимальне та мінімальне число у масиві
//nmax, nmin - кількість максимальних та мінімальних чисел.
//оскільки початкова кількість завжди "0" то надаємо значення
//за замовченням. після цього ми матимемо право відразу
//збільшувати ці значення на "1".
int max, min, nmax = 0, nmin = 0;
//для пошуку максимального та мінімального числа нам варто
//буде їх з чимось порівнювати. тому, беремо в якості
//максимального та мінімального числа перший елемент масиву
//можна було б взяти якесь число, що не входить у масив.
//наприклад в якості максимального взяти "0", а
//мінімального "110". але, в реальному житті такого робити не варто
//бо деколи не відомо межі в яких обираються числа
max = mas[0][0];
min = mas[0][0];
//оскільки ми завчасно не знаємо яке число буде максимальним/мінімальним, то
//з першу знайдемо ці числа, а вже після цього шукатимемо їх кількість
for(int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
{
//якщо елемент масиву є більшим за максимальний елемент, то
//ми кажемо, що тепер цей елемент масиву є максимальним
if (max < mas[i][j])
max = mas[i][j];
//якщо елемент масиву є меншим за мінімальний елемент, то
//ми кажемо, що тепер цей елемент масиву є мінімальним
if (min > mas[i][j])
min = mas[i][j];
}
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
{
//якщо елемент масиву є таким же як максимальний/мінімальний, то
//кількість цих елементів відповідно збільшується
if (max == mas[i][j])
nmax++;
if (min == mas[i][j])
nmin++;
}
//ви можете перевірити програму вививши елементи масиву
//for (int i = 0; i < SIZE; i++)
//{
// for (int j = 0; j < SIZE; j++)
// std::cout << mas[i][j] << " ";
//
// std::cout << std::endl;
//}
std::cout << "max: " << max << " nmax: " << nmax << std::endl;
std::cout << "min: " << min << " nmin: " << nmin << std::endl;
return 0;
}
Завдання 2: Дано одновимірний масив цілих чисел з елементів. Масив заповнюється рандомними числами Необхідно написати програму яка буде сортувати цей масив за зростанням (від найменшого до найбільшого) або за спаданням (від найбільшого до найменшого). Метод сортування пропонується обрати користувачеві.
#include <iostream>
#include <ctime>
//"метод бульбашки"
//один з найпопулярніших методів сортування. але він є доволі довгим
//якщо необхідно відсортувати велику кількість даних.
//його принцип доволі простий. опишемо його для сортування "за зростанням"
//отже, ми беремо елемент і перевіряємо його з наступним елементом
//(який йде після обраного). якщо наступний елемент є меншим за обраний
//то їх значення міняємо місцями. якщо ні, то залишаємо як було.
//у випадку коли ми поміняли їх місцями, то перевіряємо цей же елемент знову
//(це виникає за рахунок того, що настає нова ітерація і їх номера
//будуть співпадати)
int main()
{
srand(time(0));
const int SIZE = 20;
int mas[SIZE];
//заповнюємо масив довільними числами від "1" до "100"
for (int i = 0; i < SIZE; i++)
mas[i] = rand() % 100 + 1;
int num, sort;
//num - проміжна змінна яку використовуємо для перестановки елементів
//sort - змінна за допомогою якої обиратимемо порядок сортування
//обираємо як будемо сортувати наш масив
//1 - у порядку зростання
//2 - у порядку спадання
std::cout << "input sort\n"
<< "1 = min -> max\n"
<< "2 = max -> min\n";
std::cin >> sort;
//для перевірки виводимо не відсортований масив
for (int i = 0; i < SIZE; i++)
std::cout << mas[i] << " ";
std::cout << std::endl;
if (sort == 1)
{
//перший цикл це є кількість перестановок" яку ми маємо виконати з
//нашими елементами. цих перестановок має бути на "1" менше чим є
//елементів. оскільки останній елемент буде відсортований автоматично
for(int i = 1; i < SIZE; i++)
//цей цикл виконує "SIZE - i" перестановок з кожним елементом
//оскільки ми з кожним разом будемо мати все більше відсортованих
//елементів, то й кількість перестановок на наступні елементи буде меншою
for (int j = 0; j < SIZE - i; j++)
{
//якщо наступний елемент є меншим, то міняємо їх значення місцями
if (mas[j] > mas[j + 1])
{
num = mas[j];
mas[j] = mas[j + 1];
mas[j + 1] = num;
}
}
}
//у порядку спадання виконуємо ті ж самі дії
else if (sort == 2)
{
for (int i = 1; i < SIZE; i++)
for (int j = 0; j < SIZE - i; j++)
{
//але міняємо елементи місцями, якщо наступний є більшим
if (mas[j] < mas[j + 1])
{
num = mas[j];
mas[j] = mas[j + 1];
mas[j + 1] = num;
}
}
}
for (int i = 0; i < SIZE; i++)
std::cout << mas[i] << " ";
std::cout << std::endl;
return 0;
}
Завдання 3: Є масив цілих чисел з елементів. Необхідно з даного масиву виписати елементи без повторень. Тобто, якщо в початковому масиві є елемент який зустрічається декілька разів, то цей елемент записують лише один раз. В якості елементів масиву беруть числа
#include <iostream>
#include <ctime>
int main()
{
srand(time(0));
const int SIZE = 20;
int mas[SIZE]; //початковий масив
int newmas[SIZE]; //масив елементів які не повторюються
//оскільки ми не знаємо точку кількість унікальних чисел, то
//робимо масив такої ж самої довжини як початковий
//заповнюємо масив довільними числами від "1" до "15"
for (int i = 0; i < SIZE; i++)
mas[i] = rand() % 15 + 1;
int n = 0; //кількість унікальних чисел
bool yn = false; //змінна яка буде казати чи число унікальне
//проходимося по всіх елементах базового масиву
for (int i = 0; i < SIZE; i++)
{
//беремо елемент з базового масиву
for (int j = 0; j < n; j++)
{
//і порівнюємо чи вже такий елемент є
if (mas[i] == newmas[j])
{
//якщо такий елемент є, то вказуємо, що він не унікальний
yn = true;
//та завершуємо цикл
break;
}
}
//якщо елемент був не унікальним, то при переході до наступного
//елементу робимо "перемикач" в початкове значення
if (yn)
yn = false;
else
{
//якщо елемент був унікальним, то записуємо його в новий
//масив і збільшуємо кількість унікальних елементів на "1"
newmas[n] = mas[i];
n++;
}
}
//виводимо наші масиви
for (int i = 0; i < SIZE; i++)
std::cout << mas[i] << " ";
std::cout << std::endl;
for (int i = 0; i < n; i++)
std::cout << newmas[i] << " ";
std::cout << std::endl;
return 0;
}