Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.72/32: Рейтинг темы: голосов - 32, средняя оценка - 4.72
1174 / 887 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
1

Рисование ромба.

11.09.2011, 21:16. Показов 6015. Ответов 5
Метки нет (Все метки)

Приветствую. У Дейтелов есть задания ( глава 5, задание 5.23 - 24 ): 5.23 Напишите программу, которая напечатает показанный ниже ромб. Вы можете использовать операторы вывода, которые печатают или одну звездочку (*), или один пробел. Максимально используйте повторение (с вложенными операторами for) и минимизируйте число операторов вывода.
5.24 Модифицируйте программу, которую вы написали в упражнении 5.23, чтобы она читала нечетное число в пределах от 1 до 19, определяющее число строк в ромбе. Ваша программа должна выводить на экран ромб соответствующего размера.

Написал, все работает, но не нравятся мне мои смещения Может можно как то покрасивее? Сразу оговорюсь что ни массивы ни функции до главы 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
#include <iostream>
 
int main()
{
    setlocale( LC_ALL, "RUS" );
 
    int size;
 
    std::cout << "Enter the size of rhomb or 0 for exit ( size must be <= 19, >= 1 and be an odd number ): ";
    std::cin >> size;
 
    if ( size == 0 )
        return 0;
 
    while ( size < 1 || size > 19 || !( size % 2 ))
    {
        std::cout << "Size must be <= 19, >= 1 and be an odd number, enter new size or 0 for exit: ";
        std::cin >> size;
 
        if ( size == 0 )
            return 0;
    }
 
    for ( int i = 1; i <= size / 2 + 1; i++ )
    {
        for ( int j = size; j >= 1; j-- )
        {
            if ( j <= i  )
                std::cout << '*';
            else
                std::cout << ' ';
        }
 
        for ( int j = 1; j <= size; j++ )
        {
            if ( j < i )
                std::cout << '*';
                std::cout << ' ';
        }
 
        std::cout << std::endl;
    }
 
    for ( int i =  size / 2 + 1; i <= size; i++ )
    {
        for ( int j = 1; j <= size; j++ )
        {
            if ( j > i )
                std::cout << '*';
            else
                std::cout << ' ';
        }
 
        for ( int j = size; j >= 1; j-- )
        {
            if ( j > i + 1 )
                std::cout << '*';
            else
                std::cout << ' ';
        }
 
        std::cout << std::endl;
    }
 
    std::cout << '\a' << std::endl;
    system( "pause" );
    return 0;
}
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.09.2011, 21:16
Ответы с готовыми решениями:

Рисование ромба
Нужно нарисовать ромб используя символ * и цикл for. Ромб должен быть закрашен символами *. Как...

Рисование ромба (рекурсия)
Подскажите пжл как это можно написать рекурсией. #include &lt;iostream&gt; using namespace std; ...

Рисование ромба за заданной высотой
Вот пример: Введите высоту: 5 ******* *** *** ** ** * * ** ** *** *** ******* все...

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

5
42 / 42 / 13
Регистрация: 04.01.2011
Сообщений: 125
11.09.2011, 23:43 2
Вот, что получилось у меня:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
using namespace std;
int main()
{setlocale(LC_ALL,"Russian");
int i,j,n=0,N;
cout<<"Введите N:";
cin>>N;
for(j=0;n<N;n++,n<N/2+1?j++:j--)
{   for(i=0;i<N/2+j+1;i++)
        if(i<N/2-j)
            cout<<" ";
        else 
            cout<<"*";
    cout<<"\n";
}
return 0;
}
1
1174 / 887 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
12.09.2011, 01:00  [ТС] 3
Как же коротко получилось. Спасибо, буду разбираться
0
Заблокирован
Автор FAQ
12.09.2011, 09:22 4
Цитата Сообщение от Toshkarik Посмотреть сообщение
Напишите программу, которая напечатает показанный ниже ромб.
- вот ещё как вариант Ромб. Что не так написал?
0
C/C++
93 / 93 / 18
Регистрация: 01.07.2010
Сообщений: 281
12.09.2011, 10:17 5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[])
{
    int N, i, j;
    printf("Enter N: ");
    scanf("%d", &N);
    printf("N=%d\n", N);
    for (i=0; i<N+1; i++)
    {
        for (j=0; j<N+1; j++)
            if (j>=N/2-(i<N/2?i:N/2-(i-N/2)) && j<=N/2+(i<N/2?i:N/2-(i-N/2)))
                putchar('*');
            else
                putchar(' ');
        putchar('\n');
    }
    return 0;
}
0
0 / 0 / 0
Регистрация: 31.10.2019
Сообщений: 3
17.11.2019, 15:26 6
можеш помочь мне сделать треугольник пожалуйста
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2019, 15:26

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

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

Графика, перемещение ромба
#include &lt;iostream&gt; #include &quot;graphics.h&quot; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; using...

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


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

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

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