Домашнее задание C++: цветной массив
Заполнить массив целых чисел 100 случайными числами в диапазоне -99...99, вывести его на экран
в виде таблицы по 10 чисел в строке, выделяя минимальный элемент зеленым цветом (10), а максимальный
элементы красным цветом (12). Напишите дополнительные функции, чтобы также выделить:
A: все нули синим цветом (9)
B: числа, наиболее близкие к среднему арифметическому массива, фиолетовым цветом (13)
C: числа, наиболее часто встречающиеся в массиве, желтым цветом (14)
в закрепе пример выполнения задачи
![](https://st.uroker.com/files/486/4863e405fb5f23fe99c00d005a7147c6.png)
![](https://st.uroker.com/files/9ed/9ed959fb5855e1cc9531cfe1a9ac01d2.png)
Ответы
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
const int ARRAY_SIZE = 100;
const int RANGE_MIN = -99;
const int RANGE_MAX = 99;
void printArray(int arr[], int size)
{
for (int i = 0; i < size; i++)
{
if (i % 10 == 0)
cout << endl;
if (arr[i] == *min_element(arr, arr+size))
cout << "\033[32m" << arr[i] << "\033[0m ";
else if (arr[i] == *max_element(arr, arr+size))
cout << "\033[31m" << arr[i] << "\033[0m ";
else if (arr[i] == 0)
cout << "\033[34m" << arr[i] << "\033[0m ";
else if (arr[i] == *min_element(arr, arr+size, [&](int a, int b){ return abs(a - (accumulate(arr, arr+size, 0) / size)) < abs(b - (accumulate(arr, arr+size, 0) / size)); }))
cout << "\033[35m" << arr[i] << "\033[0m ";
else if (arr[i] == *max_element(arr, arr+size, [&](int a, int b){ return count(arr, arr+size, a) < count(arr, arr+size, b); }))
cout << "\033[33m" << arr[i] << "\033[0m ";
else
cout << arr[i] << " ";
}
cout << endl;
}
int main()
{
srand(time(0));
int arr[ARRAY_SIZE];
for (int i = 0; i < ARRAY_SIZE; i++)
{
arr[i] = rand() % (RANGE_MAX - RANGE_MIN + 1) + RANGE_MIN;
}
printArray(arr, ARRAY_SIZE);
return 0;
}