Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/20: Рейтинг темы: голосов - 20, средняя оценка - 4.60
slavon1500
0 / 0 / 0
Регистрация: 06.09.2014
Сообщений: 25
1

Как рисовать символами различные фигуры

17.09.2014, 15:27. Просмотров 4009. Ответов 8
Метки нет (Все метки)

Здравствуйте такой вопрос: в общем в учебнике задания рисовать звёздочками (*) букву О, стрелочку, прямоугольник, ромбик и потом там ещё символами различные фигуры. До этого не чего не говорилось в учебнике как это делать, пробовал через printf, но там получается только две линии и всё.. как можно переносить в конец строки и от туда допустим вести в низ звёздочки? например, чтоб сделать прямоугольник или ещё какую либо форму ромбик например? помогите разобраться пожалуйста?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2014, 15:27
Ответы с готовыми решениями:

Как можно "рисовать" различные линии и фигуры, в том числе и трёхмерные в C++?
Я хотел бы узнать, есть ли какая-нибудь литература по рисованию в C++ трёхмерных объектов (да и...

Как рисовать фигуры?
Не так давно начал работать на си. Помогите пожалуйста. с помощью графики нарисовать такие картинки:

Как рисовать фигуры
Нужно на C# нарисовать заданную фигуру... а я с рисованием вообще не дружу. Помогите пожалуйста.

Как рисовать несложные фигуры
например вот такую балку !! и спасибо за ранее!

Как рисовать на форме простые фигуры?
Есть похожие темы, но ни в одной нет ясного ответа и, хотя бы одного примитивного примера. Как с...

8
quwy
Native x86
3346 / 2193 / 649
Регистрация: 13.02.2013
Сообщений: 7,245
17.09.2014, 15:33 2
Простейший способ:
C
1
2
3
4
5
6
printf("     * *   \n");
printf("   *     * \n");
printf("  *       *\n");
printf("  *       *\n");
printf("   *     * \n");
printf("     * *   \n");
Но красивее будет ставить курсор в нужную позицию при помощи gotoxy() (находится в conio.h) и выводить в эту позицию символ. И так по одному символу, как по одному пикселу рисовать все что угодно.
1
slavon1500
0 / 0 / 0
Регистрация: 06.09.2014
Сообщений: 25
17.09.2014, 15:35  [ТС] 3
quwy, Ясно спасибо
0
Boleon
Guardian of Asgaard
375 / 317 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
Завершенные тесты: 1
17.09.2014, 16:06 4
Главное разработать скилл

C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main() {
    printf("        #            ##                \n");
    printf("### # # ### ### ###  #  ### ### # # ###\n");
    printf("#   ### # # ##  #   ### # # #   # # ###\n");
    printf("###   # ### ### #    #  ### #   ### # #\n");
    printf("    ###             ##\n");
 
    return 0;
}
2
Booneeck
0 / 0 / 0
Регистрация: 12.12.2019
Сообщений: 29
12.12.2019, 12:17 5
РЕбят а как то же самое сделать но притом эти фигуры рядом располодить в одной строке. Допустим надо поместить 5 фигур. При этом нельзя чтоб все три находились только в этих printf. Например, я написал программу и там алфавит и цифры, нарисовал все через принтф и когда в поле ввода я ввожу любое слово у меня выдает символами но буквы строятся по вертикали а мне надо чтоб они выводились в горизонтальном положении. Заранее спасибо!
0
Lady C
21 / 17 / 4
Регистрация: 31.05.2016
Сообщений: 65
12.12.2019, 13:23 6
Завести матрицу из нулей и единичек для каждого символа.
1
Booneeck
0 / 0 / 0
Регистрация: 12.12.2019
Сообщений: 29
13.12.2019, 08:37 7
Спасибо, за помощь! Но я новичек и не совсем понял. Не могли бы вы поподробнее описать,пожалуйста

Добавлено через 1 час 9 минут
Boleon, а можно ли все это сделать без \n ?
0
stake-k26
940 / 557 / 403
Регистрация: 25.04.2016
Сообщений: 1,601
15.12.2019, 22:27 8
Booneeck, например так:
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
#include <stdio.h>
 
#define nSCRw 80    /* ширина, количество символов в 1 строке экрана */
#define nSCRh 22    /* высота, количесво строк экрана */
char screen[nSCRh][nSCRw];  // внутренний экран
 
const char * a[5] = {   // буквы алфавита
    " ******",
    "*     *",
    "*******",
    "*     *",
    "*     *"
};
const char * b[5] = {
    "****** ",
    "*     *",
    "*******",
    "*     *",
    "*******"
};
const char * c[5] = {
    "*******",
    "*      ",
    "*      ",
    "*      ",
    "*******"
};
const char * place[5] = {   // пустой символ
    "       ",
    "       ",
    "       ",
    "       ",
    "       "
};
 
void clear (void);
void refresh (void);
void putChar (char ch, int y, int x);
void printString (char *str, int y, int x);
 
int main (void) {
    char str[] = "abccba";
 
    clear();                    // очищаем внутренний экран
    printString(str, 4, 10);        // выводим строку на внутренний экран
    printString(str, 13, 20);   // и еще одну
    refresh();              // выводим внутренний экран на экран
 
    return 0;
}
// ------------------------------------------------------------
void clear (void) {
    int x, y;
    for (y=0; y<nSCRh; y++)
        for (x=0; x<nSCRw; x++)
            screen[y][x] = 0;
}
// ------------------------------------------------------------
void refresh (void) {
    int x, y;
    for (y=0; y<nSCRh; y++) {
        for (x=0; x<nSCRw; x++)
            if (screen[y][x] > 0) printf("*");
            else printf(" ");
        printf("\n");
    }
}
// ------------------------------------------------------------
void putChar (char ch, int y, int x) {
    if (x < 0 || x+8 >= nSCRw) return;
    if (y < 0 || y+5 >= nSCRh) return;
    /* определяем какой символ будем выводить на экран */
    const char ** sym;
    if (ch == 'a') sym = a;
    else if (ch == 'b') sym = b;
    else if (ch == 'c') sym = c;
    else sym = place;
    /* помещаем символ на внутренний экран */
    int i, k;
    for (i=0; i<5; i++)             // высота буквы
        for (k=0; k<8; k++)         // ширина
            screen[y+i][x+k] = (sym[i][k] == '*')? 1 : 0;
}           // ^^ if (sym[i][k] == '*') screen[y+i][x+k] = 1; else .. = 0;
// ------------------------------------------------------------
void printString (char *str, int y, int x) {
    int i;
    for (i=0; str[i]; i++)
        putChar(str[i], y, x+i*10); // 10 - расстояние от начала буквы
}                               // до начала следующей буквы
// ------------------------------------------------------------
2
analogov net
769 / 286 / 149
Регистрация: 17.11.2018
Сообщений: 740
16.12.2019, 01:04 9
Цитата Сообщение от stake-k26 Посмотреть сообщение
например так:
stake-k26, не удержался. Поюзал немножко твой код...
Кликните здесь для просмотра всего текста
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
#include <stdio.h>
#include <Windows.h>
 
#define nSCRw 80            /* ширина, количество символов в 1 строке экрана */
#define nSCRh 22            /* высота, количество строк экрана */
char screen[nSCRh][nSCRw];  // внутренний экран
 
const char *a[5] = {        // буквы алфавита
    " ******",
    "*     *",
    "*******",
    "*     *",
    "*     *"
};
const char *b[5] = {
    "****** ",
    "*     *",
    "*******",
    "*     *",
    "*******"
};
const char *c[5] = {
    "*******",
    "*      ",
    "*      ",
    "*      ",
    "*******"
};
const char *place[5] = {   // пустой символ
    "       ",
    "       ",
    "       ",
    "       ",
    "       "
};
void clear( void );
void refresh( void );
void putChar( char ch, int y, int x );
void printString( char *str, int y, int x );
void gotoxy( int x, int y );
// ------------------------------------------------------------
int main()
{
    int i;
    char str[] = "abcabc";
 
    for( i = 70; i > 3; i-- )
    {
        gotoxy( i, 1 );
        clear();                         // очищаем внутренний экран
        printString( str, 1, i );        // выводим строку на внутренний экран
        refresh();                       // выводим внутренний экран на экран
        Sleep( 10 );
    }
    gotoxy( 0, 8 );
}
// ------------------------------------------------------------
void clear( void )
{
    int x, y;
    for( y = 0; y < nSCRh; y++ )
        for( x = 0; x < nSCRw; x++ )
            screen[y][x] = 0;
}
// ------------------------------------------------------------
void refresh( void )
{
    int x, y;
    for( y = 0; y < nSCRh; y++ )
    {
        for( x = 0; x < nSCRw; x++ )
            if( screen[y][x] > 0 )
                printf( "*" );
            else
                printf( " " );
        printf( "\n" );
    }
}
// ------------------------------------------------------------
void putChar( char ch, int y, int x )
{
    if( x < 0 || x + 8 >= nSCRw ) return;
    if( y < 0 || y + 5 >= nSCRh ) return;
    /* определяем какой символ будем выводить на экран*/
    const char **sym;
    if( ch == 'a' ) sym = a;
    else if( ch == 'b' ) sym = b;
    else if( ch == 'c' ) sym = c;
    else sym = place;
    /* помещаем символ на внутренний экран*/
    int i, k;
    for( i = 0; i < 5; i++ )             // высота буквы
        for( k = 0; k < 8; k++ )         // ширина
            screen[y + i][x + k] = ( sym[i][k] == '*' ) ? 1 : 0;
}           // ^^ if (sym[i][k] == '*') screen[y+i][x+k] = 1; else .. = 0;
// ------------------------------------------------------------
void printString( char *str, int y, int x )
{
    int i;
    for( i = 0; str[i]; i++ )
        putChar( str[i], y, x + i * 10 ); // 10 - расстояние от начала буквы
}                               // до начала следующей буквы
// ------------------------------------------------------------
void gotoxy( int x, int y )
{
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
}
1
16.12.2019, 01:04
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2019, 01:04

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

Как рисовать трехмерные фигуры на плоскости?
Здарвствуйте, столкнулся с такой проблемой: не могу корретктно нарисовать каую либо трехмерную...

Как рисовать элементарные геометрические фигуры?
Всем привет!!! Вопрос конечно гулповатый, но все же. Нужно про помощи WinApi прорисовывать...

Как с помощью программы на C++ изобразить различные графики и фигуры?
Собсно,как с помощью программы на с++ изобразить различные графики и фигуры?


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

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

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