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

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

Войти
Регистрация
Восстановить пароль
 
 
MURADDDD
1 / 1 / 0
Регистрация: 20.11.2013
Сообщений: 40
#1

Изобразите на экране пирамиду из символов 'X - C++

30.11.2013, 18:00. Просмотров 2409. Ответов 24
Метки нет (Все метки)

При помощи цикла for изобразите на экране пирамиду из символов 'X'. Верхняя часть пирамиды должна выглядеть следующим образом:
х
ххх
ххххх
ххххххх
ххххххххх
Вся пирамида должна быть высотой не 5 линий, как изображено здесь, а 20 линий. Одним из способов ее построения может служить использование двух вложенных циклов, из которых внутренний будет заниматься печатанием символов 'X' и пробелов, а другой осуществлять переход на одну строку вниз.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1481 / 1057 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
30.11.2013, 18:47     Изобразите на экране пирамиду из символов 'X #2
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
 
int main()
{
  for (int i = 1; i <= 20; ++i)
  {
    std::cout << std::string(i, 'X') << std::endl;
  }
  return 0;
}
MURADDDD
1 / 1 / 0
Регистрация: 20.11.2013
Сообщений: 40
30.11.2013, 19:09  [ТС]     Изобразите на экране пирамиду из символов 'X #3
Спасибо, можете разъяснить очень подробно строку 8? Почти ничего не понял
DU
1481 / 1057 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
30.11.2013, 19:15     Изобразите на экране пирамиду из символов 'X #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
 
int main()
{
  for (int i = 1; i <= 20; ++i)
  {
    std::string str(i, 'X'); // создаем переменную-строку длинной i все символы которой - X
    std::cout << str << std::endl; // печатаем строку str на экран и затем переходим на новую строку (<< std::endl)
  }
  return 0;
}
MURADDDD
1 / 1 / 0
Регистрация: 20.11.2013
Сообщений: 40
30.11.2013, 19:32  [ТС]     Изобразите на экране пирамиду из символов 'X #5
понянто

Добавлено через 4 минуты
нигде не могу найти информацию о стд:: стринг? ссылку не подскажете?
DU
1481 / 1057 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
30.11.2013, 19:44     Изобразите на экране пирамиду из символов 'X #6
http://yandex.ru/yandsearch?text=std%3A%3Astring&lr=213
mpol
1 / 1 / 0
Регистрация: 23.10.2013
Сообщений: 23
07.07.2014, 16:55     Изобразите на экране пирамиду из символов 'X #7
Всем привет. Сижу ломаю себе голову над этим примером. Наткнулся на него в книге Р. Лафоре "Объектно ориентированное программирование". Так вот, если делать его так как написано в задании, то у меня возникает вопрос, как его сделать?
В задании написано: "при помощи цикла FOR изобразите пирамиду ......... Одним из способов ее построения может служить использование ДВУХ вложенных циклов, из которых внутренний будет заниматься печатанием символов 'Х' и пробелов, а другой осуществлять переход на одну строку вниз."

Как с одним циклом реализовать понятно, а вот как с двумя???

Подскажите пожалуйста. Это не срочно и не на экзамен, так, для себя. Просто интересно.

Это как я сделал:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
    char ch('X');
    int j=60,l=0;
    for (int i=0;i<20;i++){
            cout<<setw(j/2)<<setfill(' ')<<' '<<setw(l)<<setfill(ch);
        j-=2,l+=2;
        cout<<"\n";
    };
    return 0;
}
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 1
07.07.2014, 17:12     Изобразите на экране пирамиду из символов 'X #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от mpol Посмотреть сообщение
а вот как с двумя?
С двумя легче:
C++
1
2
3
4
5
6
7
8
#include <iostream>
int main(){
    for(int i = 1; i <= 20; ++i) {
        for(int j = 0; j < i; ++j)
            cout << 'X';
        cout << '\n';
    }
}
kikycode
0 / 0 / 1
Регистрация: 08.07.2014
Сообщений: 5
08.07.2014, 03:47     Изобразите на экране пирамиду из символов 'X #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
#include<iostream>
#include<conio.h>
using namespace std;
int main(void)
{
   setlocale(LC_ALL, "rus");
   cout<<"Введите символ:"<<endl;
   char a[20];
   cin>>a;
   cout<<"Введите кол-во строк:"<<endl;
   int b;
   cin>>b;
   cout<<endl;
   for(int i=1; i<=b; i++)
   {
       for(int j=1; j<=i; j++)
       {
           cout<<a;
       }
   cout<<endl;
   }
   getch();
}
Вот моя реализация
mpol
1 / 1 / 0
Регистрация: 23.10.2013
Сообщений: 23
08.07.2014, 10:19     Изобразите на экране пирамиду из символов 'X #10
Это все замечательно, но в задании указано, что нужны еще и пробелы во вложенном цикле вместе с Х, которые будут формировать пирамиду, и в нем не указано как она будет располагаться (как она будет выравниваться), по правому краю или по левому. А внешний цикл должен выводить символ перевода строки.
Просто указано как она должна выглядеть, приблизительно так:
х
ххх
ххххх
ххххххх
ххххххххх

Так вот, как указать внешний цикл с переводом строки понятно, а вот что делать с внутренним? Что бы он выводил определенное количество пробелов, затем печатал "Х", затем переходил во внешний цикл, переводил все на новую строку, затем передавал управление внутреннему циклу, который в свою очередь печатал, отсчитывая нужное количество пробелов и символов "Х" и т.д.
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 1
08.07.2014, 10:31     Изобразите на экране пирамиду из символов 'X #11
Цитата Сообщение от mpol Посмотреть сообщение
Так вот, как указать внешний цикл с переводом строки понятно, а вот что делать с внутренним? Что бы он выводил определенное количество пробелов, затем печатал "Х",
А кто мешает сначала напечатать сколько надо пробелов одним циклом, а затем сколько надо иксов вторым? Я как-то не могу понять, в чём вообще проблема и что вызывает вопросы?
mpol
1 / 1 / 0
Регистрация: 23.10.2013
Сообщений: 23
08.07.2014, 15:29     Изобразите на экране пирамиду из символов 'X #12
Цитата Сообщение от Nick Alte Посмотреть сообщение
А кто мешает сначала напечатать сколько надо пробелов одним циклом, а затем сколько надо иксов вторым? Я как-то не могу понять, в чём вообще проблема и что вызывает вопросы?
Да как бы никто не мешает.

Вопрос только в том, что бы сделать именно так как требуется в задании. А если делать по другому, то вариантов есть много.
Просто хочу разобраться как сделать именно по заданию. Вот и все.
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 1
08.07.2014, 19:10     Изобразите на экране пирамиду из символов 'X #13
Цитата Сообщение от mpol Посмотреть сообщение
именно так как требуется в задании
Это тоже просто: вставить во внутренний цикл условие, которое выбирает, печатать пробел или икс в зависимости от текущей позиции. Однако ж выполнять задание, настолько рьяно, с точностью до буквы, придерживаясь довольно-таки туманных сопровождающих рекомендаций, странно.
mpol
1 / 1 / 0
Регистрация: 23.10.2013
Сообщений: 23
08.07.2014, 23:33     Изобразите на экране пирамиду из символов 'X #14
Ну почему же странно.
Можно смухлевать и сделать немного по другому. Сделать так что бы пирамида получилась, так как у меня, более простой вариант, а вот сделать именно так как в задании, как по мне более сложно. Во всяком случае для меня. Потому и хочу разобраться. Ведь решить более простым способом не означает что этот способ лучше. Да и задание давалось бы по другому и в нем не указывалось бы, что его нужно решить именно так. Указывалось бы просто, что нужно вывести на экран пирамиду из символов, неважно как вы это решите. А тут конкретное указание, решите так, подумайте.
Как то так. Но это мое мнение, у вас оно может быть другим.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
09.07.2014, 00:03     Изобразите на экране пирамиду из символов 'X #15
Я не понял пирамида нужна или треугольник с прямым углом?
Вот пирамида, если тема актуальна:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int main()
{
    int n;
    std::cout << "Type n: "; std::cin >> n;
    for(int i = 0 ; i < n; i++)
    {
        for(int j = n; j >= 0; j--)
        {
            if(j <= i) std::cout << 'X';
            std::cout << ' ';
        }
        std::cout << std::endl;
    }
    
    return 0;
}
gray_fox
What a waste!
1438 / 1167 / 61
Регистрация: 21.04.2012
Сообщений: 2,436
Завершенные тесты: 3
09.07.2014, 01:52     Изобразите на экране пирамиду из символов 'X #16
mpol,
C++
1
2
3
4
5
6
7
8
9
10
for (std::size_t i = 1; i <= 20; ++i) {
   std::size_t j = 0;
   for ( ; j != 20 - i; ++j) {
      std::cout << ' ';
   }
   for ( ; j != 20; ++j) {
      std::cout << 'X';
   }
   std::cout << std::endl;
}
Добавлено через 2 минуты
ну или так
C++
1
2
3
for (std::size_t i = 1; i <= 20; ++i) {
   std::cout << std::string(20 - i, ' ') << std::string(i, 'X') << std::endl;
}
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
09.07.2014, 02:13     Изобразите на экране пирамиду из символов 'X #17
gray_fox, но это не пирамида
gray_fox
What a waste!
1438 / 1167 / 61
Регистрация: 21.04.2012
Сообщений: 2,436
Завершенные тесты: 3
09.07.2014, 02:23     Изобразите на экране пирамиду из символов 'X #18
GuGo1991, а, понял, тогда так:
C++
1
2
3
4
5
6
for (std::size_t i = 0; i != 20; ++i) {
   std::cout << std::string(20 - i - 1, ' ')
             << std::string(i * 2 + 1, 'X')
             << std::string(20 - i - 1, ' ')
             << std::endl;
}
mpol
1 / 1 / 0
Регистрация: 23.10.2013
Сообщений: 23
09.07.2014, 07:10     Изобразите на экране пирамиду из символов 'X #19
GuGo1991, большое спасибо.
Ваше решение наиболее соответствует условию. Про IF во 2 цикле я не подумал.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2014, 09:29     Изобразите на экране пирамиду из символов 'X
Еще ссылки по теме:
строим пирамиду циклом for C++
Процедура, "рисующая" на экране горизонтальную линию из 80 символов "*" C++
C++ Начинающий фараон хочет показать пирамиду
C++ Построить четырехугольную пирамиду, найти ее площадь и объем
C++ Сформировать стек-пирамиду слов: на вершине самое длинное

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

Или воспользуйтесь поиском по форуму:
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 1
09.07.2014, 09:29     Изобразите на экране пирамиду из символов 'X #20
Цитата Сообщение от mpol Посмотреть сообщение
Ведь решить более простым способом не означает что этот способ лучше.
Не всегда, конечно, но в большинстве случаев как раз означает. Печатать пробелы одним циклом, а кресты вторым и нагляднее, и эффективнее, чем проверять условие для каждого символа. А понятность и выразительность текста программы - приоритет нумер один.
Yandex
Объявления
09.07.2014, 09:29     Изобразите на экране пирамиду из символов 'X
Ответ Создать тему
Опции темы

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