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

Изобразить ромб - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
14.01.2012, 14:56     Изобразить ромб #1
Задано целое число. Используя средства стандартного ввода-вывода, изобразить на экране ромб, меньшая диагональ которого равна заданному числу и параллельна оси Ох, а большая в 2 раза длиннее меньшей.
со сторонами всё понятно.а вот как изобразить не знаю...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
14.01.2012, 18:46     Изобразить ромб #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
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
#include <iostream>
#include <string>
#include <iterator>
#include <sstream>
#include <windows.h>
 
#define scp(A, B) setCursorPosition(A, B);
#define wrt(i)      for(int j_i_j = 0; j_i_j < i; j_i_j++) \
                        std::cout << pm;
 
void cls();
void setCursorPosition(int, int);
 
void printAxis(int n)
{
    {
        cls();
    }
    unsigned char symbols[] = {0xB3, 0x5E, 0x3E, 0xC4, 0xC0};
    std::cout << "Oy\n" << *(symbols + 01) << '\n';
    for(short i = 0; i < static_cast<short>(2*n-1); i++)
        std::cout << *(symbols + 00) << "\n";
    std::cout << *(symbols + 04);
    for(short i = 0; i < static_cast<short>(n+1); i++)
        std::cout << *(symbols + 03);
    std::cout << symbols[2] << "Ox" << std::endl;
}
 
void printDiamond(int n)
{
    unsigned char pm /*paint me*/ = 04;
    for(int i = n; i > 0; i -= 2)
    {
        scp(i, (n-i)/2 + 2)
        wrt(i)
        scp(i+1, (n-i)/2 + 2)
        wrt(i)
        scp(2*n-i, (n-i)/2 + 2)
        wrt(i)
        scp(2*n-i+1, (n-i)/2 + 2)
        wrt(i)
    }
    //comment block below if you don't wanna paint full vertical size
    if(!(!(!(n%2))))
    {
        scp(1, (n-1)/2 + 2)
        wrt(1+1)
        scp(2*n, (n-1)/2 + 2)
        wrt(1+1)
    }
}
 
int main()
{
    std::cout << "Enter size of smaller diamond's diagonal:" << std::endl;
    std::istream_iterator<char> start(std::cin), end;
    std::string input(start, end);
    std::istringstream ss(input);
    int n;
    ss >> n;
    if(n < 4>>1)
    {
        std::cerr << "Invalid number" << std::endl;
        return 0;
    }
    printAxis   (-(-n));
    printDiamond(~(~n));
    scp(2*n+3, 0)
    return 0;
}
 
void cls()
??<
    [url]http://try.google.if.you.dont.understand.this[/url]
    system("cls");
??>;
 
void setCursorPosition(int oyPos, int oxPos)
{
    HANDLE hCon;
    COORD cPos;
    hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    cPos.Y = oyPos;
    cPos.X = oxPos;
    SetConsoleCursorPosition(hCon, cPos);
}
вывод ромба в псевдографике

Добавлено через 1 минуту
в 74 строчке нужно убрать тег url
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
14.01.2012, 18:47     Изобразить ромб #3
результат работы Изобразить ромб
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
15.01.2012, 12:03  [ТС]     Изобразить ромб #4
что на что поменять чтоб не С++, а С был?
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
17.01.2012, 10:43  [ТС]     Изобразить ромб #5
или к этому коду коментов по больше
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
21.01.2012, 10:53  [ТС]     Изобразить ромб #6
переведите пожалуйста

Добавлено через 18 часов 43 минуты
Среда Си (*.C)

Добавлено через 1 час 58 минут
Цитата Сообщение от adelok Посмотреть сообщение
Используя средства стандартного ввода-вывода
там только псевдографика? или можно графики или ещё что нить?

Добавлено через 23 часа 27 минут
stdio.h тока с символами работает?
Yandex
Объявления
21.01.2012, 10:53     Изобразить ромб
Ответ Создать тему
Опции темы

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