| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > изо |
| Автор: danilkramatorsk 19.1.2013, 17:23 |
| нужно такое нарисовать) * ** *** **** ***** ****** ******* * ** *** **** ***** ****** ******* Напишите программу, которая печатает по отдельности, один под другим, показанные ниже треугольники. Используйте для генерации трафаретов цикл for. Все звездочки (*) должны-печататься единственным оператором вида cout « '*'; как я понял нам необходимо создать цикл в данном треугольнике до 7, т.к. конечное число * = 7; то есть for (i=1;i<=7;i++) cout << i ; только вместо цифр надо звездочки, как реализовать? 1=* 2=** 3=*** .... |
| Автор: feodorv 19.1.2013, 18:04 | ||
Только на каждом шаге for-цикла придётся рисовать i звёздочек, а не одну (что подразумевает ещё один цикл |
| Автор: danilkramatorsk 19.1.2013, 18:36 |
| feodorv, это я понял, а легче способа нет? |
| Автор: feodorv 19.1.2013, 20:09 |
Всё зависит от того, как понимать это "легче" Да, можно всё написать с участием одного-единственного цикла и массива звёздочёк или задействовав рекурсию, но тут уж Вам виднее... |
| Автор: danilkramatorsk 19.1.2013, 20:15 | ||
feodorv,
это я еще не изучал, что это такое вообще и для чего она нужна? |
| Автор: bsa 20.1.2013, 20:50 |
меньше знаешь, крепче спишь danilkramatorsk, для решения твоей задачи лучше подойдет принцип с двумя циклами (один рисует пробелы, другой звездочки) внутри третьего. |
| Автор: Silent 21.1.2013, 09:19 | ||
|
| Автор: bsa 21.1.2013, 10:42 |
| Silent, ну вот зачем ты дал готовый ответ? |
| Автор: danilkramatorsk 21.1.2013, 18:02 | ||
bsa,
вообще она в дальнейшем понадобится? |
| Автор: bsa 21.1.2013, 18:13 |
| danilkramatorsk, не исключено |
| Автор: danilkramatorsk 21.1.2013, 19:43 | ||
Silent,
объясните как выполняется |
| Автор: bsa 21.1.2013, 22:24 |
| danilkramatorsk, не пытайся понять. напиши свое. |
| Автор: Silent 22.1.2013, 10:19 |
| bsa, мне просто было скучно ^_^ даже имея на руках исходник (а задачка-то плевая), человек не сдаст без понимания, а с этим, как мы видим, проблемы |
| Автор: bsa 22.1.2013, 10:30 |
| Silent, просто вместо того, чтобы разобраться и написать свое, ему приходится тратить силы на разбор чужого кода, уровень которого превышает имеющийся у человека. Если очень хочется, можешь поразмяться в разделе Центр помощи - там тусуются те, кто не хочет разбираться. |
| Автор: danilkramatorsk 22.1.2013, 15:38 |
| bsa, Silent, разобрался,но не пиши пожалуйста больше готовый ответ, хочу всему сам научиться! bsa прав. |
| Автор: bsa 23.1.2013, 10:26 |
| danilkramatorsk, если ты уже решил задачу, то выложи готовый ответ, а мы его покритикуем. |
| Автор: danilkramatorsk 27.1.2013, 15:43 | ||
bsa,
i-количество строк j-количество столбцов код, как я понял , действует так в то время когда j <7-i-1 печатаем пробел, в противном случае печатаем * j < 7 -i-1 сначала печатается 7 строка и 7 столбцов затем количество столбцов и строк уменьшается и получается выражение 6<7-1-1 если бы мы не написали дополнительно -1 у нас бы выполнялся неправильный и бесконечный цикл. В итоге у нас печатается на 6 строке 6 столбцов и т.д. Так понял я? |
| Автор: danilkramatorsk 27.1.2013, 19:54 | ||||
volatile,
но если честно, как-то тяжело мне даются эти циклы, если не сложно объясните более подробней. |
| Автор: volatile 28.1.2013, 00:06 | ||||||||
| danilkramatorsk, нижняя функция рисует не такой треугольник Вам не циклы тяжело даюцца, а тернарный оператор, с условиями. В таких случаях нужно упрощать. (рефакторинг - по научному Например так. Создадим универсальную маленькую функцию, которая будет выводить один символ, нужное число раз.
Если теперь вызвать эту функцию так:
то она напечатает букву A, ровно 234 раза. (универсальная функция, может пригодицца и в других программах) После этого, очень легко и быстро можно написать все 4 функции треугольника, не путаясь.
Заодно мы сделали универсальный размер, а не жестко заданный. http://codepad.org/iIwL9Luc Оставшиеся 2 вам будет написать гораздо проще. Добавлено через 8 минут и 59 секунд кстати, я немного ошибся, выводицца на 1 пробел больше, чем необходимо. (хотя и не заметно) Но это очень легко исправить. исправьте сами. |
| Автор: danilkramatorsk 28.1.2013, 01:07 |
| volatile, во! теперь немного понял. Спасибо! |
| Автор: XLAT 2.2.2013, 05:35 | ||
а вот самый верх совершенства!
Добавлено через 3 минуты и 3 секунды код чуть выпирает, но это из-за того, что тег code по умолчанию не использует моношириный шрифт |
| Автор: danilkramatorsk 2.2.2013, 12:19 |
| XLAT, гениально просто)))) |
| Автор: volatile 2.2.2013, 14:47 | ||
тег code по умолчанию как раз использует моношириный шрифт, у вас просто кривой треугольник И с условиями тоже косяк :
|
| Автор: Albor 3.2.2013, 09:52 |
Ну да, если исправить ошибки в "совершенстве" и вставить перевод строки |