Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.76
Вольдемар777
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 7
#1

Вывести на экран геометрическую фигуру, заполняя ее символом * - C++

19.02.2013, 21:09. Просмотров 3522. Ответов 20
Метки нет (Все метки)

помогите, пожалуйста. Разработать программу, которая выводит на экран геометрическую фигуру, заполняя ее символом *. размер фигуры определяется при вводе. Заполненный равнобедренный треугольник. Основание - n, высота n/2+1 (n-нечетное) Треугольник этот повернут высотой вниз, то есть перевернут. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2013, 21:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вывести на экран геометрическую фигуру, заполняя ее символом * (C++):

Программа которая выводит на экран геометрическую фигуру
Разработать программу, которая выводит на экран геометрическую фигуру, заполняя...

Программа которая выводит на экран геометрическую фигуру(исправить)
Мне нужно чтобы треугольник был пустым,т.е звездочками должна быть нарисована...

Программа которая выводит на экран геометрическую фигуру(исправить)
Разработать программу, которая выводит на экран геометрическую фигуру, заполняя...

С помощью цикла for вычислить и вывести на экран геометрическую прогрессию 1, 2, 4, 8, 16, 32
Доброго времени суток! Помогите решить задачу плз) напишите программу которая с...

Нарисовать любую геометрическую фигуру
Здравствуйте! Помогите пожалуйста, как использовать в Turbo C графику с помощью...

В консоли нарисовать геометрическую фигуру
Разработать программу, которая выводит на экран геометрическую фигуру, заполняя...

20
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
19.02.2013, 21:47 #2
а что не получается?
два цикла один по высоте , второй по длине, высота расчитывается, первая длина известна, каждая последующая -2 от предыдущей, и если не секрет кто вам такое задание дал? и с какой целью
0
Elovic
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 14
19.02.2013, 23:45 #3
Держи. Сделал для 5 размеров.
C++ (Qt)
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
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
int main() {
    int result;
    string a="    *     ",b="   ***   ", c="  *****  ",d=" ******* ",e="*********";
    cin >> result;
    cout << "\n";
    switch(result)
    {
    case 1:
        cout << a;
        break;
    case 2: 
        cout << b << "\n" << a;
        break;
    case 3:
        cout << c << "\n" << b << "\n" << a;
        break;
    case 4:
        cout << d << "\n" << c << "\n" << b << "\n" << a;
        break;  
    case 5:
        cout << e << "\n" << d << "\n" << c << "\n" << b << "\n" << a;
        break;    
    }
    getch();
    return 0;
}
0
Вольдемар777
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 7
19.02.2013, 23:58  [ТС] #4
сложность в том, чтобы перевернуть этот треугольник, у меня получается высотой вверх, а надо вниз. препод задал
0
Elovic
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 14
20.02.2013, 00:04 #5
C++ (Qt)
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
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
int main() {
    int result;
    string a="    *     ",b="   ***   ", c="  *****  ",d=" ******* ",e="*********";
    cin >> result;
    cout << "\n";
    switch(result)
    {
    case 1:
        cout << a;
        break;
    case 2: 
        cout << b << "\n" << a;
        break;
    case 3:
        cout << c << "\n" << b << "\n" << a;
        break;
    case 4:
        cout << d << "\n" << c << "\n" << b << "\n" << a;
        break;  
    case 5:
        cout << e << "\n" << d << "\n" << c << "\n" << b << "\n" << a;
        break;    
    }
    getch();
    return 0;
}
0
Вольдемар777
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 7
20.02.2013, 00:06  [ТС] #6
Спасибо, но после копирования и вставки кода в программу при компиляции выдает ошибку и не запускается

Добавлено через 9 минут
и там немного по-другому надо. там надо ввести основание треугольника с клавиатуры, оно должно быть нечетным и любым, и он должен построиться по той формуле. У меня заработало, но при цифре более 5 не работает
0
Вольдемар777
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 7
20.02.2013, 00:07  [ТС] #7
и там немного по-другому надо. там надо ввести основание треугольника с клавиатуры, оно должно быть нечетным и любым, и он должен построиться по той формуле. У меня заработало, но при цифре более 5 не работает
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
20.02.2013, 10:36 #8
и что препод добится этим хочет,как ты заметил то Elovic, предложил тебе статическую модель,я же тебе уже описал алгоритмдействия через 2 цикла и еще 1 счетчик предыдушего состояния

Добавлено через 17 минут
тут
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
#include <iostream>
 
using namespace std;
 
int main(){
    system("chcp 1251");
    int size = 0;
    int h;
    while(size%2 -1){
        cout << "Введите длину основания " << endl;
        cin >> size;
    }
 
    h = size/2 + 1;
 
    for(int i = 0; i < h; i++){
        int flag = i*2 ;
        int k;
        for(k = 0 ; k < flag/2 ; k++)
                cout << " ";
        for(int j = k ; j < size;j++)
            if(j < size - flag/2)
                cout << "*";
            else
                cout << " ";
 
        cout<<endl;
    }
    cout<<endl;
    system("pause");
    return 0;
}
готовый код но я настаиваю чтоб вы сами написали, алгоритм есть
1
Elovic
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 14
20.02.2013, 12:06 #9
Nixy, да, отличный код
0
Вольдемар777
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 7
20.02.2013, 19:42  [ТС] #10
спасибо, но при запуске ошибку опять выдает((
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
20.02.2013, 19:54 #11
какого рода ошибка?
0
winst2008
2 / 2 / 1
Регистрация: 25.05.2012
Сообщений: 18
20.02.2013, 20:02 #12
Компиль не в дебаг, а в релиз
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
20.02.2013, 20:04 #13
какая разница, исполняймый фаил все равно , должен работать
0
winst2008
2 / 2 / 1
Регистрация: 25.05.2012
Сообщений: 18
20.02.2013, 20:18 #14
ну я вот попробовал там и там в дебаг не прошло, ошибка линковщика
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
20.02.2013, 20:27 #15
на какой фаил, или у вас что <iostream> нет? или пространства имен std? просто все остальные переменные на месте
0
Вольдемар777
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 7
22.02.2013, 00:17  [ТС] #16
Спасибо, все заработало!
0
aned
2 / 1 / 2
Регистрация: 27.07.2013
Сообщений: 22
27.07.2013, 16:49 #17
так можно получить нормальную пирамиду:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
 
int main() {
    int result;
    string a[5]={"    *     ","   ***   ", "  *****  "," ******* ","*********"};
 
    cout<<"";
    cin >> result;
    cout << "\n";
    
    for (int i = 0; i <result; i++)
    {
        cout<<a[i];
        cout<<endl;
    }
    _getch();
    return 0;
}
0
Даниил
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 12:20 #18
Цитата Сообщение от aned Посмотреть сообщение
так можно получить нормальную пирамиду:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
 
int main() {
    int result;
    string a[5]={"    *     ","   ***   ", "  *****  "," ******* ","*********"};
 
    cout<<"";
    cin >> result;
    cout << "\n";
    
    for (int i = 0; i <result; i++)
    {
        cout<<a[i];
        cout<<endl;
    }
    _getch();
    return 0;
}
Ерунда (извиняюсь), я когда ввёл здесь число больше 5 то началось...

Сорри, я просто не умею картинки сюда заливать
Да и если ввести число меньше (или равно) 5 то будет половина пирамиды только
1
aned
2 / 1 / 2
Регистрация: 27.07.2013
Сообщений: 22
28.07.2013, 12:56 #19
тогда так:


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
#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;
}
Добавлено через 24 минуты
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
#include <iostream>
 
using namespace std;
 
int main(){
    setlocale(0,"");
 
    int size = 0;
    int h;
 
    cout << "Введите длину основания " << endl;
    cin >> size;
 
    h = size/2 ;
 
    for(int i = 0; i <= (h+1); 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;
}

Есть правда некоторая ошибка при четных значениях основания,но в основном-верно.А улучшать лень.
0
Даниил
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 13:17 #20
aned, Вот это правильно, молодец, лови +
1
28.07.2013, 13:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2013, 13:17
Привет! Вот еще темы с решениями:

Вывести на экран фигуру из *
Нужно нарисовать на экране вот такую фигуру (как на скриншоте). Нужно...

Вывести на экран фигуру из символов
День добрый! Помогите, пожалуйста, вывести формулу. Суть задачи такова: с...

По заданным целочисленным координатам на плоскости определить какую геометрическую фигуру они образуют
По заданным целочисленным координатам четырех точек на плоскости определить ,...

Вывести фигуру в трехмерном массиве на экран
Программа должна демонстрировать работу с классом объявленным и определённым,...


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

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

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