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

Как перевернуть треугольник? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Tabulyator
 Аватар для Tabulyator
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 4
15.09.2013, 02:32     Как перевернуть треугольник? #1
Ребят, всем привет! Помогите перевернуть треугольник в программе, что то не могу раскурить..
Последний треугольник надо сделать вида:
C++
1
2
3
4
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <conio.h>
#include <iostream>
 
using namespace std;
 
int main () 
{
    setlocale (LC_ALL, "rus");
 
    int num;
    cout << "\t\t*** Построение пирамиды ***\n\n";
 
    cout << "Зададим размер фигуры. Введите число: ";
    cin >> num;
    cout << endl;
    
    if (num <= 0)
        cout << "Вы ввели значение меньше, либо равное 0! Попробуйте еще раз.\n\n";
    else
    {   
// начало первой фигуры (треугольник)
        for (int i = 1; i <= num; i++)
        {
            for (int j = 1; j <= i; j++) 
        cout << "*"; 
        cout << endl;
        }
        cout << endl; 
// начало второй фигуры (квадрат)
        for (int i = 1; i <= num; i++)
        {
            for (int j = 1; j <= num; j++)
                cout << "+ ";
                cout << endl;
        }
        cout << endl; 
// начало третей фигуры (перевернутый треугольник)
        for (int i = 1; i <= num; num--)
        {   
            for (int j = 1; j <= num; j++)
                    cout << "*";
                    cout << endl;                       
        }
 
    }
    cout << endl;
 
    system("pause");
    return 0;
}

Испробовал просто 1000 вариантов, но не выходит каменный цветок.. Хочу разобраться в этой головомойке.
Буду ОЧЕНЬ признателен за помощь!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
15.09.2013, 08:04     Как перевернуть треугольник? #2
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
#include <iostream>
 
using namespace std;
 
int main () 
{
    setlocale (LC_ALL, "rus");
 
    int num;
    cout << "\t\t*** Построение пирамиды ***\n\n";
 
    cout << "Зададим размер фигуры. Введите число: ";
    cin >> num;
    cout << endl;
    
    if (num <= 0)
        cout << "Вы ввели значение меньше, либо равное 0! Попробуйте еще раз.\n\n";
    else
    {   
// начало первой фигуры (треугольник)
        for (int i = 1; i <= num; i++)
        {
            for (int j = 1; j <= i; j++) 
        cout << "*"; 
        cout << endl;
        }
        cout << endl; 
// начало второй фигуры (квадрат)
        for (int i = 1; i <= num; i++)
        {
            for (int j = 1; j <= num; j++)
                cout << "+ ";
                cout << endl;
        }
        cout << endl; 
// начало третей фигуры (перевернутый треугольник)
        for (int i = 0; i < num; ++i)
        { 
       std::cout.width ( i ) ;
       std::cout.fill ( ' ' ) ;
       std::cout << "" ;
       std::cout.width ( num - i ) ;
       std::cout.fill ( '*' ) ;
       std::cout << "" << std::endl ;
        }
 
    }
    cout << endl;
    return 0;
}
Tabulyator
 Аватар для Tabulyator
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 4
15.09.2013, 13:27  [ТС]     Как перевернуть треугольник? #3
Croessmah, большое мерси! Разобрался, и как мне кажется, так даже лучше и нагляднее, чем циклы перецыкливать.)) Как я понимаю, одними лишь циклами (без использования width & fill) эту задачу реализовать не получится?

Не по теме:

сколько тавтологии у меня получилось...


Кстати std тут наверно лишние? И без них все работает
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
15.09.2013, 13:31     Как перевернуть треугольник? #4
Цитата Сообщение от Tabulyator Посмотреть сообщение
Кстати std тут наверно лишние? И без них все работает
мне привычнее
Цитата Сообщение от Tabulyator Посмотреть сообщение
Как я понимаю, одними лишь циклами (без использования width & fill) эту задачу реализовать не получится?
C++
1
2
3
4
5
6
7
// начало третей фигуры (перевернутый треугольник)
for (int i = 0; i < num; ++i)
{ 
   for ( int j = 0 ; j < num ; ++j )
      std::cout << (j<i?' ':'*') ;
   std::cout << std::endl ;
}
Tabulyator
 Аватар для Tabulyator
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 4
15.09.2013, 16:42  [ТС]     Как перевернуть треугольник? #5
Croessmah,

