0 / 0 / 0
Регистрация: 24.10.2019
Сообщений: 30
1

Псевдографика на С++

24.10.2019, 18:34. Показов 2098. Ответов 5

По условию лабораторной работы требуется нарисовать вот это Название: Безымянный.png
Просмотров: 81

Размер: 1.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
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
111
112
113
114
115
116
117
118
119
120
121
122
#include <iostream>
#include <cstdlib> 
using namespace std;
int main()
{
    int i,j; // оголошення змінних циклу
    // Блок 1  
      for (i=1; i<=5; i++) 
        {
            for(j=1; j<=((15-(4*i-1))/2+10); j++) //цикл виводу відступів
            printf(" "); 
            for(j=1; j<=(4*i-1); j++) //цикл виводу символа "Х"
            printf("X"); 
            for(j=1; j<=((15-(4*i-1))/2+2); j++) //цикл виводу відступів
            printf(" "); 
            printf("\r\n"); //перехід на новий рядок; \r - повернення каретки на початок рядка
        } 
   
 
    // Блок 2
    for (i=1; i<=12; i++) 
        {
             for(j=1; j<=13; j++) 
                printf(" "); 
             for(j=1; j<=9; j++) //цикл виводу символа "Х"
                printf("X");
                printf("\r\n"); //перехід на новий рядок
 
        } 
 
    // Блок 3 Для кожного рядка створений свій цикл
    for (i=1;i<=1;i++) //цикл за четвертим рівнем малюнка
        {
            for(j=1; j<=9; j++) //цикл виводу відступів
            printf(" ");
            for(j=1; j<=2; j++) //цикл виводу символа "Х"
            printf("X");
            for(j=1; j<=2; j++) //цикл виводу відступів
            printf(" ");
            for(j=1; j<=9; j++) //цикл виводу символа "Х"
            printf("X");
            for(j=1; j<=2; j++) //цикл виводу відступів
            printf(" ");
            for(j=1; j<=2; j++) //цикл виводу символа "Х"
            printf("X");
            printf("\r\n"); //перехід на новий рядок
        }
    for (i=1;i<=1;i++) //цикл за четвертим рівнем малюнка
        {
            for(j=1; j<=6; j++) //цикл виводу відступів
            printf(" ");
            for(j=1; j<=5; j++) //цикл виводу символа "Х"
            printf("X");
            for(j=1; j<=2; j++) //цикл виводу відступів
            printf(" ");
            for(j=1; j<=9; j++) //цикл виводу символа "Х"
            printf("X");
            for(j=1; j<=2; j++) //цикл виводу відступів
            printf(" ");
            for(j=1; j<=5; j++) //цикл виводу символа "Х"
            printf("X");
            printf("\r\n"); //перехід на новий рядок
        }
    for (i=1;i<=1;i++) //цикл за четвертим рівнем малюнка
        {
            for(j=1; j<=4; j++) //цикл виводу відступів
            printf(" ");
            for(j=1; j<=7; j++) //цикл виводу символа "Х"
            printf("X");
            for(j=1; j<=2; j++) //цикл виводу відступів
            printf(" ");
            for(j=1; j<=9; j++) //цикл виводу символа "Х"
            printf("X");
            for(j=1; j<=2; j++) //цикл виводу відступів
            printf(" ");
            for(j=1; j<=7; j++) //цикл виводу символа "Х"
            printf("X");
            printf("\r\n"); //перехід на новий рядок
        }    
 
   // Блок 4
   for (i=1;i<=4;i++) //цикл за четвертим рівнем малюнка
        {
            for(j=1; j<=4; j++) //цикл виводу відступів
            printf(" "); 
            for(j=1; j<=7; j++) //цикл виводу символа "Х"
            printf("X"); 
            for(j=1; j<=13; j++) //цикл виводу відступів
            printf(" "); 
            for(j=1; j<=7; j++) //цикл виводу символа "Х"
            printf("X"); 
            printf("\r\n"); //перехід на новий рядок
        }
 
     // Блок 5 Для кожного рядка створений свій цикл
    for (i=1;i<=1;i++) //цикл за п'ятим рівнем малюнка
        {
            for(j=1; j<=4; j++) //цикл виводу відступів
            printf(" "); 
            for(j=1; j<=5; j++) //цикл виводу символа "Х"
            printf("X"); 
            for(j=1; j<=17; j++) //цикл виводу відступів
            printf(" "); 
            for(j=1; j<=5; j++) //цикл виводу символа "Х"
            printf("X");
            printf("\r\n"); //перехід на новий рядок
        }
    for (i=1;i<=1;i++) //цикл за п'ятим рівнем малюнка
        {
            for(j=1; j<=4; j++) //цикл виводу відступів
            printf(" "); 
            for(j=1; j<=2; j++) //цикл виводу символа "Х"
            printf("X"); 
            for(j=1; j<=23; j++) //цикл виводу відступів
            printf(" "); 
            for(j=1; j<=2; j++) //цикл виводу символа "Х"
            printf("X");
            printf("\r\n"); //перехід на новий рядок
        }                    
 
     return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2019, 18:34
Ответы с готовыми решениями:

псевдографика в С++
Доброго вечера. пожалуйста помогите разобраться, и написать коды для следующих программ на С++ ...

Псевдографика в СИ
Доброго времени суток! Моя проблема в составлении алгоритма для данной задачи: Разработка...

Псевдографика
Как создавать рисунки из слешей и других значков на Delphi? Допустим, дана задача построить рисунок...

Псевдографика
Мне нужно консольное псевдографическое приложение. Функции вроде printf и std::cout выводят...

5
2153 / 695 / 268
Регистрация: 10.02.2018
Сообщений: 1,631
24.10.2019, 19:51 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include <iostream>
 
#include <windows.h>
#include <gdiplus.h>
#pragma comment(lib, "gdiplus")
 
// вспомогательный класс
class MyImage
{
protected:
    int pixWidth;
    int pixHeight;
    char* pixBits = 0;
 
    int charWidth;
    int charHeight;
 
public:
    MyImage(int width, int height)
    {
        charWidth = width;
        charHeight = height;
    }
 
    ~MyImage()
    {
        if (pixBits)
            delete pixBits;
    }
 
    // загружаем картинку
    bool LoadFile(const wchar_t* fileName)
    {
        if (pixBits)
        {
            delete pixBits;
            pixBits = 0;
        }
 
        ULONG_PTR token;
        Gdiplus::GdiplusStartupInput input;
        if (Gdiplus::GdiplusStartup(&token, &input, 0) != Gdiplus::Ok)
            return false;
 
        Gdiplus::Bitmap* gdiImage = new Gdiplus::Bitmap(fileName);
        if (gdiImage)
        {
            pixWidth = gdiImage->GetWidth();
            pixHeight = gdiImage->GetHeight();
 
            pixBits = new char[pixWidth * pixHeight];
            if (pixBits)
            {
                char* pix = pixBits;
                for (int y = 0; y < pixHeight; y++)
                {
                    for (int x = 0; x < pixWidth; x++)
                    {
                        Gdiplus::Color color;
                        gdiImage->GetPixel(x, y, &color);
                        *pix++ = (color.GetGreen() < 128) ? 0 : 1;
                    }
                }
            }
 
            delete gdiImage;
        }
 
        Gdiplus::GdiplusShutdown(token);
 
        return (pixBits) ? true : false;
    }
 
    // преобразуем кусочек картинки в символ
    char GetChar(int x, int y)
    {
        if (!pixBits || (x < 0) || (x >= charWidth) || (y < 0) || (y >= charHeight))
            return ' ';
 
        int x0 = x * pixWidth / charWidth;
        int cx = (x + 1) * pixWidth / charWidth - x0;
 
        int y0 = y * pixHeight / charHeight;
        int cy = (y + 1) * pixHeight / charHeight - y0;
 
        int black = 0;
        int white = 0;
 
        for (int i = 0; i < cy; i++)
        {
            char* pix = pixBits + (y0 + i) * pixWidth + x0;
 
            for (int j = 0; j < cx; j++)
            {
                if (*pix++ == 0)
                    black++;
                else
                    white++;
            }
        }
 
        return (black > white) ? 'X' : ' ';
    }
};
 
int main()
{
    // ширина и высота вывода
    int cx = 79;
    int cy = 29;
 
    MyImage image(cx, cy);
 
    // картинка с нужной фигурой
    if (!image.LoadFile(L"test.png"))
    {
        std::cout << "can't load image" << std::endl;
        return -1;
    }
 
    // печать символов
    for (int y = 0; y < cy; y++)
    {
        for (int x = 0; x < cx; x++)
            std::cout << image.GetChar(x, y);
 
        std::cout << std::endl;
    }
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 24.10.2019
Сообщений: 30
24.10.2019, 21:04  [ТС] 3
Сори, но это не то. Нужно что бы код был похож на тот что в примере который я писал выше. Но спасибо за старания)
0
6740 / 4538 / 1840
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
24.10.2019, 21:28 4
Цитата Сообщение от Misaka10032 Посмотреть сообщение
Нужно что бы код был похож на тот что в примере который я писал выше. Но спасибо за старания)
В этом примере каждая строчка рисуется в отдельном цикле. Например вот этот, для второй строчки, означает, что рисуется 12 пробелов и 8 иксов
Цитата Сообщение от Misaka10032 Посмотреть сообщение
// Блок 2
* * for (i=1; i<=12; i++)
* * * * {
* * * * * * *for(j=1; j<=13; j++)
* * * * * * * * printf(" ");
* * * * * * *for(j=1; j<=9; j++) //цикл виводу символа "Х"
* * * * * * * * printf("X");
* * * * * * * * printf("\r\n"); //перехід на новий рядок
}
Нарисуй свою картинку в тетрадке в клеточку, посчитай сколько пустых и сколько заполненных клеток, и подставь цифры по-аналогии.
1
2153 / 695 / 268
Регистрация: 10.02.2018
Сообщений: 1,631
24.10.2019, 23:49 5
Лучший ответ Сообщение было отмечено Misaka10032 как решение

Решение

Цитата Сообщение от Misaka10032 Посмотреть сообщение
Сори, но это не то
Эх, мне это напомнило времена моего обучения. Задания были такими скучными, что приходилось себя развлекать их искусственным усложнением.
Кликните здесь для просмотра всего текста
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
#include <stdio.h>
 
int main()
{
    for (int y = 0; y < 4; y++)
    {
        for (int i = 0; i < 4 + y; i++)
            printf(" ");
        for (int i = 0; i < 35 - y * 2; i++)
            printf("X");
        printf("\r\n");
    }
    
    for (int y = 0; y < 4; y++)
    {
        for (int i = 0; i < 3 - y; i++)
            printf(" ");
        for (int i = 0; i < 37 + y * 2; i++)
            printf("X");
        printf("\r\n");
    }
 
    for (int y = 0; y < 3; y++)
    {
        for (int i = 0; i < 1 + y; i++)
            printf(" ");
        for (int i = 0; i < 41 - y * 2; i++)
            printf("X");
        printf("\r\n");
    }
    
    for (int y = 0; y < 7; y++)
    {
        for (int i = 0; i < 15 + y; i++)
            printf(" ");
        for (int i = 0; i < 13 - y * 2; i++)
            printf("X");
        printf("\r\n");
    }
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 24.10.2019
Сообщений: 30
25.10.2019, 01:40  [ТС] 6
Благодарю, вы мне очень помогли. Пойду теперь обдумывать этот код)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2019, 01:40

Псевдографика
Тема для рассуждений. Можно ли вывести на экран, скажем так клетку (3х3) начерченную в файле: ...

[C++] Псевдографика
Здравствуйте. Помогите пожалуйста написать программу.Суть состоит вот в чем: На экран из файла...

Псевдографика
Как написать слово &quot;Hello&quot; в консоли?

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


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

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

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