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

Как реализировать заполнение массива квадратами? - C++

Восстановить пароль Регистрация
 
van77715
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 50
26.09.2013, 16:35     Как реализировать заполнение массива квадратами? #1
Я создал програму которая заполняет двумерный масив символами 35, а потом в рандомных местах создает прямоугольники символами 46, мне нужно чтобы все квадраты были связаны друг с другом линиями из знаков 46, как это осуществить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2013, 16:35     Как реализировать заполнение массива квадратами?
Посмотрите здесь:

C++ Являются ли элементы 1-го, квадратами элементов 2-го массива?
Создать массив из элементов другого массива, которые являются полными квадратами C++
Как правильно реализовать заполнение двумерного массива элементами C++
Машина Тьюринга. Перенос нуля. Реализировать на С++ C++
Массив: Как реализировать изменения в массиве по заданным координатам на экране C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
26.09.2013, 16:44     Как реализировать заполнение массива квадратами? #2
связаны были уже после построения всех прямоугольников из символов 46? или во время построения?
просто связаны через друг друга или каждый с каждым?
van77715
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 50
26.09.2013, 16:53  [ТС]     Как реализировать заполнение массива квадратами? #3
Цитата Сообщение от HedgehogLu Посмотреть сообщение
связаны были уже после построения всех прямоугольников из символов 46? или во время построения?
просто связаны через друг друга или каждый с каждым?
построило все прямоугольники >> теперь строит связи через 2 любых( ширина в 1 знак), нужно чтобы они все были вместе, и чтобы не было прямоугольника не связаного хотя бы с 1 прямоугольником еще.
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
26.09.2013, 17:02     Как реализировать заполнение массива квадратами? #4
ну я бы перекрашивал
т.е. берете массив, находите первое попадание символа 46. перекрашиваете прямоугольник (каким либо заранее определенным символом не 35 и не 46) при этом получая его характеристики (начальные и конечные координаты или же начальные координаты и длину с ширной). затем ищите следующее попадание 46 символа. закрашиваете прямоугольник получая и его данные. Проводите между ними линию из закрашенных символов. Т.к. можно цепочкой, то можно забыть про первый прямоугольник а оставить данные только по второму и аналогично перейти к третьему и т.д. пока при поиске символа 46 не дойдете то конца массива.

После этого перекрашиваете все перекрашеные символы в символ 46

Добавлено через 1 минуту
Если перекрашивать нельзя, то просто создаете отдельный массив прямоугльников. А потом соединять их линиями в соответствии с требованиями к линиям.
van77715
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 50
26.09.2013, 17:10  [ТС]     Как реализировать заполнение массива квадратами? #5
Цитата Сообщение от HedgehogLu Посмотреть сообщение
ну я бы перекрашивал
т.е. берете массив, находите первое попадание символа 46. перекрашиваете прямоугольник (каким либо заранее определенным символом не 35 и не 46) при этом получая его характеристики (начальные и конечные координаты или же начальные координаты и длину с ширной). затем ищите следующее попадание 46 символа. закрашиваете прямоугольник получая и его данные. Проводите между ними линию из закрашенных символов. Т.к. можно цепочкой, то можно забыть про первый прямоугольник а оставить данные только по второму и аналогично перейти к третьему и т.д. пока при поиске символа 46 не дойдете то конца массива.

После этого перекрашиваете все перекрашеные символы в символ 46

Добавлено через 1 минуту
Если перекрашивать нельзя, то просто создаете отдельный массив прямоугльников. А потом соединять их линиями в соответствии с требованиями к линиям.
попробую
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
26.09.2013, 17:18     Как реализировать заполнение массива квадратами? #6
успехов
van77715
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 50
26.09.2013, 18:01  [ТС]     Как реализировать заполнение массива квадратами? #7
Цитата Сообщение от HedgehogLu Посмотреть сообщение
успехов
как кстати проводить между ними линию?
через цикл фор и добавлять от 1 точки по 1?
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
26.09.2013, 18:05     Как реализировать заполнение массива квадратами? #8
тут уже какие требования к линиям.
Должны быть они прямыми или ломанными?
Могут ли они пересекаться?
Могут ли они идти по диагонали?

Добавлено через 50 секунд
если просто линиями, то по формуле линии которая определена двумя точками
у=кх+в
van77715
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 50
26.09.2013, 18:10  [ТС]     Как реализировать заполнение массива квадратами? #9
Цитата Сообщение от HedgehogLu Посмотреть сообщение
тут уже какие требования к линиям.
Должны быть они прямыми или ломанными?
Могут ли они пересекаться?
Могут ли они идти по диагонали?

Добавлено через 50 секунд
если просто линиями, то по формуле линии которая определена двумя точками
у=кх+в
еще вопрос, можно и сразу записывать так?
j = j - 10...j + 10 ну от j - 10 до j +10
map[i][j] = 35

Добавлено через 3 минуты
Цитата Сообщение от HedgehogLu Посмотреть сообщение
тут уже какие требования к линиям.
Должны быть они прямыми или ломанными?
Могут ли они пересекаться?
Могут ли они идти по диагонали?

Добавлено через 50 секунд
если просто линиями, то по формуле линии которая определена двумя точками
у=кх+в
линии и прямые и ломаные
по диагонали если будет зигзаг в длину 2 и ширину 2
могут пересекатся
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
26.09.2013, 18:16     Как реализировать заполнение массива квадратами? #10
Цитата Сообщение от van77715 Посмотреть сообщение
еще вопрос, можно и сразу записывать так?
j = j - 10...j + 10 ну от j - 10 до j +10
map[i][j] = 35
что именно вы подразумевали.
т.к. изначальная формулировка ошибочна, в следствии того, что индексация элементов массива всегда идет с 0 и индекс являет собой беззнаковое целое число.
т.о. допустим если индекс у нас байт. то индекс -7 по сути равен 249

Добавлено через 3 минуты
Цитата Сообщение от van77715 Посмотреть сообщение
линии и прямые и ломаные
по диагонали
...
Цитата Сообщение от van77715 Посмотреть сообщение
могут пересекатся
тогда не парься соединяй поочередно прямоугольники обычными линиями по формуле кх+в, где точки для расчета прямой бери например центры прямоугльников.
van77715
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 50
26.09.2013, 18:18  [ТС]     Как реализировать заполнение массива квадратами? #11
Цитата Сообщение от HedgehogLu Посмотреть сообщение
что именно вы подразумевали.
т.к. изначальная формулировка ошибочна, в следствии того, что индексация элементов массива всегда идет с 0 и индекс являет собой беззнаковое целое число.
т.о. допустим если индекс у нас байт. то индекс -7 по сути равен 249
кстати, я вывожу масив обычными циклами фор(i)и в нем фор(j), мне нужно чтобы етот выведенный масив оставляло, и заменяло знаки в некоторой области, чтобы выводило область в массиве.
Например
000
000
001


000
010
000

100
000
000
чтобы выводило область возле 1
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
26.09.2013, 18:24     Как реализировать заполнение массива квадратами? #12
тока тут есть одна оговорка, если тебе нельзя несколько прямоугольников связывать несколько раз, то при построении линии между двумя прямоугольниками надо будет ее проверять на пересечение любых других прямоугольников и соответственно персеченные исключать из дальнейшего расчета. (при перекрашивании тогда придется возвращать исходные значения 46 для прямоугльников при соединении. А именно:возвращать значения для соединяемых прямоугольников, при прорисовки линии в массиве проверять на перекрашенный элемент, и если такой попался, то восстанавливать весь прямоугольник который линия зацепила. В последющем при выборе следующего соединяемого прямоугольника прямоугольника пропускать уже восстановленные.

Добавлено через 1 минуту
на сегодня я с работы ушел. буду за компом не ранее чем через 2 - 3 часа Если к тому моменту вы проблему не решите, постараюсь дальше помочь в ее разрешении
van77715
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 50
26.09.2013, 18:28  [ТС]     Как реализировать заполнение массива квадратами? #13
Цитата Сообщение от HedgehogLu Посмотреть сообщение
тока тут есть одна оговорка, если тебе нельзя несколько прямоугольников связывать несколько раз, то при построении линии между двумя прямоугольниками надо будет ее проверять на пересечение любых других прямоугольников и соответственно персеченные исключать из дальнейшего расчета. (при перекрашивании тогда придется возвращать исходные значения 46 для прямоугльников при соединении. А именно:возвращать значения для соединяемых прямоугольников, при прорисовки линии в массиве проверять на перекрашенный элемент, и если такой попался, то восстанавливать весь прямоугольник который линия зацепила. В последющем при выборе следующего соединяемого прямоугольника прямоугольника пропускать уже восстановленные.

Добавлено через 1 минуту
на сегодня я с работы ушел. буду за компом не ранее чем через 2 - 3 часа Если к тому моменту вы проблему не решите, постараюсь дальше помочь в ее разрешении
спасибо вообщем
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
26.09.2013, 20:52     Как реализировать заполнение массива квадратами? #14
если что я вернулся
van77715
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 50
26.09.2013, 22:23  [ТС]     Как реализировать заполнение массива квадратами? #15
Цитата Сообщение от HedgehogLu Посмотреть сообщение
если что я вернулся
кстати, я вывожу масив обычными циклами фор(i)и в нем фор(j), мне нужно чтобы етот выведенный масив оставляло, и заменяло знаки в некоторой области, чтобы выводило область в массиве.
Например
000
000
001


000
010
000

100
000
000
чтобы выводило область возле 1

Добавлено через 5 минут
Цитата Сообщение от van77715 Посмотреть сообщение
кстати, я вывожу масив обычными циклами фор(i)и в нем фор(j), мне нужно чтобы етот выведенный масив оставляло, и заменяло знаки в некоторой области, чтобы выводило область в массиве.
Например
000
000
001


000
010
000

100
000
000
чтобы выводило область возле 1
и как сделать чтобы екран централизировало на елементе масива который равен 0?
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
26.09.2013, 22:32     Как реализировать заполнение массива квадратами? #16
Цитата Сообщение от van77715 Посмотреть сообщение
кстати, я вывожу масив обычными циклами фор(i)и в нем фор(j), мне нужно чтобы етот выведенный масив оставляло, и заменяло знаки в некоторой области, чтобы выводило область в массиве.
Например
000
000
001
000
010
000
100
000
000
чтобы выводило область возле 1
еще раз и подробнее. что то я не пойму постановку задачи.
ну циклами массив все выводят тут все ожидаемо, но вот дальше я не пойму что надо и в чем загвоздка

Добавлено через 3 минуты
Цитата Сообщение от van77715 Посмотреть сообщение
и как сделать чтобы екран централизировало на елементе масива который равен 0?
а тут вообще не понятно.
на экран выводится не весь массив а только его часть или как?
и как быть если несколько элементов массива равны нулю.
van77715
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 50
26.09.2013, 22:38  [ТС]     Как реализировать заполнение массива квадратами? #17
Цитата Сообщение от HedgehogLu Посмотреть сообщение
еще раз и подробнее. что то я не пойму постановку задачи.
ну циклами массив все выводят тут все ожидаемо, но вот дальше я не пойму что надо и в чем загвоздка

Добавлено через 3 минуты

а тут вообще не понятно.
на экран выводится не весь массив а только его часть или как?
и как быть если несколько элементов массива равны нулю.
как массив выводить, я вывожу через system ("cls") и оно очень долго выводит массив на екран.
Есть ли другой спосо выводить массив? или масив оставлять и чтобы менялось только около елемента равного 0
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
26.09.2013, 22:46     Как реализировать заполнение массива квадратами? #18
сам я такого не делал, но ближайший поиск дал следующий код
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD cor = {0,0};
cor.x = 10;
cor.y = 10;
SetConsoleCursorPosition(hConsole,cor);
cout << (char)2 << endl;
}
van77715
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 50
26.09.2013, 23:03  [ТС]     Как реализировать заполнение массива квадратами? #19
Цитата Сообщение от HedgehogLu Посмотреть сообщение
сам я такого не делал, но ближайший поиск дал следующий код
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD cor = {0,0};
cor.x = 10;
cor.y = 10;
SetConsoleCursorPosition(hConsole,cor);
cout << (char)2 << endl;
}
можно же координаты х и у сделать равными i и j?



cor.x = j;
cor.y = i;

Добавлено через 12 минут
Цитата Сообщение от van77715 Посмотреть сообщение
можно же координаты х и у сделать равными i и j?



cor.x = j;
cor.y = i;
ругается об .x .y
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2013, 23:17     Как реализировать заполнение массива квадратами?
Еще ссылки по теме:

C++ Заменить все элементы массива квадратами этих элементов
Найти элементы массива, являющиеся квадратами некоторого числа C++
Заполнение массива квадратами натуральных чисел, начиная с 3 C++

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

Или воспользуйтесь поиском по форуму:
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
26.09.2013, 23:17     Как реализировать заполнение массива квадратами? #20
ну да по сути так оно и будет.
посмотри на типы данных в СОORD поля x и y имеют тип SHORT попробуй перед приравниваниям сделать принудительное приведение типов
C++
1
2
cor.x=(SHORT)j;
cor.y=(SHORT)i
и кажется х и у идут заглавными, а не прописными. что есть большая разница
Yandex
Объявления
26.09.2013, 23:17     Как реализировать заполнение массива квадратами?
Ответ Создать тему
Опции темы

Текущее время: 00:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru