8 / 8 / 4
Регистрация: 05.10.2010
Сообщений: 137
1

Вывод на экран ромба из звёзд!

05.10.2010, 10:51. Показов 38262. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ! Нам задали написать программу, которая выводит ромб из звёздочек, но что-то у меня не совсем получилось! Помогите в четверг сдавать!
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
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;  
void drawOneLine(int nspaces, int nstars){
        int i;          
        for(i=0; i < nspaces; i++)
                putchar(' ');
        for(i=0; i < nstars; i++)
                putchar('*');
        putchar('\n');
}
void drawOneLine2(int nspaces2, int nstars2, int space3=0){
        int i;
        for (i=0; i<nspaces2; i++)
            putchar(' ');
        for (i=0; i<nstars2;i++)
            putchar('*');
        putchar('\n');
        space3++;
}
void main(){
        int q;
        cout<<"Enter osnova:";
        cin>>q;
        int LINES2= q;
        int LINES = q; 
        int nline;   
        int nline2;
        for(nline=1; nline <= LINES; nline++)
                drawOneLine(LINES - nline,   
                            nline*2 - 1
                            );
        for(nline2=q; nline2 <= LINES2; nline2--)
                drawOneLine2(LINES2 - nline2,   
                            nline2*2 - 2
                           );
}
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2010, 10:51
Ответы с готовыми решениями:

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

Вывод звезд авторитета
Вобщем я делаю на сайт на движке и пытаюсь создать модуль авторитетов, чтобы в зависимости от...

функция по выводу звезд на экран нн работает, в чем дело?
#include &lt;iostream&gt; #include &lt;conio.h&gt; void function (int k)// { for(int i=0;i&lt;k;i++)

Задача по выводу на экран ромба
Я не могу поставить правильно условие, начинает бесконечно закрашивать экран. Что надо сделать?...

13
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
05.10.2010, 10:56 2
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
#include <stdio.h>
 
#define XSIZ 5
#define YSIZ 5
 
int main()
{
    int i = 0;
    int j = 0;
    
    char shape[XSIZ][YSIZ] =  { "  *  ",
                                " * * ",
                                "*   *",
                                " * * ",
                                "  *  " 
    };
    
    for(i = 0; i < XSIZ; ++i) {
        for(j = 0; j < YSIZ; ++j)
            printf("%c", shape[i][j]);
        printf("\n");
    }
    
    return 0;
}
1
8 / 8 / 4
Регистрация: 05.10.2010
Сообщений: 137
05.10.2010, 11:26  [ТС] 3
Мужик! Спасибо! Но нужно изначально вводить размер стороны ромба и на твой код ругается "переполнение массива"!
0
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
05.10.2010, 13:51 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
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
#include <iostream.h>
 
void romb1(int n)
{
    int m,i,j;
    m=n/2;
    for(i=0;i<m;i++)
    {
    for (j=0; j<n; j++)
    {
        if (j==m+i||j==m-i)
            cout<<'*';
        else cout<<' ';
    }
    cout<<endl;
    }
 
    for(i=m;i<n;i++)
    {
    for (j=0; j<n; j++)
    {
        if (j==m+n-i-1||j==i-m)
            cout<<'*';
        else cout<<' ';
    }
    cout<<endl;
    }
}
void romb2(int n)
{
    int m,i,j;
    m=n/2;
    for(i=0;i<m;i++)
    {
    for (j=0; j<n; j++)
    {
        if (j<=m+i&&j>=m-i)
            cout<<'*';
        else cout<<' ';
    }
    cout<<endl;
    }
 
    for(i=m;i<n;i++)
    {
    for (j=0; j<n; j++)
    {
        if (j<=m+n-i-1&&j>=i-m)
            cout<<'*';
        else cout<<' ';
    }
    cout<<endl;
    }
}
int main()
{
int n,r;
cout<<"Vvedite razmer: ";   // r - сторона ромба
cin>>r;
n=r*2-1;            // n - высота=ширина
 
romb1(n);
cout<<endl;
romb2(n);
 
/////
cout<<endl;
system("pause");
return 0;
}
2
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
05.10.2010, 15:18 5
Цитата Сообщение от egorikem Посмотреть сообщение
Но нужно изначально вводить размер стороны ромба
Вообще это я к тому, что любую фигуру адекватнее всего хранить в массиве. Изначально вводить размеры? Динамическая память в помощь. Заполнить массив для квадрата - элементарно. Перевернуть его на 90 градусов тоже.
0
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
05.10.2010, 15:46 6
я тут половину ромба нарисовал, вторую половину сам дорисуешь

Не знаю почему, но в примере fasked массив должен быть 6х6, тогда не будет переполнения

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
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    int N; cin >> N;
    char spaces[] = "                    ";
    char  shape [20];
    int margine = N-1; int asterN = 1;
    // ****************рисуем первую звездочку****************
     strncpy(shape,spaces,margine); shape[N-1] = '\0';
     strcat(shape,"*");  shape[N] = '\0';
     strncat(shape,spaces,margine); shape[N*2-1] = '\0';
     cout << shape << endl ;
//**************************************************************
 
     int middle = 1;
     while(margine)
     {
     strncpy(shape,spaces,margine-1); shape[margine-1] = '\0';
strcat(shape,"*");  shape[N] = '\0';
strncat(shape,spaces,middle); shape[N+middle] = '\0';
strcat(shape,"*");  shape[N+middle+1] = '\0';
strncat(shape,spaces,margine-1); shape[N*2-1] = '\0';
     cout << shape << endl;
     margine--;
     middle += 2;
     }  
    system("pause");
}
1
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
05.10.2010, 16:12 7
Цитата Сообщение от NikolaWhite Посмотреть сообщение
Не знаю почему, но в примере fasked массив должен быть 6х6, тогда не будет переполнения
Достаточно будет 5x6, чтобы влез нуль-символ для каждой строки.
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
05.10.2010, 16:18 8
Цитата Сообщение от NikolaWhite Посмотреть сообщение
Не знаю почему, но в примере fasked массив должен быть 6х6, тогда не будет переполнения
Видимо, потому, что инициализируется он строками, за каждой из которых символ '\0' неявно присутствует. 5 х 6 размера достаточно, если будет 6 х 6 - последняя строка просто нулями заполнится...
1
8 / 8 / 4
Регистрация: 05.10.2010
Сообщений: 137
05.10.2010, 22:54  [ТС] 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
24
25
26
27
28
#include <stdio.h>
#include <iostream>
using namespace std;  
void drawOneLine(int nspaces, int nstars){
        int i;          
        for(i=0; i < nspaces; i++)
                putchar(' ');
        for(i=0; i < nstars; i++)
                putchar('*');
        putchar('\n');
}
void main(){
        int q;
        cout<<"Enter osnova:";
        cin>>q;
        int LINES = q; 
        int nline;      
        for(nline=1; nline <= LINES; nline++)
                drawOneLine(LINES - nline,   
                            nline*2 - 1      
                           );
        char ch;
        do
        {
 
        cin>>ch;
        }while(ch!='c');
}
Но все равно всем большое спасибо!

Добавлено через 3 минуты
Народ! Простите за дибилизм а как сделать вот так:
*
*:*
*
Тоесть ввёл размер он нарисовал, но внутри все, кроме двух крайних звезд, другие знаки?!

Добавлено через 1 час 49 минут
Народ всем большое спасибо!
0
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 3
14.07.2015, 18:44 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
#include "stdafx.h"
#include<iostream>
 
using namespace std;
 
 
void main()
{
    char r = '*';
    char p = ' ';
    int n=7;
    cout << "enter size" << endl;
    cin >> n;
    cout << endl;
    int z = 1;
    for (int i = 0; i < n / 2 + 1; i++)
    {
        int prob = (n - z) / 2;
        for (int j = 0; j < prob; j++)
            cout << p;
        for (int k = 0; k < z; k++)
            cout << r;
        cout << endl;
 
 
        z = z + 2;
    }
    z = n-2;
    //===
    for (int i = n/2; i > 0; i--)
    {
        int prob = (n - z) / 2;
        for (int j = 0; j < prob; j++)
            cout << p;
        for (int k = 0; k < z; k++)
            cout << r;
        cout << endl;
        z = z - 2;
    }
 
    system("pause");
}
0
0 / 0 / 0
Регистрация: 10.12.2019
Сообщений: 6
10.12.2019, 13:54 11
Здравствуйте помогите пожалуйста с ДЗ не могу понять как вывести все эти ромбы по порядку и в разных фигурах

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



фотку вложил
Миниатюры
Вывод на экран ромба из звёзд!   Вывод на экран ромба из звёзд!  
0
151 / 103 / 49
Регистрация: 21.11.2019
Сообщений: 285
10.12.2019, 17:24 12
goofy89,
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
#include<iostream> 
 
using namespace std;
 
int main() {
    int num, size;
 
    setlocale(0, "");
 
    cout << "Выберите вариант фигуры (1 - 10): ";
    cin >> num;
    cout << "Выберите размер фигуры (5 - 21): ";
    cin >> size;
    cout << endl;
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            switch (num) {
            case 1:
                (i <= j) ? cout << " *" : cout << "  ";
                break;
            case 2:
                (i >= j) ? cout << " *" : cout << "  ";
                break;
            case 3:
                (i <= j&&i <= size - 1 - j) ? cout << " *" : cout << "  ";
                break;
            case 4:
                (i >= j&&i >= size - 1 - j) ? cout << " *" : cout << "  ";
                break;
            case 5:
                ((i <= j&&i <= size - 1 - j) || (i >= j&&i >= size - 1 - j)) ? cout << " *" : cout << "  ";
                break;
            case 6:
                ((i >= j&&i <= size - 1 - j) || (i <= j&&i >= size - 1 - j)) ? cout << " *" : cout << "  ";
                break;
            case 7:
                (i >= j&&i <= size - 1 - j) ? cout << " *" : cout << "  ";
                break;
            case 8:
                (i <= j&&i >= size - 1 - j) ? cout << " *" : cout << "  ";
                break;
            case 9:
                (i <= size - 1 - j) ? cout << " *" : cout << "  ";
                break;
            case 10:
                (i >= size - 1 - j) ? cout << " *" : cout << "  ";
                break;
            default:
                cout << "Неверно выбран вариант \n";
                return 0;
            }
 
        }
        cout << endl;
    }
    cout << endl;
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 16.06.2020
Сообщений: 9
30.06.2020, 21:45 13
Добавлено через 2 минуты
Shut913, Спасибо тебе, добрый человек! У меня чуть истерика не случилась, пока пыталась самостоятельно придумать решение
0
4 / 4 / 0
Регистрация: 13.03.2019
Сообщений: 2
22.07.2020, 16:54 14
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
#include <iostream>
#include <time.h>
#include <Windows.h>
using namespace std;
 
int main()
{
    system("CLS"); //clear screen
    SetConsoleOutputCP(1251); //ukrainian
    //setlocale(LC_ALL ""); //russian language
    /*
    srand(time(0));
    rand() % ***;
    time(0);
    */
    //
    int menu, size;
    char a = '*';
    bool b = true;
    do
    {
        system("CLS");
    do
    {
        cout << "Choose the type of the square (1-10) 0 - exit: ";
        cin >> menu;
    } while (menu < 0 && menu>10);
    if (menu == 0)
        exit(0);
    do
    {
        cout << "Enter the size of the square (>5): ";
        cin >> size;
    } while (size < 5);
 
    
        switch (menu)
        {
        case 1:
            for (int v = 0; v < size; v++)
            {
                for (int h = 0; h < size; h++)
                {
                    if (v < h)
                        cout << a;
                    else
                        cout << ' ';
                }
 
                cout << endl;
            }
            break;
        case 2:
            for (int v = 0; v < size; v++)
            {
                for (int h = 0; h < size; h++)
                {
                    if (v > h)
                        cout << a;
                    else
                        cout << ' ';
                }
 
                cout << endl;
            }
            break;
 
        case 3:
            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    if (j <= size / 2 && i == j || i < size - j && j > i)
                        cout << a;
                    else cout << ' ';
                }
                cout << endl;
            }
                break;
 
 
 
        case 4:
            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    if (j >= size / 2 && i == j || i >= size - j - 1 && j <= i)
                        cout << a;
                    else cout << ' ';
                }
                cout << endl;
            }
            break;
 
 
        case 5:
            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j <= size; j++)
                {
                    if (i <= j && (i <= size - j -1) || j >= size / 2 && i == j || i >= size - j - 1 && j <= i)
                        cout << a;
                    else cout << ' ';
                }
 
                cout << endl;
            }
            break;
 
        case 6:
            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    if (j <= i && (j <= size - i-1) || j >= i && (j >= size - i-1))//(i <= j && (i <= size - j) || i >= j && (i >= size - j))
                        cout << a;
                    else cout << ' ';
                }
 
                cout << endl;
            }
 
            break;
 
        case 7:
            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    if (i <= size / 2 && j == i || j < size - i && i > j)
                        cout << a;
                    else cout << ' ';
                }
                cout << endl;
            }
            break;
 
        case 8:
            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    if (i >= size / 2 && j == i || j >= size - i - 1 && i <= j)
                        cout << a;
                    else cout << ' ';
                }
                cout << endl;
            }
            break;
 
        case 9:
            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    if (j <= size - i - 1)
                        cout << a;
                    else
                        cout << ' ';
                }
 
                cout << endl;
            }
            break;
 
        case 10:
            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    if (j >= size - i)
                        cout << a;
                    else
                        cout << ' ';
                }
 
                cout << endl;
            }
            break;
 
        default: cout << "Something went wrong :/"; break;
        } 
        cout << "Run programme one more time (1-yes, 0 - no): ";
        cin >> b;
    } while (b == true);
    
 
    //
    cout << endl;
    system("pause>nul");
    return 0;
}
1
22.07.2020, 16:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.07.2020, 16:54
Помогаю со студенческими работами здесь

Вывод ромба циклами for
Я опять посыпался на выводе этих звёздочек и пробелов. Как можно решить? Уже не знаю, что делать с...

Даны длина стороны и меньший угол ромба. Найти площадь ромба.
Даны длина стороны и меньший угол ромба. Найти площадь ромба. Экзамен скоро сдавать, а никак не...

Даны две диагонали ромба. Вычислить площадь и периметр этого ромба
нужен код программы,заранее спасибо

Даны две диагонали ромба. Вычислить площадь и периметр этого ромба
Помогите написать программу, с кодом BORLANDC


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru