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

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

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

Нарисовать фигуру используя двумерный массив - C++

20.07.2016, 11:28. Просмотров 442. Ответов 13
Метки нет (Все метки)

Привет. Подскажите кто, как нарисовать с помощью двумерного массива?
*
* *
* * *
* * * *
и
*
* *
* *
* * * *
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2016, 11:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нарисовать фигуру используя двумерный массив (C++):

Используя массив сформировать фигуру на экране - C++
!Помогите! спрашивать числа и потом вывести отцентрованную хрень 1 5 1 3 0 (ноль значит конец ввода… человек не хочет вводить...

Двумерный массив. Программу написать используя указатели и строковые функции. - C++
#include <iostream.h> int num (int **a, const int n, const int m); void sum (int **b, const int k, const int r); int main () { int...

создать и отсортировать двумерный массив по строкам используя алгоритм сортировки вставкой - C++
создать и отсортировать двумерный массив по строкам используя алгоритм сортировки вставкой

C++ нарисовать фигуру - C++
По идеи должно рисовать конус на основе зацыкливания эллипса. Но вот в реализации не совсем конус выходит. Вся загвоздка тут RECT...

Нарисовать фигуру - C++
Товарищи, кто знает как реализовать такую фигуру с помощью языков программирования, помогите пожалуйста. Или кто знает куда можно...

Нарисовать фигуру - C++
Нарисовать фигуру нижнюю справа которая на рисунке там все описано:

13
shilko2013
244 / 221 / 118
Регистрация: 02.04.2016
Сообщений: 850
Завершенные тесты: 1
20.07.2016, 11:34 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;
int main() {
 
    char a[4][4] = { {'*',' ',' ',' '},
                     {'*','*',' ',' '},
                     {'*','*','*',' '},
                     {'*','*','*','*'} };
    for (int i = 0; i < 4; ++i) {
        for (int j = 0; j < 4; ++j)
            cout << a[i][j];
        cout << endl;
    }
    return 0;
}
И убираешь одну звездочку)
0
skileton1994
0 / 0 / 1
Регистрация: 05.07.2016
Сообщений: 84
20.07.2016, 11:48  [ТС] #3
а если такая ситуация, что размер массива может меняться. сначала мы задали 5х5, потом 6х6.
как в таком случаем поступить?
0
shilko2013
244 / 221 / 118
Регистрация: 02.04.2016
Сообщений: 850
Завершенные тесты: 1
20.07.2016, 12:01 #4
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
#include<iostream>
using namespace std;
int main() {
 
    const int n = 10;
    char a[n][n];
 
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < n; ++j)
            a[i][j] = ' ';
 
    for (int i = 0; i < n; ++i)
        for (int j = 0; j <= i; ++j)
            a[i][j] = '*';
 
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j)
            cout << a[i][j];
        cout << endl;
    }
    cout << endl;
 
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < n; ++j)
            a[i][j] = ' ';
 
    for (int i = 0; i < n; ++i)
        for (int j = 0; j <= i; ++j) {
            if ((i == n - 2) && (j == n - 2))
                a[i][j] = ' ';
            else
                a[i][j] = '*';
        }
 
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j)
            cout << a[i][j];
        cout << endl;
    }
    cout << endl;
 
    return 0;
}
0
skileton1994
0 / 0 / 1
Регистрация: 05.07.2016
Сообщений: 84
20.07.2016, 13:35  [ТС] #5
Написать функции и протестировать их в основной программе. Функции печатают фигуры и используют параметры по умолчанию. Параметры по умолчанию определяют, каким символом печатается фигура и является ли она заполненной или печатается только рамка фигуры.
*
* *
* * *
* * * *

*
* *
* *
* * * *

* * * *
* *
* *
*

Написал такой код. Но есть ошибка по определению функций. Кто знает как исправить?
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
 
using namespace std;
 
const int n = 4;
char z, r;
int a, b, c;
void res(int, char);
void res(int, char);
void res(int, char);
 
void main()
{
    setlocale(LC_ALL, "Russian");
 
    res(a,z);
    res(b,r);
    res(c,r)
 
}
 
