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

Отобрать блоки массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Книги Герберта Шилдта http://www.cyberforum.ru/cpp-beginners/thread595440.html
Здравствуйте! Закончил 1 курс, по программированию на С++ остановились на классах, наследовании и пр. для дальнейшего изучения языка хочу приобрести книжку, больше всего хвалят именно Шилдта. Хорошо,...
C++ Оформление программы в виде функций Программа определяет произведение элементов в тех строках, которые не содержат отрицательных элементов. Нужно оформить ее в виде функции. Все данные для функций должны передаваться им в качестве... http://www.cyberforum.ru/cpp-beginners/thread595424.html
Найти максимум из чисел C++
1)Дана последовательность целых чисел,заканчивающаяся числом С(С константа ,является признаком окончания ввода и в саму последовательность не входит).С=12212.Найти максимум из чисел,сумма цифр...
C++ ios_base::unsetf
Чего-то ругается на unsetf. Что я задал не так? #include <iostream> using std::ios_base; using std::ostream; ostream& operator<<(ostream& os, const Date& date) { os.fill('0'); os.width(2);...
C++ Ввод string'a с консоли и запись его в вектор http://www.cyberforum.ru/cpp-beginners/thread595367.html
Здравствуйте дело в том что мне надо написать программу которая работает с строчным вектором типа string. Вроде-бы все нормально я набросал код, но я не знаю как ввести string с консоли. Мне не надо...
C++ Создать производные классы: Rectangle (прямоугольник), Circle (круг), Triangle (треугольник) со своими методами вычисления площади и периметра Создать производные классы: Rectangle (прямоугольник), Circle (круг), Triangle (треугольник) со своими методами вычисления площади и периметра. подробнее

Показать сообщение отдельно
revaldo666
9 / 9 / 1
Регистрация: 18.07.2010
Сообщений: 180

Отобрать блоки массива - C++

04.06.2012, 08:50. Просмотров 290. Ответов 0
Метки (Все метки)

Всем доброго времени суток, необходимо отобрать элементы массива заключённые в нули (то есть отобрать единицы) и переместить каждый блок из единиц в отдельный массив.Размер массива может быть произвольный, как и расположение элементов в нём, также могут быть и сложные конструкции типа
00111111100
00100000100
00101100100
00101100100
00100000100
00111111100
00000000000
ну и естественно не обязательно квадратной формы, возможны любые варианты.
. Изначально чтобы определить единици я прохожусь по массиву рекурсивной функцией, однако как отделить отдельные блоки не знаю. По этому прошу вашей помощи.
Вот код функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void checkImage(int r,int e,int & ch)
        {
           
            if (e < 0 || r < 0 || r>=Width ||e>=Height)
                return;
            if (ch[r, e] == true)
                return;
            ch[r, e] = true;
            checkImage(r + 1, e, ch);
            checkImage(r, e+1, ch);
            checkImage(r - 1, e, ch);
            checkImage(r, e-1, ch);
//ch это массив чисел.
        }
00000000000000000000
00011110000111100000
00011110000100111000
00011110000100001000
00000000000111111000
00000000000000000000
00000001111100000000
00000001111100000000
00000000101000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000

Добавлено через 10 часов 20 минут
Чтоб было более понятно, ответ должен быть таким:
ответ
массив 1 (позиции первого блока)
1111
1111
1111
массив 2(позиции второго блока)
111
1 111
1 1
11111
массив 3(позиции третьего блока)
11111
11111
1 1
и так далее если есть ещё блоки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru