Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
Altair7610
0 / 0 / 0
Регистрация: 21.02.2015
Сообщений: 10
#1

Покраска элемента массива - C (СИ)

20.09.2016, 18:12. Просмотров 286. Ответов 6
Метки нет (Все метки)

Привет друзья! Собственно какой возник вопрос. Делаю лабу, нужно сгенерировать массив, отсортировать его, и в процессе сортировки цветом выделять меняющиеся друг с другом элементы. То есть, идет сравнение пары, если пара правильная, выделить ее зеленым, обновить экран, сравнивать дальше. Если пара неправильная, выделить красным, обновить экран. И так до конца. Сортировка вроде как готова, улучшения приветствуются. Стоит вопрос с покраской, гуглил, ничерта не понял. Прошу помощи)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <locale.h>
#include <string.h>
const int N = 10;
void main() {
    setlocale(LC_ALL, "Russian");
    int A[N] = {};
    srand(time(NULL));
    for (int i = 0; i < N; i++) {
        A[i] = rand() % 2001 - 1000;
    }
    int G[N] = {};
    for (int i = 0; i < 10; i++)
        G[i] = A[i];
    for (int i = 0; i < N - 1; i++)
        for (int j = N - 2, c; j >= i; j--)
            if (A[j] > A[j + 1]) {
                printf("Сгенерированный массив: \n");
                for (int i = 0; i < N; i++)
                    printf("%d ", A[i]);
                    printf("    < %d %d >", A[j], A[j + 1]);
                    _getch();
                    system("cls");
     c = A[j]; A[j] = A[j + 1];
     A[j + 1] = c;
            }
    printf("Сгенерированный массив: \n");
    for (int i = 0; i < N; i++)
        printf("%d ", G[i]);
    printf("\nОтсортированный массив: \n");
    for (int i = 0; i < N; i++)
        printf("%d ", A[i]);
    _getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2016, 18:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Покраска элемента массива (C (СИ)):

Найти сумму элементов массива, расположенных до минимального элемента массива - C (СИ)
В одномерном массиве n вещественных элементов. вычислить: -произведение положительных элементов массива. -сумму элементов массива,...

Дописать в конец массива 2 элемента, в первый их них записать сумму элементов массива - C (СИ)
Помогите пожалуйста с задачей: Организовать ввод динамического массива размером N. Дописать в конец массива 2 элемента, в первый их...

Посчитать количество элементов двумерного массива, стоящих до максимального элемента этого массива - C (СИ)
Посчитать количество элементов двумерного массива, стоящих до максимального элемента этого массива.

Вывод элемента массива, значение которого меньше всего отличается от арифметической средней всех элементов массива - C (СИ)
Всем доброго дня! Работаю над заданием. Только не сделал его до конца. Помогите пожалуйста доделать! Условие: С клавиатуры вводится...

Определить порядковые номера элементов массива, значения которых содержат последнюю цифру первого элемента массива 2 раза - C (СИ)
Задается массив. Определить порядковые номера элементов массива, значения которых содержат последнюю цифру первого элемента массива 2 раза...

Поиск элемента массива - C (СИ)
#include&lt;conio.h&gt; #include&lt;stdio.h&gt; #include&lt;math.h&gt; main() { int j=0,n,i=0,; int array,rez; printf(&quot;vvedit...

6
Raali
639 / 343 / 42
Регистрация: 06.07.2013
Сообщений: 1,107
Завершенные тесты: 1
20.09.2016, 18:23 #2
прочитал раз 5, ничего не понял, прошу помощи

вопрос в том чтобы вывести цветной текст в консоли ?
0
Altair7610
0 / 0 / 0
Регистрация: 21.02.2015
Сообщений: 10
20.09.2016, 18:26  [ТС] #3
Raali, да, короче, когда прога работает, массив меняется как бы в режиме реального времени. Рядом выводятся сравниваемы пары. Задача - если пары идут не по возрастанию значений - покрасить красным и эту пару и ее же в массиве. Если по возрастанию, аналогично, но зеленым.
Объяснил криво, лучше запустить прогу и посмотреть) Писал в VS
0
gru74ik
20.09.2016, 18:54
  #4

Не по теме:

Altair7610, перенёс твою тему в Си, поскольку код на чистом Си написан. Исправил два заголовочника:

вместо

C++
1
2
#include <ctime>
#include <clocale>
сделал
C
1
2
#include <time.h>
#include <locale.h>

0
LaFayette
46 / 46 / 40
Регистрация: 25.11.2015
Сообщений: 139
21.09.2016, 09:25 #5
Altair7610,

Вот пример как это может работать хотя все пары всегда выводятся красным цетом ну это характеристика твоего алгоритма...

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
 
// RED      \x1b[31m
// GREEN    \x1b[32m 
// YELLOW   \x1b[33m
// BLUE     \x1b[34m
// MAGENTA  \x1b[35m
// CYAN     \x1b[36m
// RESET    \x1b[0m
 
const int N = 10;
 
int main( void ) {
    
    int A[N], a, i;
    
    srand(time(NULL));
    
    for (int i = 0; i < N; i++) {
        A[i] = rand() % 2001 - 1000;
    }
    
    int G[N];
    for (int i = 0; i < 10; i++)
        G[i] = A[i];
    
    for ( i = 0; i < N - 1; i++)
        for (int j = N - 2, c; j >= i; j--)
            
            if (A[j] > A[j + 1]) {
                printf("Сгенерированный массив: \n");
                for ( a = 0; a < N; a++)
                    
                    if ( a == j + 1 || a == j )
                        printf( "\x1b[31m%4d\x1b[0m", A[a] );
                    else
                    printf( "%4d", A[a]);
                    
                    printf( "    \x1b[31m< %d %d >\x1b[0m", A[j], A[j + 1]);
                    getchar();
                    
                    c = A[j]; 
                    A[j] = A[j + 1];
                    A[j + 1] = c;               
    }
    
 
    printf("Сгенерированный массив: \n");
    for ( i = 0; i < N; i++)
        if ( G[i] != A[i])
        printf("\x1b[31m%4d\x1b[0m", G[i]);
        else 
            printf( "\x1b[32m%4d\x1b[0m", G[i]);
    printf("\nОтсортированный массив: \n");
    for ( i = 0; i < N; i++)
        printf("\x1b[32m%4d\x1b[0m", A[i]);
    getchar();
 
return EXIT_SUCCESS;
 
}
0
easybudda
Модератор
Эксперт CЭксперт С++
10020 / 5943 / 1004
Регистрация: 25.07.2009
Сообщений: 11,230
21.09.2016, 16:58 #6
LaFayette,
Цитата Сообщение от Altair7610 Посмотреть сообщение
Писал в VS
осталось как-то убедить виндовский cmd, что он должен escape последовательности распознавать...

Было недавно: Цвет текста в консоли
0
LaFayette
46 / 46 / 40
Регистрация: 25.11.2015
Сообщений: 139
21.09.2016, 17:06 #7
невнимательно прочитал извиняюсь.
0
21.09.2016, 17:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2016, 17:06
Привет! Вот еще темы с ответами:

Возврат номера элемента массива - C (СИ)
Добрый день, помогите написать функцию, которая выводила бы номер указанного элемента массива. Вот я что накорябал. Но не могу понять...

Удаление элемента из массива строк - C (СИ)
Не получается как-то удалить определенную запись. Код ниже. Мб кто-то знает как #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include...

Структура элемента массива «владелец» - C (СИ)
Добрый день. Подскажите пожалуйста, фрагмент кода, который будет отвечать за: количество автомобилей каждой марки. владельца самого...

Вывод случайного элемента массива - C (СИ)
В книгах ищу нету. представим у нас есть массив из некоторых слов.типа char s; s=&quot;asd&quot;; s=&quot;qwe&quot;; s=&quot;\0&quot;; нужно вывести на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru