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

Построить пирамиду - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 62, средняя оценка - 4.87
Tiami
Яростный кот
 Аватар для Tiami
-4 / 1 / 1
Регистрация: 10.03.2009
Сообщений: 220
10.03.2009, 13:22     Построить пирамиду #1
как сделать пирамидку типа чтобы прибавлялось на каждой строке по два X.сделать нада с помощью цикла for и два вложенных цикла один внутренний будет заниматься печатанием пробелов и символа 'x',а другой который будет начинать с новой строки,я не пойму такую логику помогите а
x
xxx
xxxxx
xxxxxxx

и таких строк нада 20
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <iomanip>
#include <conio.h>
using namespace std;
int main()
{
    int x,ch; 
    for(x=0;x<40;x++)
    cout<<setw(15)<<++x<<endl;
    getchar();
    return 0;
}
Вот все таки как сделать с цифрами 1 3 5 7,я понимаю,а как заменить количество Цифр на буквы я не пойму,или сделать это циклами как в задаче мож кто нить поможет?

или если сделать так то просто появляется столб 'x',а вот как сделать чтобы они прибавлялись по 'x' 'x' с пробелом на каждой строке складывая предыдущий результат не пойму
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <iomanip>
#include <conio.h>
using namespace std;
int main()
{
    char x,ch; 
    for(x=0;x<20;x++)
    cout<<setw(15)<<'x'<<endl;
    getchar();
    return 0;
}
Добавлено через 31 минуту 36 секунд
Модифицировал код вот:но получается просто пирамида без прибавления 'x' 'x' к новой строке прибавляет тока 'x'(да и вид у нее не справо налево а слева направо)>>вот так:
x
xx
xxx
xxxx
xxxxx
xxxxxx
итд

Добавлено через 38 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <iomanip>
#include <conio.h>
using namespace std;
int main()
{
    for (char i=1; i<20;i++) {
    for (char j=1; j < i; j++) {
    cout<<"x";}
    cout<<endl;
}
    getchar();
    return 0;
}
Модификация кода,что еще нада вот?

Добавлено через 46 минут 58 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <iomanip>
#include <conio.h>
using namespace std;
int main()
{
    for (char i=1; i<20;i++)
    {
    for (char j=1; j < i;j++)
    {
    cout<<"xx";
    } 
    cout<<"x"<<endl; 
    }
    getchar();
    return 0;
}
вроде понял как а как сделать в обратном порядке вот так хз:
x
xxx
xxxxx
xxxxxxx
даже не знаю мож кто подскажет?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
QWAN
56 / 55 / 1
Регистрация: 02.09.2008
Сообщений: 181
10.03.2009, 16:14     Построить пирамиду #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
#include <iostream>
#include <iomanip>
#include <conio.h>
using namespace std;
int main()
{
    int s;//Количество строк
    cout<<"Enter the number of rows S=";
    cin>>s;
    cout<<endl;
    char ch;//Символ которым будет заполнятся пирамида
    cout<<"Enter a filler character   ";
    cin>>ch;
    cout<<endl<<endl;//две пустых строчки
    for(int i=0;i<s;i++)//1-вый цикл управляет строками
    {
        cout<<setw(s-i)<<' ';        //выводит пробелы перед символом
        for (int j=0; j<=i*2;j++)    //2-ой 
            cout<<ch;                //выводит символы
        cout<<endl;
    }
    cout<<endl<<endl;//две пустых строчки в конце
    return 0;
}
 Комментарий модератора 
Рука настолько быстрая, что даже теги кода поставить поленилась?
Tiami
Яростный кот
 Аватар для Tiami
-4 / 1 / 1
Регистрация: 10.03.2009
Сообщений: 220
11.03.2009, 13:42  [ТС]     Построить пирамиду #3
Цитата Сообщение от QWAN Посмотреть сообщение
for(int i=0;i<s;i++)//1-вый цикл управляет строками
{
cout<<setw(s-i)<<' '; //выводит пробелы перед символом
for (int j=0; j<=i*2;j++) //2-ой
cout<<ch; //выводит символы
Пожалуйста поподробнее обясните мне этот механизм,опишите кто может,я понял но визуально.
Del_Piero_10
Smart is the new Sexy
24 / 24 / 1
Регистрация: 29.12.2008
Сообщений: 109
11.03.2009, 14:03     Построить пирамиду #4
C++
1
for(int i=0;i<s;i++)//1-вый цикл управляет строками
- Переключает строки, от 0-ой до полсденей(s-1).

C++
1
cout<<setw(s-i)<<' '; //выводит пробелы перед символом
- манипулятор вывода setw выставляет ширину поля ввода. Ставим например s-i = 4. Это значит что ширина поля равна 4-ем. А так как по умолчанию вывод начинается по выравнмванию по правому краю, то у нас и получится 3 пробела, и с 4 места мы начнем выводить строку пирамиды.

C++
1
2
for (int j=0; j<=i*2;j++) //2-ой
cout<<ch; //выводит символы
- Собственно начинаем выводить символы в строку.
QWAN
56 / 55 / 1
Регистрация: 02.09.2008
Сообщений: 181
11.03.2009, 14:35     Построить пирамиду #5
s- количество строк (сколько тебе нужно, например 20)
i=0 оно меньше 20, значит начинает выполнятся тело цикла
первая строка
cout<<setw(s-i)<<' '; манипулятор setw(20-0) печатает 20 <<' ';(в нашем случае пробелов)
далее начало 2-цикла
for (int j=0; j<=i*2;j++)
int j=0, оно меньше или равно i*2 (в даном случае равон 0) так-как 0*2=0 (значит выполняется тело цикла)
cout<<ch; выводится один символ (например Х), тело цикла подошло к концу ивозращается в начало (cout<<endl; - относится к первому циклу)
инкрементирующее выражение j++ (было 0 стало 1) 1 больше 0? (да ) значит 2 (внутренний) цикл заканчивается
cout<<endl; продолжаем выполнять 1 цикл (в начало новой строки) и снова в начало 1-го цикла
инкрементирующее выражение i++ (было 0 стало 1) оно меньше 20, значит начинает выполнятся тело цикла... и так далее

Добавлено через 14 минут 49 секунд
Ну как теперь понятно?

Добавлено через 3 минуты 50 секунд
А вообще то возьми почитай книгу например Р. Лафоре Объектно-ориентированное программирование
Tiami
Яростный кот
 Аватар для Tiami
-4 / 1 / 1
Регистрация: 10.03.2009
Сообщений: 220
12.03.2009, 11:05  [ТС]     Построить пирамиду #6
Цитата Сообщение от QWAN Посмотреть сообщение
А вообще то возьми почитай книгу например Р. Лафоре Объектно-ориентированное программирование
Я ее и прохожу читаю
SZoRBDo7
Сообщений: n/a
24.01.2012, 19:29     Построить пирамиду #7
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
#include <iostream> //cin, cout, cerr, clog, wcin, wcout, wcerr, wclog
using namespace std; //Пространство имен STD
 
int main()
{
    int iKznakX, iKProb;
    cout << endl;
    cout << endl;
    for(int j=1; j<=20; j++)
    {
        iKznakX = (j * 2) - 1;
        iKProb = (39 - iKznakX) / 2;
        cout << endl;
        for(int j1=1; j1<=39; j1++)
        {
            
            if ((j1 <= iKProb) || (j1 > (39 - iKProb)))
                cout << '\x00'; //можно '\xB2' нагляднее 
            else
                cout << 'X';
        }
        
    }
    cout << endl;
    cout << endl;
    return 0;
}
mashas
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 3
04.12.2012, 18:08     Построить пирамиду #8
Вообще-то в задании есть бонус
"Верхняя часть пирамиды должна выглядеть так:
______Х
_____ХХХ
___ХХХХХ
_ХХХХХХХ
ХХХХХХХХХ
"

как организовать меняющееся количество пробелов я совсем непонял. Хелп!
aned
2 / 1 / 0
Регистрация: 27.07.2013
Сообщений: 22
28.07.2013, 12:24     Построить пирамиду #9
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
#include <iostream>
 
using namespace std;
 
int main(){
    setlocale(0,"");
 
    int size = 0;//основание
    int h;//высота
 
    cout << "Введите длину основания " << endl;
    cin >> size;
 
    h = size/2 + 1;
 
    for(int i = 0; i < h; i++)
    {
 
        int j=0;
        int k;
 
        for(k = 0; k <= size ; k++)
            if (  k >=(h + i))
                cout << ' ';
 
        for(int j = 0; j <= size;j++)
            if( j>(h - i) && j <(h + i))
                cout << 'x';
 
        cout<<endl;
    }
    char r;
 
    cout<<"Продолжить (y/n) ? ";//продолжение для построения пирамиды
                                                 //с другим основанием
    cin>>r;
 
    if (r=='y')
    {
        return main();
 
    } 
    else if(r=='n')
    {
        exit(0);
    }
    else
    {
        cout<<"Ошибка!";
 
    }
 
    cout<<endl;
    system("pause");
    return 0;
}
maxann
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 5
04.08.2013, 17:37     Построить пирамиду #10
тоже вариант
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> // для cout
#include<iomanip> // для setw
using namespace std;
int main()
{
int s;// переменная задающая колличество строк
int q;// переменная задающая колличество символов "X"
 
     for(s=1;s<=20;s++)
    {
     cout <<setw(21-s)<< " ";// задается колличество пробелов
 
     for(q=1;q<=s;q++) // задается колличество символов
          {
             cout<<"X";
          }     
     cout<<endl;
 }
 
system("pause");
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2013, 01:58     Построить пирамиду
Еще ссылки по теме:

C++ Разработайте, реализуйте и протестируйте класс, описывающий правильную треугольную пирамиду
C++ Изобразите на экране пирамиду из символов 'X
C++ Построить график
C++ Сформировать стек-пирамиду слов: на вершине самое длинное
C++ Начинающий фараон хочет показать пирамиду

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

Или воспользуйтесь поиском по форуму:
mashas
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 3
24.10.2013, 01:58     Построить пирамиду #11
более точное решение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
#include <conio.h>
int main()
{
 int y = 39, x=1;
 do { int j = y; int d = x;
    do { cout<<' '; j--; } while (j!=0);
    do { cout<<'X'; d--; } while (d!=0);
    y-=2; x+=2;
    cout<<endl;
  } while (y>0);
 getche();
 
return 0; 
}
Yandex
Объявления
24.10.2013, 01:58     Построить пирамиду
Ответ Создать тему
Опции темы

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