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

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

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

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

24.06.2010, 22:20. Просмотров 7764. Ответов 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++
Нужно написать программу которая будет выводить елочку из символов ^ ^ ^^^ ^^^^^ по заданной пользователем высотой. ...

Нарисовать равнобедренный треугольник из символов . - C++
Нужно разобрать код Нарисовать равнобедренный треугольник из символов . Высоту выбирает пользователь. Например: высота = 5, фото...

Нарисовать зеркальный треугольник из символов - C++
Рисовать пирамиду до тех пор пока первый символ не станет равен тому что введет пользователь.

Нарисовать рисунок: следы ног, с помощью символов скобок и 0 - C++
Здравствуйте помогите пожалуйста написать программу . которая будет рисовать рисунок

Как настроить ввод русских символов и в дальнейшем вывод этих символов - C++
Подскажите как в этом коде настроить ввод русских символов и в дальнейшем вывод этих символов. Данный код выводит лишь всякую ерунду место...

Введите массив символов из 12 элементов. Удвоить все коды символов массива - C++
Условие :Введите массив символов из 12 элементов. Удвоить все коды символов массива. Заранее спасибо )

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
TrenAr
21 / 20 / 2
Регистрация: 21.06.2010
Сообщений: 80
24.06.2010, 22:27 #2
Цитата Сообщение от Yulia_3 Посмотреть сообщение
Для лучшего понимания смотрите примеры
Форматирование слетело, нефига не понятно
*HellRaiser*
28 / 28 / 2
Регистрация: 08.06.2010
Сообщений: 146
24.06.2010, 22:28 #3
TrenAr, опередил, только сказать хотел))
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
24.06.2010, 22:31 #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 #5
Действительно интересное мозгодробительное задание
Yulia_3
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 23
24.06.2010, 22:41  [ТС] #6
а код...какой?
TrenAr
21 / 20 / 2
Регистрация: 21.06.2010
Сообщений: 80
24.06.2010, 23:47 #7
Не очень сложно, в принципе, но вот это условие доставляет:
Цитата Сообщение от Yulia_3 Посмотреть сообщение
Каждая елочка должна быть расположена как можно левее, при этом елочки не должны соприкасаться
Yulia_3
0 / 0 / 0
Регистрация: 20.04.2010
Сообщений: 23
25.06.2010, 00:33  [ТС] #8
код на С++ можете написать, если не сложно....спасибо...
TrenAr
21 / 20 / 2
Регистрация: 21.06.2010
Сообщений: 80
25.06.2010, 00:53 #9
На С не подойдёт?
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
25.06.2010, 00:59 #10
Подойдет.
TrenAr
21 / 20 / 2
Регистрация: 21.06.2010
Сообщений: 80
25.06.2010, 02:32 #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  [ТС] #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 #13
Наслаждайтесь http://www.citforum.ru/programming/c.../cpp_054.shtml.
6a6kin
232 / 102 / 2
Регистрация: 18.04.2010
Сообщений: 295
25.06.2010, 11:23 #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 #15
Цитата Сообщение от Yulia_3 Посмотреть сообщение
подойдет на С++, даже нужно...но мне преподаватель сказал что нужно использовать деревья....помогите с кодом...подскажити хотябы за что зачепится можно...?
Ппц. После решения оказалось задачу нужно всё-таки на С и при этом использовать деревья...
А слабо было сразу написать всю эту информацию в первом сообщении?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2010, 19:05
Привет! Вот еще темы с ответами:

Дана строка символов. Подсчитать общее число вхождений символов .,+ в строку - C++
Здравствуйте. Дана строка символов. Подсчитать общее число вхождений символов .,+ в строку. Как такую программу сделать? Заранее спасибо за...

Дан текст, содержащий 30 символов. Подсчитать количество вхождений символов А и Б. - C++
Ребят , помогите плиз , послезавтра экзамен , вот нашел возможные задание , может кто подсказать , или показать решения ? Язык : С++/...

Найти количество символов в самой длинной цепочке из одинаковых символов - C++
Дана строка символов St длиной не более 72, которая может состоять из цифр, малых латинских букв и знаков '+' '-' '*' '/' '.' ')' '(' ...

Ошибка ввода символов строки, при количестве символов кратных 8 - C++
Здравствуйте, уважаемые форумчане! Разбираясь с механизмом ввода и динамическим выделением памяти для строк решил написать такой...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.06.2010, 19:05
Ответ Создать тему
Опции темы

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