Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 30.07.2009
Сообщений: 24

Посчитать, сколько закрашенно прямоугольников на поле

19.08.2009, 14:17. Показов 4923. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть клетчатое прямоугольное поле с размерами m на n, на этом поле по линиям сетки закрашено несколько прямоугольников все одним цветом, задача посчитать сколько закрашенно прямоугольников на поле, пользователь вводит значения m и n, и построчно состояние клеток поля
пример:
5
6
00000
00110
00110
00000
01110
01110
Программа должна определить сколько прямоугольников закрашено и почитать их кол-во
В этом примере 2 прямоугольника закрашены
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.08.2009, 14:17
Ответы с готовыми решениями:

OpenCV: определить сколько на фото кругов и сколько прямоугольников
есть несколько фото и нужно определить сколько на фото кругов и сколько прямоугольников

Посчитать наименьшую площадь нескольких прямоугольников
Вводится количество прямоугольников, вводится противоположные точки (x1y1 x3y3), программа считает наименьшую площадь. #include...

Посчитать количество прямоугольников, заданных черным цветом
С++ изучаю несколько месяцев и есть проблемы с синтаксисом и пониманием=) Не совсем понятно что от меня требуют? И не знаю как...

30
0 / 0 / 0
Регистрация: 30.07.2009
Сообщений: 24
05.09.2009, 13:00  [ТС]
Студворк — интернет-сервис помощи студентам
а еще можешь сделать, что бы прямоугольник находился по 1 углу? а не по 4м?
0
 Аватар для homich77
81 / 80 / 4
Регистрация: 06.04.2009
Сообщений: 326
07.09.2009, 11:13
Т.е. так:
0010
0010
будет 2 прямоугольника?
0
0 / 0 / 0
Регистрация: 30.07.2009
Сообщений: 24
07.09.2009, 18:12  [ТС]
нет 1 , если так
0010
0010
0100

так 2
0
 Аватар для homich77
81 / 80 / 4
Регистрация: 06.04.2009
Сообщений: 326
07.09.2009, 18:27
ну так оно так и должно считать
Подумай, если находить по одному углу, то ты не сможешь определить где у тебя заканчивается прямоугольник.
0
0 / 0 / 0
Регистрация: 30.07.2009
Сообщений: 24
07.09.2009, 18:47  [ТС]
а если конец определять по 0????
0
 Аватар для homich77
81 / 80 / 4
Регистрация: 06.04.2009
Сообщений: 326
07.09.2009, 19:04
ну да - либо ноль, либо единица находится уже последней в строке/столбце и тогда считается концом прямоугольника
0
0 / 0 / 0
Регистрация: 30.07.2009
Сообщений: 24
07.09.2009, 22:08  [ТС]
а если по столцам сделать ???
0001
0001
0100- вот из за этого последнего нуля и получается конец того верхнего прямоугольника
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
08.09.2009, 08:44
Это классическая задача и очень старая.
Считается что прямоугольники заданы корректно - то есть не пересекаются и они прямоугльные.
Кол-во прямоугольников считается по числу их верхних левых углов.
Нужно только не ошибиться на границе.
0
 Аватар для homich77
81 / 80 / 4
Регистрация: 06.04.2009
Сообщений: 326
08.09.2009, 10:10
Цитата Сообщение от vauper Посмотреть сообщение
а если по столцам сделать ???
0001
0001
0100- вот из за этого последнего нуля и получается конец того верхнего прямоугольника
Если ввести :
0001
0001
Оно посчитает 1 прямоугольник - и не нужен ему 0! не могу понять что у тебя не работает! напиши ещё пример, кот. не пашет.
1
0 / 0 / 0
Регистрация: 30.07.2009
Сообщений: 24
08.09.2009, 10:58  [ТС]
Цитата Сообщение от odip Посмотреть сообщение
Это классическая задача и очень старая.
Считается что прямоугольники заданы корректно - то есть не пересекаются и они прямоугльные.
Кол-во прямоугольников считается по числу их верхних левых углов.
Нужно только не ошибиться на границе.
вот то что он написал нужно))) что бы через 1 левый верхний угол было
0
 Аватар для homich77
81 / 80 / 4
Регистрация: 06.04.2009
Сообщений: 326
08.09.2009, 12:48
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
static void Main(string[] args) {
            Work();
            Console.Write("Если вы хотите выйти из программы, нажмите Enter. Если хотите повторить, нажмите r.\n");
            string s = Console.ReadLine();
            while (s == "r") {
                Console.Clear();
                Work();
                Console.Write("Если вы хотите выйти из программы, нажмите Enter. Если хотите повторить, нажмите r.\n");
                s = Console.ReadLine();
            }
            if (s == "13") {
                return;
            }
        }
 
        static void Work() {
            Console.WriteLine("Введите кол-во столбцов:");
            int amount_columns = 0;
            Int32.TryParse(Console.ReadLine(), out amount_columns);
            Console.WriteLine("Введите кол-во строк:");
            int amount_rows = 0;
            Int32.TryParse(Console.ReadLine(), out amount_rows);
            if (amount_rows == 0 || amount_columns == 0) {
                Console.Write("Error!");
                return;
            }
            int[,] mas = new int[amount_rows, amount_columns];
            Console.WriteLine("Введите массив:");
            for (int i = 0; i < amount_rows; i++) {
                Console.WriteLine(String.Format("Введите строку №{0}", i + 1));
                string str = Console.ReadLine();
                if (str.Length != amount_columns) {
                    Console.WriteLine(String.Format("Вы ввели некорректное кол-во значений!"));
                    i--;
                } else {
                    for (int j = 0; j < amount_columns; j++) {
                        Int32.TryParse(str[j].ToString(), out mas[i, j]);
                    }
                }
            }
            int amount = 0;
            for (int i = 0; i < amount_rows; i++) {
                for (int j = 0; j < amount_columns; j++) {
                    if (mas[i, j] == 1) {
                        if (i == 0 && j == 0) {//если значение в первой ячейке = 1
                            amount++;
                            continue;
                        }
                        if (i == 0 && mas[i, j - 1] == 0) {
                            amount++;
                            continue;
                        }
                        if (j == 0 && mas[i - 1, j] == 0) {
                            amount++;
                            continue;
                        }
                        if (mas[i - 1, j] == 0 && mas[i, j - 1] == 0) { //если значение в столбце/строке не является первым и перед ним и выше него нет 1, т.е. = 0 - это левый верхний угол прямоугольника
                            amount++;
                            continue;
                        }
                    }
                }
            }
            Console.Write(String.Format("Кол-во прямоугольников = {0}.\n", amount.ToString()));
        }
соглашусь, что такой метод быстрее и проще
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.09.2009, 12:48

Метод прямоугольников - посчитать интеграл по левой, правой и средней точке
Доброго времени суток! Такой вопрос, есть программа по методу прямоугольников: #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; ...

Посчитать сумму площадей двух прямоугольников, стороны которых заданы
Надо посчитать суму площадей двух прямоугольников, стороны которых заданы. Но посчитать надо использовав процедуры и функции. Помоги...

Посчитать,сколько элементов массива равны 5 или сколько 5 в массиве
Посчитать,сколько элементов массива равны 5 или сколько 5 в массиве Желательно полная программа и объяснения к ней. Заранее большое...

Сколько прямоугольников в матрице
На квадратном клетчатом листе бумаги(размера МхМ клеток) нарисовано несколько прямоугольников. Каждый прямоугольник состоит из целых...

Сколько всего прямоугольников?
Нужно написать программу, которая сосчитает общее число прямоугольников. (смотрите рисунок) ... решение 1. Создаем матрицу А()...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru