28 / 28 / 1
Регистрация: 25.03.2012
Сообщений: 130
1

Нарисовать треугольник

21.10.2012, 17:50. Показов 17932. Ответов 27
Метки нет (Все метки)

День добрый!
Учу по книге.
Not student!

Тема не раз уже поднималась, но моего варианта не нашел, подскажите, направьте (код не обязательно), как сделать такое (фигура должна быть именно такая, только без точек, это я пробелы забил т.к. неправильно отображалось)
5. При помощи цикла for изобразите на экране пирамиду из символов 'X'.
Верхняя часть пирамиды должна выглядеть следующим образом:
............х
.........ххх
......ххххх
...ххххххх
ххххххххх
Вся пирамида должна быть высотой не 5 линий, как изображено здесь, а 20 линий. Одним из способов ее построения может служить использование двух вложенных циклов, из которых внутренний будет заниматься печатанием символов 'X' и пробелов, а другой осуществлять переход на одну строку вниз.
Я собственно вот что накрутил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>;
#include <iomanip>;
using namespace std;
 
int main()
{
    char star = '*';
    char space = ' ';
 
    int lines =20; // comment if use var 2!
// var 2:
// for (int i = 1; i <= 20; i++)
    for (int i = 1; i <= lines; i++)
    {
        for (int j = 1; j < i; j++)
            cout << star;
        cout << '\n'; // or endl
    }
    
    return 0;
}
На мои комменты внимание не обращаем, это я так для себя...
Как видите
C++
1
char space = ' ';
не задействовано, и куда приткнуть ума не приложу, но чет подсказывает надо что-то от кого-то вычесть ))
Всем спасибо!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2012, 17:50
Ответы с готовыми решениями:

Нарисовать треугольник
Помогите нарисовать треугольник. Я нарисовал, но надо сделать его наоборот. Он должен смотреть в...

Нарисовать треугольник
Помогите!!! Программа должна делать прямоугольный треугольник (ввод катетов с клавиатуры), а она...

Нарисовать треугольник
Добрый день. Помогите с кодом для отрисовки треугольника по введенным координатам (х и у) его...

нарисовать треугольник
#include&lt;iostram&gt; using namespace std; void main(){ int x; cin &gt;&gt;x; if (x %2 ==0) x++; for...

27
6 / 6 / 0
Регистрация: 14.10.2012
Сообщений: 36
21.10.2012, 18:14 2
Треугольник равнобедренный, как я понял...
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i=0; i<20; i++)
    {
        for (int j=0; j<20; j++)
        {
            if ((j<20-i)|(j>i))
                std::cout<<' ';
            else 
                std::cout<<'*';
        }
        std::cout<<'\n';
    }
0
28 / 28 / 1
Регистрация: 25.03.2012
Сообщений: 130
21.10.2012, 18:19  [ТС] 3
Цитата Сообщение от Ryzhikov_A Посмотреть сообщение
Треугольник равнобедренный, как я понял...
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i=0; i<20; i++)
    {
        for (int j=0; j<20; j++)
        {
            if ((j<20-i)|(j>i))
                std::cout<<' ';
            else 
                std::cout<<'*';
        }
        std::cout<<'\n';
    }
не-не-не, не то, именно такой как я нарисовал, прижат к правой стороне
0
6 / 6 / 0
Регистрация: 14.10.2012
Сообщений: 36
21.10.2012, 18:27 4
Т.е. самый правый элемент всегда *? Если нет, поясните словани смещение строки относительно более нижней.
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i=0; i<20; i++)
    {
        for (int j=0; j<20; j++)
        {
            if (j<20-i)
                std::cout<<' ';
            else 
                std::cout<<'*';
        }
        std::cout<<'\n';
    }
1
7 / 7 / 3
Регистрация: 21.10.2012
Сообщений: 26
21.10.2012, 18:34 5
Это задание из книги Лафоре вроде. Там за счет печати пирамида не ровная, а вообще она должна обычным треугольником расходящимся выглядеть в оригинале (ну это как нам преподаватель задавал). Вот код:
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
#include "stdafx.h"
#include <iomanip>
#include <iostream>
#include <conio.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "Russian");
    int s;
    cout<<"Введите количество строк: "<<endl;;
    cin>>s;
    char ch;
    cout<<"Введите символ пирамиды: "<<endl;
    cin>>ch;
    cout<<endl;
    for(int i=0;i<s;i++)
    {
        cout<<setw(s-i)<<' ';        
        for (int j=0; j<=i*2;j++)   
            cout<<ch;                
        cout<<endl;
    }
    cout<<endl<<endl;
    _getch ();
    return 0;
}
0
28 / 26 / 14
Регистрация: 15.10.2012
Сообщений: 60
21.10.2012, 18:34 6
D_bl_M, код, который предоставил Ryzhikov_A мне кажется верным.
Только чуть-чуть изменив:
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i=0; i<20; i++)
    {
        for (int j=0; j<20; j++)
        {
            if (j<20-i)
                std::cout<<' ';
            else 
                std::cout<<'*';
        }
        std::cout<<'\n';
    }
Всё равно что-то не получается?
1
28 / 28 / 1
Регистрация: 25.03.2012
Сообщений: 130
21.10.2012, 18:35  [ТС] 7
Цитата Сообщение от Ryzhikov_A Посмотреть сообщение
Т.е. самый правый элемент всегда *? Если нет, поясните словани смещение строки относительно более нижней.
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i=0; i<20; i++)
    {
        for (int j=0; j<20; j++)
        {
            if (j<20-i)
                std::cout<<' ';
            else 
                std::cout<<'*';
        }
        std::cout<<'\n';
    }
все верно вы поняли, результат удовлетворяет, но один черт не понимаю ))) все ведь элементарно и с циклами как бы разобрался, но тут ппц какой-то. Код прочитать могу, но для разума что-то непонятно.
0
7 / 7 / 3
Регистрация: 21.10.2012
Сообщений: 26
21.10.2012, 18:36 8
Если точно нужно, чтобы по правой стороне, то тогда так:
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
#include "stdafx.h"
#include <iomanip>
#include <iostream>
#include <conio.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "Russian");
    int s;
    cout<<"Введите количество строк: "<<endl;;
    cin>>s;
    char ch;
    cout<<"Введите символ пирамиды: "<<endl;
    cin>>ch;
    cout<<endl;
    for(int i=0;i<s;i++)
    {
        cout<<setw(s-i)<<' ';        
        for (int j=0; j<=i;j++)   
            cout<<ch;                
        cout<<endl;
    }
    cout<<endl<<endl;
    _getch ();
    return 0;
}
1
5224 / 3196 / 362
Регистрация: 12.12.2009
Сообщений: 8,101
Записей в блоге: 2
21.10.2012, 18:41 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <iterator>
 
int main()
{
   int n;
   
   std::cout << "Enter n: ";
   std::cin >> n;
   int length = n + 1;
   
   std::generate_n(std::ostream_iterator<std::string>(std::cout), n, 
                         [=, &n] () -> std::string {std::cout << std::setw(length); 
                                                    return std::string(n--, '*') + "\n";});
   
   return 0;
}

Не по теме:

так и придумал, как читабельно лямды оформлять:scratch:

2
28 / 28 / 1
Регистрация: 25.03.2012
Сообщений: 130
21.10.2012, 18:42  [ТС] 10
Lana_levchuk,
Цитата Сообщение от Lana_levchuk Посмотреть сообщение
int _tmain(int argc, _TCHAR* argv[])
это у нас что? qt creator?
этот вариант мне даже больше нравится, так как в этой главе про setw() говорилось, изначально тоже хотел задействовать.
Именно Лафоре, я думал именно такой и нужно было. А оно вон оказывается что, в любом случае спасибо.

Добавлено через 1 минуту
De_N, все получается, просто туго сообразить
1
7 / 7 / 3
Регистрация: 21.10.2012
Сообщений: 26
21.10.2012, 18:52 11
D_bl_M, ссори, шаблон брала из другой программки, должно быть стандартно
int_main ();

на здоровье
1
28 / 28 / 1
Регистрация: 25.03.2012
Сообщений: 130
21.10.2012, 19:19  [ТС] 12
for Lana_levchuk,
Кликните здесь для просмотра всего текста
можете со мной связаться? skype: timofeev.d.i (если он у Вас есть), личные сообщения отключены из-за нулевой репутации


Kastaneda,
De_N,
Ryzhikov_A,
И вам ребята огромное спасибо, еще раз утверждаюсь что это самый оперативный форум. Еще вернусь ))) вопросов масса
1
1 / 1 / 0
Регистрация: 15.01.2014
Сообщений: 5
16.01.2014, 00:48 13
Здравствуйте,
может кому пригодится.
Треугольники прямоугольные, пустые и закрашенные внутри.
Размер катета задается пользователем.

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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <iostream>
using namespace std;
 
