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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
#1

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

11.09.2011, 21:16. Просмотров 2903. Ответов 4
Метки нет (Все метки)

Приветствую. У Дейтелов есть задания ( глава 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2011, 21:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рисование ромба. (C++):

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

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

Рисование ромба за заданной высотой - C++
Вот пример: Введите высоту: 5 ******* *** *** ** ** * * ** ** *** *** ******* все ясно кроме 1: как просчитать...

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

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

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

4
Sokolov
42 / 42 / 3
Регистрация: 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
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
12.09.2011, 01:00  [ТС] #3
Как же коротко получилось. Спасибо, буду разбираться
0
-=ЮрА=-
Заблокирован
Автор FAQ
12.09.2011, 09:22 #4
Цитата Сообщение от Toshkarik Посмотреть сообщение
Напишите программу, которая напечатает показанный ниже ромб.
- вот ещё как вариант Ромб. Что не так написал?
0
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 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
12.09.2011, 10:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2011, 10:17
Привет! Вот еще темы с ответами:

Графика, перемещение ромба - C++
#include &lt;iostream&gt; #include &quot;graphics.h&quot; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; using namespace std; int xmax, ymax; ...

найти площадь ромба - C++
Помогите. задание, ввести одну сторону ромба и диагональ

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

Множественное наследование в форме ромба - C++
Всем привет. Объясните пожалуйста почему так происходит: есть некое древо иерархии классов в виде ромба: #include &lt;iostream&gt; ...


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

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

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