Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 02.07.2017
Сообщений: 15
1

Раскраска

03.07.2017, 18:59. Просмотров 1372. Ответов 6
Метки нет (Все метки)

Дан двумерный массив целых чисел размером NxM. Даны координаты точки раскраски и число раскраски.Необходимо заменить все одинаковые числа прилягающие к координате раскраски и числа прилягающие к прилягающие к координатам раскраски и т.д. на число раскраски. Данные вводятся из файла. Ограничения : N и M от 1 до 10. Кол-во цветов не более 7.

Пример :
Ввод :
5 4 //размерность
1 1 1 1 1
1 2 2 2 1
2 2 3 1 1
2 2 2 2 1

2 4 // координата
5 //цвет

Вывод:
5 5 5 5 5
5 2 2 2 5
2 2 3 5 5
2 2 2 2 5
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.07.2017, 18:59
Ответы с готовыми решениями:

раскраска
Ребят, сделайте если не сложно, пожалуйста. Заранее спасибо вам Задана перестановка n чисел a1,...

Раскраска графа
написать на С++ Определить минимальное число красок, которыми можно раскрасить граф и вывести...

Раскраска таблицы умножения
Раскраска таблицы умножения (Время: 1 сек. Память: 16 Мб Сложность: 32%) Таблицей умножения...

Раскраска произвольной прямоугольной области
Добрый день! На сетке задана произвольная область, состоящая из прямоугольников и "жучок", ...

6
68 / 67 / 52
Регистрация: 28.10.2015
Сообщений: 388
04.07.2017, 00:30 2
Лучший ответ Сообщение было отмечено OLeG1k как решение

Решение

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
65
66
67
68
69
70
71
72
73
#include <iostream>
using namespace std;
 
int cordX;
int cordY;
const int maxX=4;
const int maxY=5;
const int  colorNumber=5;
int arr[maxX][maxY]{ { 1,1,1,1,1 },
                    { 1,2,2,2,1 },
                    { 2,2,3,1,1 },
                    { 2,2,2,2,1 } };
bool arr_ch[maxX][maxY]{ { 1,1,1,1,1 },
{ 1,1,1,1,1 },
{ 1,1,1,1,1 },
{ 1,1,1,1,1 } };
 
void func(int x,int y)
{
    
    if ((x-1>=0 && y<=maxY)&&(arr[x][y] == arr[x - 1][y])&&arr_ch[x-1][y]==1)
    {
        arr_ch[x][y] = 0;
        func(x - 1, y);
    }
    if ((x<= maxX && y - 1 >= 0) && (arr[x][y] == arr[x][y - 1]) && arr_ch[x][y-1] == 1)
    {
        arr_ch[x][y] = 0;
        func(x, y - 1);
    }
    if ((x + 1 <= maxX && y <= maxY) && (arr[x][y] == arr[x + 1][y]) && arr_ch[x+1][y] == 1)
    {   
        arr_ch[x][y] = 0;
        func(x + 1, y);
    }
    if ((x <=maxX && y +1 <= maxY) && (arr[x][y] == arr[x][y + 1]) && arr_ch[x][y+1] == 1)
    {   
        arr_ch[x][y] = 0;
        func(x, y + 1);
    }
    arr[x][y] = colorNumber;
}
    
int main()
{
    for (size_t i = 0; i < maxX; i++)
    {
        for (size_t j = 0; j < maxY; j++)
        {
            cout << arr[i][j] << ends;
        }
        cout << endl;
    }
    cout << endl;
 
    int cordX = 2;
    int cordY = 4;
    func(cordX, cordY);
    
    for (size_t i = 0; i < maxX; i++)
    {
        for (size_t j = 0; j < maxY; j++)
        {
            cout << arr[i][j] << ends;
        }
        cout << endl;
    }
 
 
 
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 02.07.2017
Сообщений: 15
05.07.2017, 16:19  [ТС] 3
А можно пояснения к коду? А то я как-то не совсем понимаю его работу.
0
68 / 67 / 52
Регистрация: 28.10.2015
Сообщений: 388
05.07.2017, 20:36 4
Цитата Сообщение от OLeG1k Посмотреть сообщение
А можно пояснения к коду? А то я как-то не совсем понимаю его работу.
Функция func принимает координаты позиции и проверяет возможность перехода на позицию вверх, вниз, влево, вправо. Если переход в позицию возможен, вызываем func уже с координатами новой позиции.
Массив bool arr_ch нужен для отметки уже закрашенных позиций.
1
0 / 0 / 0
Регистрация: 02.07.2017
Сообщений: 15
06.07.2017, 20:10  [ТС] 5
А можно как-нибудь реализовать с вводом массива из файла?
0
68 / 67 / 52
Регистрация: 28.10.2015
Сообщений: 388
06.07.2017, 22:27 6
Цитата Сообщение от OLeG1k Посмотреть сообщение
А можно как-нибудь реализовать с вводом массива из файла?
http://cppstudio.com/post/446/
0
1 / 1 / 1
Регистрация: 06.07.2017
Сообщений: 12
06.07.2017, 22:33 7
А можно как-нибудь реализовать с вводом массива из файла?
Подключить <fstream>
Код
#include <fstream>
Потом работать с созданым вами файлом в папке проекта через fin для считывания и fout для записи.
Код
ifstream fin("input.txt");
int a;
fin » a;
Тоесть мы переменной "а" передали значение первого символа до пробела с файла.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2017, 22:33

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Раскраска
Здравствуйте. Существует ли способ как-нибудь узнать/записать в переменную цвет определённого...

Раскраска
Добрый день! Здесь описан замечательный урок: тема «Делаем детские разукрашки» Не могли бы вы...

Раскраска stringgrid
как можно раскрасить stringgrid, к примеру 1 строчку светло-зеленым, а другую зеленым?

DBGrid раскраска
http://www.delphikingdom.ru/images/cg1.gif Как раскрасить строки в DBGrid через один. Хочу...


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

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

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