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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 61, средняя оценка - 4.75
Yulia_3
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 23
#1

C++ нарисовать елочку с символов - C++

24.06.2010, 22:20. Просмотров 7654. Ответов 15
Метки нет (Все метки)

Задача E. Елочка
«Нарисуйте» с помощью символов лес. При этом не пользуйтесь командами перемещения курсора по экрану. Ваша программа должна последовательно выводить символы строк (или строки целиком).
Лес — это одна или несколько елочек. Каждая елочка характеризуется количеством треугольников в ней и размером самого маленького треугольника. Елочка состоит из треугольников, у которых вершины находятся строго друг под другом, и каждый следующий треугольник содержит на одну строку больше предыдущего.
Все елочки должны по вертикали начинаться с первой строки. Каждая елочка должна быть расположена как можно левее, при этом елочки не должны соприкасаться (т.е. возле символов елочки справа, слева, снизу, сверху, а также по диагонали не должно быть символов, изображающих другую елочку), и не должен нарушаться порядок следования елочек.
Елочки должны изображаться символами «#» (решеточка), а пустые места между ними — символами «.» (точка). Во всех строках должно быть выведено одинаковое количество символов, при этом обязательно должна быть строка, в которой последним символом является решеточка, в последней строке обязательно должны быть решеточки (т.е. должен быть выведен прямоугольник из точек и решеточек, в нем не должно быть лишних столбцов и строк).
Входные данные. Вводится число елочек N, а дальше N пар натуральных чисел, описывающих елочки: первое число каждой пары задает количество треугольников в елочке, второе — размер самого маленького треугольника. Елочки описываются в порядке слева направо (если смотреть на вершины елочек).
Гарантируется, что входные данные будут таковы, что количество символов, которое нужно будет вывести в одной строке, не превысит 79.
Выходные данные. Выведите требуемый «рисунок». Для лучшего понимания смотрите примеры.
Пример ввода Пример вывода
2
3 2
3 3
...#......#....
..###....###...
...#....#####..
..###.....#....
.#####...###...
...#....#####..
..###..#######.
. #####....#....
#######..###...
... .....#####..
...... .#######.
..... .#########
3
1 1
2 1
3 2

#.#...#...
..#..###..
.###..#...
.....###..
....#####.
......#...
.....###..
....#####.
...#######

чтото типа того
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2010, 22:20     C++ нарисовать елочку с символов
Посмотрите здесь:

C++ Дана строка символов. Подсчитать общее число вхождений символов .,+ в строку
C++ Дана строка символов. Подсчитать общее число вхождений символов
Дан текст, содержащий 30 символов. Подсчитать количество вхождений символов А и Б. C++
C++ Нарисовать рисунок: следы ног, с помощью символов скобок и 0
Получить из данных строк S1 и S2 новую строку, содержащую первые N1 символов S1 и последние N2 символов S2 C++
C++ Написать программу, которая будет выводить елочку из символов
Найти количество символов в самой длинной цепочке из одинаковых символов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TrenAr
21 / 20 / 2
Регистрация: 21.06.2010
Сообщений: 80
24.06.2010, 22:27     C++ нарисовать елочку с символов #2
Цитата Сообщение от Yulia_3 Посмотреть сообщение
Для лучшего понимания смотрите примеры
Форматирование слетело, нефига не понятно
*HellRaiser*
28 / 28 / 2
Регистрация: 08.06.2010
Сообщений: 146
24.06.2010, 22:28     C++ нарисовать елочку с символов #3
TrenAr, опередил, только сказать хотел))
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
24.06.2010, 22:31     C++ нарисовать елочку с символов #4
Нарекаю тебя сиплюсплюсом.
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
2
3 2
3 3
...#......#....
..###....###...
...#....#####..
..###.....#....
.#####...###...
...#....#####..
..###..#######.
. #####....#....
#######..###...
... .....#####..
...... .#######.
..... .#########
3
1 1
2 1
3 2
 
#.#...#...
..#..###..
.###..#...
.....###..
....#####.
......#...
.....###..
....#####.
...#######
Они еще и зелеными получились! Круто!
*HellRaiser*
28 / 28 / 2
Регистрация: 08.06.2010
Сообщений: 146
24.06.2010, 22:34     C++ нарисовать елочку с символов #5
Действительно интересное мозгодробительное задание
Yulia_3
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 23
24.06.2010, 22:41  [ТС]     C++ нарисовать елочку с символов #6
а код...какой?
TrenAr
21 / 20 / 2
Регистрация: 21.06.2010
Сообщений: 80
24.06.2010, 23:47     C++ нарисовать елочку с символов #7
Не очень сложно, в принципе, но вот это условие доставляет:
Цитата Сообщение от Yulia_3 Посмотреть сообщение
Каждая елочка должна быть расположена как можно левее, при этом елочки не должны соприкасаться
Yulia_3
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 23
25.06.2010, 00:33  [ТС]     C++ нарисовать елочку с символов #8
код на С++ можете написать, если не сложно....спасибо...
TrenAr
21 / 20 / 2
Регистрация: 21.06.2010
Сообщений: 80
25.06.2010, 00:53     C++ нарисовать елочку с символов #9
На С не подойдёт?
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
25.06.2010, 00:59     C++ нарисовать елочку с символов #10
Подойдет.
TrenAr
21 / 20 / 2
Регистрация: 21.06.2010
Сообщений: 80
25.06.2010, 02:32     C++ нарисовать елочку с символов #11
Без сдвига ёлок, на С:

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
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
 
