Другие языки программирования и технологии

Здравствуйте нужна помощь при покраске двух значений. С++

Написал код, создал динамический массив, по заданию нужно указать максимальную разность между двумя соседними элементами массива и выделить при выводе эти элементы красным цветом.

Я покрасил только максимальную разность например если у нас есть такие числа: 1 3 2 6 - максимальная разность будет 4. Как мне покрасить два числа где находится это разность, в данном случае 2 и 6 -их и нужно покрасить.

Вот код :

#include "stdafx.h"
#include
#include
#include

using namespace std;

void massiv(int* x, int n)//функция заполнения и изменения
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

for (int i = 0; i < n; i++)//заполнение массива
{

*(x+i) = rand() % 10;

cout << *(x+i) << " ";

}
SetConsoleTextAttribute(hConsole, (WORD)((7 << 4) | 4));
int id = 0; // id - первый элемент пары, дающей максимальную разность

for (int i = 1; i < n - 1; i++)

if (abs(x[i] - x[i + 1]) > abs(x[id] - x[id + 1]))
{

id = i;

}

cout << endl;
SetConsoleTextAttribute(hConsole, (WORD)((7 << 4) | 4));
cout << abs(x[id + 1] - x[id]);

}

int main()
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, (WORD)((7 << 4) | 0));
system("cls");
srand(time(NULL));
int n;
while (!(cin >> n)) //проверка на число
{
cin.clear();
while (cin.get() != '\n');
cout << "NEVERNII VVOD" << endl;
}
if (n <= 0 || n == 1)
{
cout << "Vvedite zanogo";
cin >> n;
}
int* x = new int[n]; //динамическая переменная, выделение памяти

massiv(x, n);//вызов функции
cout << "\n";
SetConsoleTextAttribute(hConsole, (WORD)((7 << 4) | 0));
cout << endl;
system("pause");
return 0;

};
#include <iostream>
#include <random>
#include <iomanip>
#include <Windows.h>
struct TextColor {
TextColor() = delete;
TextColor(const TextColor&) = delete;
void operator=(const TextColor&) = delete;
const enum {
Black,
Blue,
Green,
Cyan,
Red,
Magenta,
Brown,
LightGray,
DarkGray,
LightBlue,
LightGreen,
LightCyan,
LightRed,
LightMagenta,
Yellow,
White
};
};
using namespace std;
constexpr int left() {
return -99;
}
constexpr int right() {
return 99;
}
void fill(int* box, const size_t buffer) {
uniform_int_distribution uid(left(), right());
random_device rd;
mt19937 gen(rd());
for (auto i = 0U; i < buffer; ++i) box[i] = uid(gen);
}
int mx(int* box, const size_t buffer) {
auto m = left();
for (auto i = 0U; i < buffer; ++i) if (box[i] > m) m = box[i];
return m;
}
int mn(int* box, const size_t buffer) {
auto m = right();
for (auto i = 0U; i < buffer; ++i) if (box[i] < m) m = box[i];
return m;
}
int difference(int* box, const size_t buffer) {
return mx(box, buffer) - mn(box, buffer);
}
void show(int* box, const size_t buffer) {
auto l = mn(box, buffer);
auto r = mx(box, buffer);
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
for (auto i = 0U; i < buffer; ++i) {
if (box[i] == l || box[i] == r)
SetConsoleTextAttribute(hConsole, TextColor::LightCyan);
cout << setw(4) << box[i];
if (box[i] == l || box[i] == r)
SetConsoleTextAttribute(hConsole, TextColor::LightGray);
}
cout.put('\n');
}
int main() {
cout << " size: ";
size_t buffer;
cin >> buffer;
int* box = new int[buffer];
fill(box, buffer);
show(box, buffer);
cout << " difference: " << difference(box, buffer) << '\n';
delete[] box;
system("pause");
}
Kanat Kulymkulov
Kanat Kulymkulov
84 655
Лучший ответ