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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
genock94
 Аватар для genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
28.12.2013, 14:48     Вывести N одинаковых символов #1
Здравствуйте, уважаемые форумчане.
Задачка предельно проста:
Вывести пирамиду из символа (например, символа 'X'). Высота пирамиды равна 20 строкам.
Должно получиться что-то вроде этого:

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

Размер: 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')?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
28.12.2013, 15:03     Вывести N одинаковых символов #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 );
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,207
Завершенные тесты: 1
28.12.2013, 15:38     Вывести N одинаковых символов #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();
}
genock94
 Аватар для genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
02.01.2014, 22:51  [ТС]     Вывести N одинаковых символов #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';
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
03.01.2014, 03:25     Вывести N одинаковых символов #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;
    }
}
genock94
 Аватар для genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
03.01.2014, 18:09  [ТС]     Вывести N одинаковых символов #6
MrGluck, элегантно Спасибо!
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
03.01.2014, 18:14     Вывести N одинаковых символов #7
в цикле можно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2014, 19:04     Вывести N одинаковых символов
Еще ссылки по теме:

Дана последовательность символов, в начале которой имеется некоторое количество одинаковых символов. Определить это количество C++
C++ Определить максимальное количество одинаковых символов, идущих подряд
Выяснить, имеется ли среди s1,...,sn пара соседствующих одинаковых символов C++

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

Или воспользуйтесь поиском по форуму:
genock94
 Аватар для genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
03.01.2014, 19:04  [ТС]     Вывести N одинаковых символов #8
Esecman, что я и реализовал в своей программе. Однако код получился слишком громоздким, и я искал более элегантное решение задачи.
Yandex
Объявления
03.01.2014, 19:04     Вывести N одинаковых символов
Ответ Создать тему
Опции темы

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