void main()
{
    cout << "Triangles empty and full! \n"; 
 
    int a;
    cout << "\nEnter cathetus of triangle: ";
    cin >> a;
 
    for (int y = 1; y <= a; y++)// treugolinik 1 pustoi
    {
        for (int x = 1; x <= a; x++)
        {
            if (x == 1 || y == a || x == y)
                cout << "*";
            else
                cout << " ";
        }
        cout << endl;
    }
    cout << endl;
 
    for (int y = 1; y <= a; y++)// treugolinik 1 zapolnennii
    {
        for (int x = 1; x <= y; x++)
        {
            cout << "*";
        }
        cout << endl;
    }
    cout << endl;
 
    for (int y = 1; y <= a; y++)// treugolinik 2 pustoi
    {
        for (int x = 1; x <= a; x++)
        {
            if (x == a || y == a || y == a - x + 1)
                cout << "*";
            else
                cout << " ";
        }
        cout << endl;
    }
    cout << endl;
 
    for (int y = 1; y <= a; y++)// treugolinik 2 zapolnennii 
    {
        for (int x = 1; x <= a; x++)
        {
            if (y <= a - x)
                cout << " ";
            else
                cout << "*";
        }
        cout << endl;
    }
    cout << endl;
 
    for (int y = 1; y <= a; y++)// treugolinik 3 pustoi
    {
        for (int x = 1; x <= a; x++)
        {
            if (x == 1 || y == 1 || y == a - x + 1)
                cout << "*";
            else
                cout << " ";
        }
        cout << endl;
    }
    cout << endl;
 
    for (int y = 1; y <= a; y++)// treugolinik 3 zapolnennii
    {
        for (int x = 1; x <= a - y + 1; x++)
        {
            cout << "*";
        }
        cout << endl;
    }
    cout << endl;
 
    for (int y = 1; y <= a; y++)// treugolinik 4 pustoi
    {
        for (int x = 1; x <= a; x++)
        {
            if (x == a || y == 1 || x == y)
                cout << "*";
            else
                cout << " ";
        }
        cout << endl;
    }
    cout << endl;
 
    for (int y = 1; y <= a; y++)// treugolinik 4 zapolnennii
    {
        for (int x = 1; x <= a; x++)
        {
            if (x >= y)
                cout << "*";
            else
                cout << " ";
        }
        cout << endl;
    }
}
0
0 / 0 / 0
Регистрация: 29.01.2017
Сообщений: 7
06.02.2017, 22:26 14
а как сделать такой трехугольник токо с вайлами
х
хх
ххх
хххх
ххххх

Добавлено через 1 минуту
и такое самое но первернутое
0
28 / 26 / 14
Регистрация: 15.10.2012
Сообщений: 60
07.02.2017, 09:51 15
Если с cstream, то вот.
Для обратной последовательности следует раскомментировать строку 15 (убрав 14-ю).

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
#include <iostream>
using namespace std;
 
int count_line=5;     // количество строк
int i;              // Переменная цикла
 
int main()
{
int i = 0;       // Подсчет линий
 
while (i<=count_line)       // Главный цикл-while
    {
    int ii = 0;                 // Подсчет звоздочек к текущей строке
    while (ii<i)                // Вложенный цикл-while
    //while (ii<count_line-i)   // Для обратной последовательности
        {
        cout << "*";
        ii++;
        }
 
    cout << endl;       // Переход на новую строку
    i++;
    }
 
    return 0;
}
0
Форумчанин
Эксперт CЭксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
07.02.2017, 12:15 16
Цитата Сообщение от Oleksiy Посмотреть сообщение
х
хх
ххх
хххх
ххххх
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int main()
{
    const int N = 7;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
            std::cout << (i < j ? ' ' : '*');
        std::cout << std::endl;
    }
}
Цитата Сообщение от Oleksiy Посмотреть сообщение
и такое самое но первернутое
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int main()
{
    const int N = 7;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
            std::cout << (i >= N - j ? ' ' : '*');
        std::cout << std::endl;
    }
}
0
0 / 0 / 0
Регистрация: 29.01.2017
Сообщений: 7
07.02.2017, 17:34 17
а как вот такой
***
.**
..*

Добавлено через 2 минуты
но без точек

Добавлено через 23 секунды
но без точек
0
Форумчанин
Эксперт CЭксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
07.02.2017, 17:42 18
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int main()
{
    const int N = 7;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
            std::cout << (i < j ? ' ' : '*');
        std::cout << std::endl;
    }
}
Как бы могли и сами догадаться, тут две буквы местами поменялись
0
0 / 0 / 0
Регистрация: 29.01.2017
Сообщений: 7
07.02.2017, 18:28 19
с while и cout

Добавлено через 41 секунду
и int
0
Форумчанин
Эксперт CЭксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
07.02.2017, 18:29 20
Цитата Сообщение от Oleksiy Посмотреть сообщение
с while и cout
Добавлено через 41 секунду
и int
Делайте сами
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2017, 18:29
Помогаю со студенческими работами здесь

нарисовать треугольник из * без if else
Доброго времени суток, в книге задание нарисовать треугольник из *, причем пользователь вводит...

Нарисовать треугольник в консоли
#include &lt;iostream&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;rus&quot;); char...

Нарисовать треугольник звездочками
1) Write a program that prints the screen below. Conditions: Only use one printf(&quot;*&quot;) or...

Нужно Нарисовать Треугольник на C++
Дали задание по C++. Нарисовать треугольник.Дайте материалы(ссылки,книги,tutorial) с не сложными...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru