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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
#1

Вывести N одинаковых символов - C++

28.12.2013, 14:48. Просмотров 2358. Ответов 7
Метки нет (Все метки)

Здравствуйте, уважаемые форумчане.
Задачка предельно проста:
Вывести пирамиду из символа (например, символа 'X'). Высота пирамиды равна 20 строкам.
Должно получиться что-то вроде этого:

Название: Безымянный.png
Просмотров: 175

Размер: 613 байт

Я реализовал программу следующим образом:
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 <iomanip>
#include <conio.h>
 
using namespace std;
 
int main()
{
    const char ch='X';
    
    for (int i=0; i<20; i++)
    {
        for (int j=19-i; j>=0; j--)
            cout << ' ';
        for (int j=1; j<2*i; j++)
            cout << ch;
        for (int j=20+i; j<40; j++)
            cout << ' ';
        cout << endl;
    }
 
    return 0;
}
Вопрос: есть ли команда, которая выводит N символов (например cout << 8*'X'; //выводит 8 символов 'X')?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2013, 14:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести N одинаковых символов (C++):

Найти и вывести все имеющиеся пары стоящих рядом одинаковых символов - C++
Помогите решить пожалуйста: Среди данного массива символов, найти и вывести все имеющиеся пары стоящих рядом одинаковых символов. Все...

В строке вывести последовательности состоящие из трех одинаковых подряд идущих символов - C++
Ввести строку с клавиатуры. Найти и вывести на экран последовательности, состоящие из трех одинаковых подряд идущих символов.

Найти количество символов в самой длинной цепочке из одинаковых символов - C++
Дана строка символов St длиной не более 72, которая может состоять из цифр, малых латинских букв и знаков '+' '-' '*' '/' '.' ')' '(' ...

Дана последовательность символов, в начале которой имеется некоторое количество одинаковых символов. Определить это количество - C++
8.10.2. Помогите, пожалуйста, решить задачу в С++. Дана последовательность символов, в начале которой имеется некоторое...

Замена одинаковых символов в слове - C++
Ввести фразу. Все последовательности одинаковых символов заменить на выражения N(C). Где N – количество последовательных одинаковых...

Пара соседствующих одинаковых символов - C++
Даны символы s1, s2, … Известно, что символ s1 отличен от восклицательного знака и что среди s2, s3,... есть по крайней мере один...

7
Alex5
1086 / 747 / 116
Регистрация: 12.04.2010
Сообщений: 1,907
28.12.2013, 15:03 #2
Можно воспользоваться функцией printf() ( заголовочный файл <stdio.h> )
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    char str[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
 
    printf( "%10.2s \n", str );
    printf( "%10.3s \n", str );
    printf( "%10.4s \n", str );
    // "%10.4s"  означает: 10 - ширина поля вывода, 4 - число знаков из строки 
 
    // можно также использовать переменные
    int m = 20, k = 5;
    printf( "%*.*s \n", m, k, str );
    k = 6;
    printf( "%*.*s \n", m, k, str );
    k = 7;
    printf( "%*.*s \n", m, k, str );
2
zss
Модератор
Эксперт С++
6522 / 6084 / 2002
Регистрация: 18.12.2011
Сообщений: 15,826
Завершенные тесты: 1
28.12.2013, 15:38 #3
На основе идет Alex5, получается классный код
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
char str[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    for(int m = 20, k = 1;k<40;k+=2,m++)
       printf( "%*.*s \n", m, k, str );
    _getch();
}
2
genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
02.01.2014, 22:51  [ТС] #4
В общем проблема решается предельно просто:
Написать функцию, которая будет выводить N символов, а в качестве аргумента будет само число N:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void repchar(int );                    // прототип функции
//...............................................
int main ()
{
    //...
    repchar(10);
    //...
 
    return 0;
}
void repchar(int a)
{
    for(int i=0; i<a; i++)
        cout << 'X';
    cout << '/n';
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7490 / 4605 / 691
Регистрация: 29.11.2010
Сообщений: 12,589
03.01.2014, 03:25 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int main()
{
    const char c = 'X';
    const int N = 20;
    for (int i=1; i <= N; i++)
    {
        for (int j=1; j < 2*N; j++)
            std::cout << (j - i < N && j + i > N ? c : ' ');
        std::cout << std::endl;
    }
}
2
genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
03.01.2014, 18:09  [ТС] #6
MrGluck, элегантно Спасибо!
0
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
03.01.2014, 18:14 #7
в цикле можно
0
genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
03.01.2014, 19:04  [ТС] #8
Esecman, что я и реализовал в своей программе. Однако код получился слишком громоздким, и я искал более элегантное решение задачи.
0
03.01.2014, 19:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2014, 19:04
Привет! Вот еще темы с ответами:

Проверить, состоят ли строки из одинаковых символов - C++
Требуется проверить можно ли получить первую строку из второй, поменяв местами символы, или наоборот. В массивах last и first хранится N...

Как убрать вывод двух одинаковых символов - C++
есть код, выводит 36 комбинаций. но среди них есть лишние, как сделать так, чтобы он не выводил те комбинации где идут подряд две двойки...

Как подсчитать количество одинаковых символов в строке? - C++
Вот сама задача: Написать программу, которая проверяет, сколько каждый символ встречается во введённой с клавиатуры строке. Вот то не...

Количество пар рядом стоящих одинаковых символов строки - C++
Задание на 7 лабораторную работу Написать программу, которая принимает от пользователя одну или строки, в зависимости от задачи....


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

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

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