void res(int a, char z)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i == j)
                cout << " * ";          
            else if (i>j)
                cout << " * ";
            else 
                cout << "  ";
        }
        cout << endl;       
    }
}
 
void res(int b, char r)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i == j)
                cout << " * ";
            else if (i>0 && j == 0)
                cout << " * ";
            else if (i == n - 1 && j > 0 && j<n - 1)
                cout << " * ";
            else
                cout << "   ";
        }
        cout << endl;
    }
}
 
void res(int c, char r)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i +j== n-1)
                cout << " * ";
            else if (j==0 && i<n-1 )
                cout << " * ";
            else if (i==0 && j>0&&j<n-1)
                cout << " * ";
            else
                cout << "   ";
        }
        cout << endl;
    }
}
0
shilko2013
244 / 221 / 118
Регистрация: 02.04.2016
Сообщений: 850
Завершенные тесты: 1
20.07.2016, 13:40 #6
Назовите функции разными именами

Добавлено через 46 секунд
И я тебе скидывал рациональное решение, ты нерациональное пишешь...
0
zss
Модератор
Эксперт С++
6486 / 6049 / 1987
Регистрация: 18.12.2011
Сообщений: 15,691
Завершенные тесты: 1
20.07.2016, 13:58 #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
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
using namespace std;
 
const int n = 4;
void res(int);
void res(char);
void res(double);
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    res(1);
    res('a');
    res(1.1);
    system("pause");
    return 0;
 
}
 
void res(int)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i == j)
                cout << " * ";          
            else if (i>j)
                cout << " * ";
            else 
                cout << "  ";
        }
        cout << endl;       
    }
}
 
void res(char)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i == j)
                cout << " * ";
            else if (i>0 && j == 0)
                cout << " * ";
            else if (i == n - 1 && j > 0 && j<n - 1)
                cout << " * ";
            else
                cout << "   ";
        }
        cout << endl;
    }
}
 
void res(double)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i +j== n-1)
                cout << " * ";
            else if (j==0 && i<n-1 )
                cout << " * ";
            else if (i==0 && j>0&&j<n-1)
                cout << " * ";
            else
                cout << "   ";
        }
        cout << endl;
    }
}
0
shilko2013
244 / 221 / 118
Регистрация: 02.04.2016
Сообщений: 850
Завершенные тесты: 1
20.07.2016, 14:38 #8
zss, zss разве это рациональное решение?
Для заполнения элементов ниже главной диагонали или на ней можно использовать
C++
1
2
3
for (int i=0;i<n;++i)
   for (int j-0;j<=i;++j)
        a[i][j] = '*';
А не перебирать весь массив с условиями.
0
zss
Модератор
Эксперт С++
6486 / 6049 / 1987
Регистрация: 18.12.2011
Сообщений: 15,691
Завершенные тесты: 1
20.07.2016, 15:14 #9
Я не вдавался в алгоритм решения.
Как я понял, ТС поставили задачу использовать перегруженные функции.
0
skileton1994
0 / 0 / 1
Регистрация: 05.07.2016
Сообщений: 84
20.07.2016, 20:14  [ТС] #10
На последней функции оно просто закрывает программу при выполнении. и всё из за знака >=
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
 
using namespace std;
 
const int n = 5;
char mas[n][n];
 
void res1(int a = 1, char ch = 'z');
void res2(int b = 11, char ch = 'r');
void res3(int c = 2, char ch = 'z');
void res4(int d = 12, char ch = 'z');
void res5(int e = 3, char ch = 'r');
 
void main()
{
    setlocale(LC_ALL, "Russian");
    
    res1();
    res2();
    res3();
    res4();
    res5();
    
}
 
void res1(int a, char ch)
{
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < n; ++j)
            mas[i][j] = ' ';
 
    for (int i = 0; i < n; ++i)
        for (int j = 0; j <= i; ++j)
            mas[i][j] = '*';
 
    for (int i = 0; i < n; ++i) 
    {
        for (int j = 0; j < n; ++j)
            cout << mas[i][j];
        cout << endl;
    }
    cout << endl;
}
 
void res2(int b, char ch)
{
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < n; ++j)
            mas[i][j] = ' ';
 
    for (int i = 0; i < n; ++i)
        for (int j = 0; j <= i; ++j)
        {
        if ((i != j) && (j != 0) && (i != n - 1))
            mas[i][j] = ' ';
        else
            mas[i][j] = '*';
    }
 
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j)
            cout << mas[i][j];
        cout << endl;
    }
    cout << endl;
}
 
void res3(int c, char ch)
{
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
            mas[i][j] = ' ';
    }
 
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j +i <= n-1; ++j)
            mas[i][j] = '*';
    }
    
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
            cout << mas[i][j];
        cout << endl;
    }
    cout << endl;
}
 
 
void res4(int d, char ch)
{
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
            mas[i][j] = ' ';
    }
 
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j + i <= n - 1; ++j)
        {
            if ((i != 0) && (j != 0) && (j + i != n - 1))
                mas[i][j] = ' ';
            else
                mas[i][j] = '*';
        }
    }
 
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
            cout << mas[i][j];
        cout << endl;
    }
    cout << endl;
}
 
void res5(int e, char ch)
{
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
            mas[i][j] = ' ';
    }
 
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j + i >= n - 1; ++j)
            mas[i][j] = '*';
    }
 
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
            cout << mas[i][j];
        cout << endl;
    }
    cout << endl;
}
0
zss
Модератор
Эксперт С++
6486 / 6049 / 1987
Регистрация: 18.12.2011
Сообщений: 15,691
Завершенные тесты: 1
20.07.2016, 21:45 #11
Цитата Сообщение от skileton1994 Посмотреть сообщение
просто закрывает программу
А кто за Вас будет писать:
Цитата Сообщение от zss Посмотреть сообщение
system("pause");
return 0;
p.s. Какой все же Вы подразумеваете смысл под параметрами функций?
Они в их коде нигде не использованы.
Можно, например, передать первым параметром - символ фона, вторым параметром - символ фигуры.
0
skileton1994
0 / 0 / 1
Регистрация: 05.07.2016
Сообщений: 84
20.07.2016, 22:00  [ТС] #12
А зачем system("pause"), если до этого все функции выполнялись.

Написать функции и протестировать их в основной программе. Функции печатают фигуры и используют параметры по умолчанию. Параметры по умолчанию определяют, каким символом печатается фигура и является ли она заполненной или печатается только рамка фигуры.
В прикреплённом файле вид готовой программы. так должно быть.
Но наверно я не могу понять задачу
0
Миниатюры
Нарисовать фигуру используя двумерный массив  
zss
Модератор
Эксперт С++
6486 / 6049 / 1987
Регистрация: 18.12.2011
Сообщений: 15,691
Завершенные тесты: 1
20.07.2016, 22:34 #13
C++
1
2
3
4
5
6
7
8
9
10
void res1(char a, char ch)
{
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < n; ++j)
            mas[i][j] = a;
 
    for (int i = 0; i < n; ++i)
        for (int j = 0; j <= i; ++j)
            mas[i][j] = ch;
....
C++
1
res1(' ','*');
0
skileton1994
0 / 0 / 1
Регистрация: 05.07.2016
Сообщений: 84
20.07.2016, 23:06  [ТС] #14
С этим всё ясно. а вот почему выскакивает ошибка на выполнении последней функции всё ещё не ясно.

Добавлено через 8 минут
Да и задержка тут вовсе не нужна, т.к. и без последней функции всё работает хорошо
0
20.07.2016, 23:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2016, 23:06
Привет! Вот еще темы с ответами:

Нарисовать фигуру - C++
Нужно сделать так чтобы при запуске программы появлялась вот такая фигура: ********* *________* *________* *________* *________* ...

Нарисовать фигуру (язык С) - C++
прямоугольник и сделать какую-то заливку цветную. заранее спс___)))

Надо нарисовать фигуру - C++
Надо нарисовать фигуру: ___* __*_* _*___* *_____* Использовать цикл

Нарисовать фигуру (язык C) - C++
язык C , заранее спасибо:)


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

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

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