#define ROWS 3
#define COLUMNS 2
 
short printFieldPart( short row, short tree, short dataF[ ROWS ][ COLUMNS ] );
 
int main()
{
    short data[ ROWS ][ COLUMNS ] = { {1, 1}, {2, 1}, {3, 2} };
    short i, j, fl;
    
    /* Just a test
    for ( i = 0 ; i <= 2 ; i++ )
        for ( j = 0 ; j <= 1 ; j++ )
            printf("%hd\t", data[ i ][ j ]);
    */
    
    i = 1;
    fl = 0;
    while ( fl == 0 )
    {
          fl = 1;
          
          for ( j = 0 ; j <= ROWS - 1 ; j++ )
              fl = printFieldPart( i, j, data );
          
          i++;
          printf("\n");         
    }
 
    
    return 0;
}
 
short printFieldPart( short row, short tree, short dataF[ ROWS ][ COLUMNS ])
{
      short brunches, width, tmp;
      short i, j;
      
      //Search max width
      tmp = dataF[ tree ][ 1 ];
      for ( i = 0 ; i < dataF[ tree ][ 0 ] - 1 ; i++ )
            tmp ++;
      width = ( ( tmp ) * 2 ) - 1;
      
      //Search current local row (= tmp)
      tmp = dataF[ tree ][ 1 ];
      i = 1;
      while ( ( tmp < row ) && ( i <= dataF[ tree ][ 0 ] ) )
      {
            tmp += dataF[ tree ][ 1 ] + i;
            i++;
      }
      i--;
      tmp -= dataF[ tree ][ 1 ] + i;
      i++;
      
      //Draw it
      if ( i <= dataF[ tree ][ 0 ] )
      {
           brunches = ( ( row - tmp ) * 2 ) - 1;
           for ( j = 0 ; j <= ( ( width - brunches ) / 2 ) - 1 ; j++ )
               printf(".");
           for ( j = 0 ; j <= brunches - 1 ; j++ )
               printf("#");
           for ( j = 0 ; j <= ( ( width - brunches ) / 2 ) - 1 ; j++ )
               printf(".");
           
           return 0;
      }
      else
      {
          for ( j = 0 ; j <= width - 1 ; j++ )
               printf(".");
          return 1;
      }
}
Yulia_3
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 23
25.06.2010, 09:33  [ТС]     C++ нарисовать елочку с символов #12
подойдет на С++, даже нужно...но мне преподаватель сказал что нужно использовать деревья....помогите с кодом...подскажити хотябы за что зачепится можно...?

Добавлено через 3 минуты
что значит
#define ROWS 3
#define COLUMNS 2
?

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

#define ROWS 3
#define COLUMNS 2
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
25.06.2010, 09:37     C++ нарисовать елочку с символов #13
Наслаждайтесь http://www.citforum.ru/programming/c.../cpp_054.shtml.
6a6kin
232 / 102 / 2
Регистрация: 18.04.2010
Сообщений: 295
25.06.2010, 11:23     C++ нарисовать елочку с символов #14
Цитата Сообщение от Yulia_3 Посмотреть сообщение
#define ROWS 3
const short ROWS = 3;
А, ну да, ссылка есть выше)

Цитата Сообщение от Yulia_3 Посмотреть сообщение
но мне преподаватель сказал что нужно использовать деревья
Деревья? Можно уточнить какие именно?) На ум приходят сначала елки))
TrenAr
21 / 20 / 2
Регистрация: 21.06.2010
Сообщений: 80
25.06.2010, 19:05     C++ нарисовать елочку с символов #15
Цитата Сообщение от Yulia_3 Посмотреть сообщение
подойдет на С++, даже нужно...но мне преподаватель сказал что нужно использовать деревья....помогите с кодом...подскажити хотябы за что зачепится можно...?
Ппц. После решения оказалось задачу нужно всё-таки на С и при этом использовать деревья...
А слабо было сразу написать всю эту информацию в первом сообщении?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2013, 20:05     C++ нарисовать елочку с символов
Еще ссылки по теме:

Ошибка ввода символов строки, при количестве символов кратных 8 C++
C++ Как настроить ввод русских символов и в дальнейшем вывод этих символов
Нарисовать зеркальный треугольник из символов C++
C++ В строке символов найти максимальную подпоследовательность символов, являющуюся палиндромом
Введите массив символов из 12 элементов. Удвоить все коды символов массива C++

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

Или воспользуйтесь поиском по форуму:
flutesa
0 / 0 / 0
Регистрация: 30.11.2008
Сообщений: 3
06.11.2013, 20:05     C++ нарисовать елочку с символов #16
Подскажите, пожалуйста, в чём будет заключаться алгоритм сдвига ёлок между собой?
Yandex
Объявления
06.11.2013, 20:05     C++ нарисовать елочку с символов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru