Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Altair7610
0 / 0 / 0
Регистрация: 21.02.2015
Сообщений: 10
#1

Покраска элемента массива

20.09.2016, 18:12. Просмотров 301. Ответов 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
Ответы с готовыми решениями:

Вывести на экран все элементы массива, которые меньше последнего элемента и больше первого элемента
Первая строка число N,(N&gt;0) -- длина массива. Длина массива не более 100...

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

Заменить все минимальные элементы массива на значение элемента массива, большего минимального
Заменить все минимальные элементы массива на значение элемента массива, ...

В начало массива А переписать нечетные элементы массива В, расположенные левее максимального элемента
Вводятся массивы А и В. В начало массива А переписать нечетные элементы массива...

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

6
Raali
639 / 343 / 74
Регистрация: 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
sourcerer
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 / 57
Регистрация: 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Эксперт С++
10054 / 5974 / 1493
Регистрация: 25.07.2009
Сообщений: 11,320
21.09.2016, 16:58 #6
LaFayette,
Цитата Сообщение от Altair7610 Посмотреть сообщение
Писал в VS
осталось как-то убедить виндовский cmd, что он должен escape последовательности распознавать...

Было недавно: http://www.cyberforum.ru/post9489402.html
0
LaFayette
46 / 46 / 57
Регистрация: 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

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

Массив: В начало массива А вставить нечетные элементы массива В, расположенные левее максимального элемента.
Вводятся массивы А и В. В начало массива А вставить нечетные элементы массива...

Вывод элемента массива, значение которого меньше всего отличается от арифметической средней всех элементов массива
Всем доброго дня! Работаю над заданием. Только не сделал его до конца....


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

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

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