Добавлено через 2 часа 53 минуты
Возник еще один неясный момент..
Кликните здесь для просмотра всего текста

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
#include <conio.h>
#include <iostream>
#include <iomanip>
 
using namespace std;
 
int main () 
{
    setlocale (LC_ALL, "rus");
 
    int num;
    cout << "\t\t*** Построение пирамиды ***\n\n";
 
    cout << "Зададим размер фигуры. Введите число: ";
    cin >> num;
    cout << endl;
    
    if (num <= 0)
        cout << "Вы ввели значение меньше, либо равное 0! Попробуйте еще раз.\n\n";
    else
    {   
 // начало первой фигуры (треугольник)          
        for (int i = 1; i <= num; i++)
        {
            for (int j = 1; j <= i; j++) 
        cout << "*"; 
        cout << endl;
        }
        cout << endl; 
// начало второй фигуры (перевернутый треугольник)
        for (int i = 0; i < num; num--) // здесь <----
            { 
             for (int j = 0; j < num; j++)
        cout << (j < i ? ' ' : '*');
        cout << endl;
            }
        cout << endl; 
        
 // начало третей фигуры (квадрат)
        for (int i = 1; i <= num; i++)
        {
            for (int j = 1; j <= num; j++)
                cout << "+ ";
                cout << endl;
        }
        cout << endl;                   
    }
    cout << endl;
 
    system("pause");
    return 0;
}

После создания 2й фигуры третью вывести невозможно, т.к. "num--" выводит заданный параметр в 0 и следующий цикл соответственно начинается с этого значения, что приводит, по сути, к завершению программы. Собственно созрел резонный вопрос, почему num выходит за пределы закрытого цикла? Как заставить следующий цикл начинаться с cin >> num; ? Я конечно понимаю, что этот "проблемный" цикл можно убрать в конец кода, но хотелось бы решить вопрос иначе, ведь наверняка это бывает сделать просто не возможно.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
15.09.2013, 17:01     Как перевернуть треугольник? #6
А зачем нужно уменьшать num? Можно же прибавлять i
Tabulyator
 Аватар для Tabulyator
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 4
15.09.2013, 18:07  [ТС]     Как перевернуть треугольник? #7
Цитата Сообщение от Croessmah Посмотреть сообщение
А зачем нужно уменьшать num? Можно же прибавлять i
Можно. Тогда получится перевернутый треугольник и сделать его с прямым правым верхним углом. Хочу сделать из этой же конструкции цикла треугольник с прямым верхним левым углом. Но тут уже даже более актуальна моя вторая часть вопроса: почему же все-таки "num" пробирается через закрытый цикл и как перекрыть ему кислород?)) Пишу в vs2012.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2015, 19:46     Как перевернуть треугольник?
Еще ссылки по теме:

C++ Как уместить круг и треугольник друг в друге?
Как перевернуть четные столбцы матрицы? C++
C++ Как найти, сколько окружностей можно вместить в треугольник?

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

Или воспользуйтесь поиском по форуму:
Zetroxx
0 / 0 / 1
Регистрация: 25.11.2015
Сообщений: 11
14.12.2015, 19:46     Как перевернуть треугольник? #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
void main()
{
    setlocale(LC_ALL, "rus");
    int width, i = 1, j = 1;
    cout << "Введите ширину треугольника: \n";
    cin >> width;
    int p = 0, k=width;
    while (i <= (width +1) / 2)
    {
        for (int j = 0; j < p; j++)
            cout << " ";
            for (j = 1; j <= k; j++)
                cout << "*";
        cout << "\n";
        i++;
        p++;
        k -= 2;
    }
    system("pause");
}
Yandex
Объявления
14.12.2015, 19:46     Как перевернуть треугольник?
Ответ Создать тему
Опции темы

Текущее время: 14:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru