![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Двумерный массив |
|
|
C/C++ - Двумерный массив
|
Новый участник Сообщения: 6 |
Доброго времени суток, товарищи программисты. Я учусь на программиста, и вот перед мной встала такова задача. Которую я не могу преодолеть.
Задача: Написать двумерный массив символьного типа из звездочек и точек, в рендомном порядке, и подсчитать количество звездочек в массиве. Условие: Если звездочки идут подряд, в рядке или строке то считать их как одну. Я вот что наработал: #include <iostream> #include <time.h> using namespace std; void main() { char a[20][20]; int n; srand(time(NULL)); for (int i=0;i<20; i++) { for(int j=0; j<20; j++) { n=rand()%2; if (n==1) a[i][j]='.'; else a[i][j]='*'; cout<<a[i][j]; } cout<<endl; } } Дальше проблема. Думаю сделать что бы через условие, если идет подряд 2 звездочки, то считай как одну, и переписывай массив, до тех пор, когда массив совсем не упроситься. А есть еще идея удалять те которые идут подрят по одной. Еще вот что с кодом придумал, но не знаю как его оформить правильно. Буду заранее благодарен!!! сhar temp[20] = a[1]; int stars = 0; bool on_star = false; for (i=0;i<20;i++) if (temp[i] == '*' && !on_star){stars++; on_star = true;} if (temp[i] == '.' on_star = false; .***... **..**. тут 2 звездочки. |
|
Отправлено: 16:32, 10-05-2013 |
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать Цитата vista54:
(без обид, без подколов, никакой задней мысли) Такое решение возможно. Просто подумай еще. Может можно сделать проще. ---- Цитата vista54:
|
||
------- Отправлено: 16:45, 10-05-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Пользователь Сообщения: 123
|
Профиль | Отправить PM | Цитировать |
Отправлено: 17:10, 10-05-2013 | #3 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать lxa85
Необходимо написать массив, с звездочек и точек, размер 200 на 200. Посчитать количество звездочек. Если звездочки идут подряд, хоть в ряду, хоть в столбе, то считать их как одну. Пример работы программы: 0**000 0*0**0 000*00 тут 2 звездочки. |
Отправлено: 22:12, 10-05-2013 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 22:28, 10-05-2013 | #5 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать тут одна
|
Отправлено: 00:55, 11-05-2013 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Мне что-то в голову ничего не приходит окромя рекурсивного перебора.
|
Отправлено: 02:29, 11-05-2013 | #7 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Iska, пример кода хотябы напиши)
|
Отправлено: 16:10, 11-05-2013 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата vista54:
Это скрипт на WSH, исполнение только под консолью; перевод за Вами ![]() — раскомментируйте закомментированный вывод. Алгоритм простой — движемся по массиву сверху вниз/слева направо. Найдя элемент с потребным содержимым, увеличиваем счётчик найденного и меняем содержимое элемента (дабы не учитывать его повторно), затем опрашиваем его «соседей» сверху, снизу, справа и слева. Если «сосед» также окажется элементом с потребным содержимым — вызываем аналогичную процедуру для него. Повторяем, пока не дойдём до конца массива. P.S. Можно увидеть, что алгоритм не совсем оптимален — для «соседа» всегда будет проверяться его элемент-«сосед», с которого и «пришли» к данному элементу. Этого можно избежать, указывая дополнительно, с какого направления мы «пришли» к данному элементу. Но я не стал усложнять алгоритм, поскольку в данном случае сие малосущественно. |
|
Последний раз редактировалось Iska, 11-05-2013 в 19:56. Причина: Подумал и добавил описание Отправлено: 19:31, 11-05-2013 | #9 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Омг) я первокурсник) я не переведу такое
![]() |
Отправлено: 23:39, 12-05-2013 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Помогите отсортировать двумерный массив (С++) | Luda-tin | Программирование и базы данных | 4 | 15-05-2012 08:57 | |
C/C++ - [решено] Помогите исправить (двумерный массив) на С++ | Luda-tin | Программирование и базы данных | 2 | 13-05-2012 22:53 | |
C/C++ - Двумерный массив | feytan | Программирование и базы данных | 0 | 14-04-2011 00:58 | |
C/C++ - Двумерный массив | NAstyaT | Программирование и базы данных | 1 | 08-12-2010 00:38 | |
C/C++ - [решено] Динамическая память под двумерный массив, где ошибка?) | SeRgikON | Программирование и базы данных | 4 | 04-06-2010 18:31 |
|