Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Tabulyator
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 4
#1

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

15.09.2013, 02:32. Просмотров 1582. Ответов 7
Метки нет (Все метки)

Ребят, всем привет! Помогите перевернуть треугольник в программе, что то не могу раскурить..
Последний треугольник надо сделать вида:
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 вариантов, но не выходит каменный цветок.. Хочу разобраться в этой головомойке.
Буду ОЧЕНЬ признателен за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2013, 02:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как перевернуть треугольник? (C++):

Найти количество простых чисел в массиве. Перевернуть все нечетные строки матрицы. Перевернуть каждое четное слово в строке - C++
Ребята помогите разобраться в коде программы, написав подробные комменты к данной проге. Спасибо! Постановка задачи 1. Используя...

Создать базовый класс Треугольник с 2 наследниками: Равносторонний треугольник, Прямоугольный треугольник - C++
Задание звучит так: Нужно создать базовый класс Треугольник с двумя наследующими его классами - равносторонний треугольник (·...

Как перевернуть одномерный массив? - C++
#include &lt;iostream&gt;; using namespace std; int main() { const int n=3; int myArray={1,2,3}; for (int i=0; i&lt;n; i++){ ...

Как перевернуть четные столбцы матрицы? - C++
Вот программа переворота четных строк: #include &lt;iostream&gt; int main() { const int M = 10, N = 5; int matrix; ...

Строки, представленные как массивы символов перевернуть и объединить - C++
Добрый день! Вводятся 2 строки. Перевернуть обе строки, склеить и вывести. Решить задачу с использование строк типа string...

Класс треугольник с произвольным классом - равнобедренный треугольник - C++
Создать класс треугольник, члены класса - длины 3-х сторон. Предусмотреть в классе методы проверки существования треугольника, вычисления и...

7
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 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;
}
1
Tabulyator
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 4
15.09.2013, 13:27  [ТС] #3
Croessmah, большое мерси! Разобрался, и как мне кажется, так даже лучше и нагляднее, чем циклы перецыкливать.)) Как я понимаю, одними лишь циклами (без использования width & fill) эту задачу реализовать не получится?

Не по теме:

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


Кстати std тут наверно лишние? И без них все работает
0
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 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 ;
}
1
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; ? Я конечно понимаю, что этот "проблемный" цикл можно убрать в конец кода, но хотелось бы решить вопрос иначе, ведь наверняка это бывает сделать просто не возможно.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
15.09.2013, 17:01 #6
А зачем нужно уменьшать num? Можно же прибавлять i
0
Tabulyator
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 4
15.09.2013, 18:07  [ТС] #7
Цитата Сообщение от Croessmah Посмотреть сообщение
А зачем нужно уменьшать num? Можно же прибавлять i
Можно. Тогда получится перевернутый треугольник и сделать его с прямым правым верхним углом. Хочу сделать из этой же конструкции цикла треугольник с прямым верхним левым углом. Но тут уже даже более актуальна моя вторая часть вопроса: почему же все-таки "num" пробирается через закрытый цикл и как перекрыть ему кислород?)) Пишу в vs2012.
0
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");
}
0
14.12.2015, 19:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2015, 19:46
Привет! Вот еще темы с ответами:

Как закрасить треугольник? - C++
Как мне закрасить треугольники? #include&lt;windows.h&gt; #include&lt;string.h&gt; #define ID_TIMER 1 HBRUSH tbrush; HBRUSH tbrush1; ...

Как сделать треугольник, как на рисунке? - C++
Здравствуйте, как можно реализовать такой треугольник (см. вложение) с помощью вложенных циклов? Интересует только пример (а).

Рисование в Си. Как нарисовать треугольник - C++
Как нарисовать треугольник

Как уместить круг и треугольник друг в друге? - C++
как правильно написать формулу? Известны площади круга и равностороннего треугольника. Определить: а) уместится ли круг в...


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

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

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