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

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

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

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

11.09.2011, 21:16. Просмотров 2526. Ответов 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;
}
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2011, 21:16     Рисование ромба.
Посмотрите здесь:

C++ лежит ли точка на вершине ромба?
C++ Вывод на экран ромба из звёзд!
Рисование ромба C++
Множественное наследование в форме ромба C++
Даны две диагонали ромба. Вычислить площадь и периметр этого ромба C++
Даны две диагонали ромба. Вычислить площадь и периметр этого ромба C++
C++ найти площадь ромба
C++ Рисование ромба за заданной высотой
Графика, перемещение ромба C++
C++ Наследование ромба от квадрата
C++ Рисование ромба (рекурсия)
Вывод ромба циклами for C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sokolov
 Аватар для 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;
}
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
12.09.2011, 01:00  [ТС]     Рисование ромба. #3
Как же коротко получилось. Спасибо, буду разбираться
-=ЮрА=-
Заблокирован
Автор FAQ
12.09.2011, 09:22     Рисование ромба. #4
Цитата Сообщение от Toshkarik Посмотреть сообщение
Напишите программу, которая напечатает показанный ниже ромб.
- вот ещё как вариант Ромб. Что не так написал?
МаксимМВ
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;
}
Yandex
Объявления
12.09.2011, 10:17     Рисование ромба.
Ответ Создать тему
Опции темы

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