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

Нарисовать в псевдографике

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

Author24 — интернет-сервис помощи студентам
По условию лабораторной работы требуется нарисовать вот это Название: Безымянный.png
Просмотров: 102

Размер: 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
Ответы с готовыми решениями:

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

Размещение панелек друг над другом в псевдографике
Не знал, куда такое задание кинуть, надеюсь, что попал по адресу. Если что это задание для...

Часы в псевдографике (TSR)
Помогите, пожалуйста, с лабой: TSR - программа должна по горячей клавише выводить на экран часы,...

Создание калькулятора на псевдографике консоли
Смотрите Безымянный.jpg код весь бросать не буду. сразу к проблеме! не знаю как сложить...

5
2518 / 851 / 320
Регистрация: 10.02.2018
Сообщений: 1,997
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
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
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
2518 / 851 / 320
Регистрация: 10.02.2018
Сообщений: 1,997
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
25.10.2019, 01:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2019, 01:40
Помогаю со студенческими работами здесь

В текстовом файле заменить символы псевдографике.
В данном текстовом файле заменить символы псевдографики на подходящие символы,коды которых от 32 до...

Нарисовать флаг, нарисовать график y=ctg x Нарисовать анимацию
Дело таково у меня сейчас практика, где я очень не успиваю сделать все свои задания... Большая...

Как gl_line_loop заполнить цветом или им же нарисовать нарисовать сферу
или же нарисовать примерно точно также как на изображении, и потом при диалоге изменения цвета...

Нарисовать контур прямоугольника, в котором нарисовать линиями разного цвета и стиля своё имя
Нарисуйте контур прямоугольника в котором нарисуйте линиями разного цвета и стиля своё имя. ИМЯ -...

Модуль Graph. Нарисовать домик. Нарисовать узор из окружностей
Помогите пожалуйста)))) 1)Нарисовать домик за начала рисунка взять координаты левого угла домика и...

Нарисовать дом. Нарисовать велосипед, который управляется с клавиатуры
2)статичный дом,разноцветный, велосипед управляется стрелочками и заезжает в дом.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru