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

Задача "Салфетки" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ повторный прогон программы http://www.cyberforum.ru/cpp-beginners/thread1004987.html
Подскажите, пожалуйста, как сделать повторный прогон алгоритмов без запуска программы (хотите начать заново? (y/n)). На примере простейшей программы "Hello, world". #include <iostream> int main()...
C++ программа не работает задание: Определить входит ли введённая цифра в заданное натурально число. код выдаёт ошибки и я не могу понять как их исправить т.к. нуб. помогите пожалуйста.... код программы: #include... http://www.cyberforum.ru/cpp-beginners/thread1004980.html
Помогите найти ошибку в коде C++
Проблема вот в чём, есть программа, довольно большая по кол-ву строк и поэтому весь код показать не смогу, впринципе вопрос такой: -после завершения работы функции с объектом в меню есть пункт...
Ошибка в алгоритме Рунге-Кутты C++
Здравствуйте! При выполнении курсовой работы по вычислению координат положения спутника ГЛОНАСС столкнулся с ошибкой, что неправильно вычисляются координаты. Числа похожие, но не те. Есть рабочая...
C++ Как в файле перейти на новую строчку? http://www.cyberforum.ru/cpp-beginners/thread1004953.html
Как в файле перейти на новую строчку? Пробовал так fstream sc("Save\\1.txt");//Открыл файл sc.getline(infscore,'endl'); //Считал инфу до конца строки ......... lenscore=strlen(infscore)+1;...
C++ Вызов функции проверки Доброго времени суток! 2-ой день мучаюсь с задачей. Есть массив прямоугольников, вершины которых я считал с файла. Задача состоит в том, чтобы проверить пересекаются ли они. Сделал соответствующую... подробнее

Показать сообщение отдельно
RQdan
65 / 65 / 17
Регистрация: 26.10.2013
Сообщений: 198
12.11.2013, 00:10
triadec_96,
Цитата Сообщение от triadec_96 Посмотреть сообщение
Наложение салфеток друг на друга в строках 31-41 и с этим у меня проблемы.
Все хохотали когда увидели эту часть кода и сказали что там нечего делать,но не могу понять "как?".Другие методы в голову не приходили.
пришел в голову один вариант: создается двумерный символьный(или целочисельный - неважно) масив color[N][N], который представляет собой поле стола. При падении каждой салфетки ячейки "стола", соответствующие координатам салфетки "окрашиваются"(заполняются соответствующим символом или цифрой).
В конце же проганяем полностью масив и считаем какие цвета остались на столе.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for(int i=0;i<K;i++)// проходим весь масив салфеток
 for(int j=l[i];j<=r[i];j++)//проходим координаты по "х" салфетки
  if((j=>0)&&(j<N))//если значение координаты "х" салфетки находится в отрезке 0..N, то обрабатываем дальше
   for(int d=t[i];d<=b[i];d++)//проходим координаты по "у" салфетки
    if((d=>0)&&(d<N))//если значение координаты "у" салфетки находится в отрезке 0..N, то обрабатываем дальше
     color[j][d]=c[i];//точка салфетки находится на столе, и за ее координатами "окрашиваем" поле стола цветом
 
for(int i=0;i<N;i++)//прогон поля стола для нахождения цветов, что остались на столе
 for(int j=0;j<N;j++)
  switch(color[i][j])//определение цвета и обработка(запись в отдельный масив или файл - смотри как тебе надо)
  {
   'r': {обработка кода соотв. цвета}
   'b': {обработка кода соотв. цвета}
    ...
   {обрабатываются все буквы для заданных цветов}
    ...
  }
И в таком случае стает ненужным тот код, что я писал раньше .

Добавлено через 9 минут
P.S. масив color сначала надо будет инициализировать каким-либо нейтральным символом, который не обозначает ни один цвет. Это необходимо в тех случаях, когда на столе будут оставаться области, которые не закрыла ни одна салфетка. Иначе могут возникнуть ошибки.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru