Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
1

Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома

07.02.2012, 14:29. Просмотров 2776. Ответов 15
Метки нет (Все метки)

Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома, ширина и высота этажа. (дом должен быть трехэтажный, и на каждом этаже по одному одинаковому окошку)
напишите, пожалуйста, полное решение задачи, с пояснениями.
за ранее спасибо.

Добавлено через 1 минуту
нужно решение в с++
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2012, 14:29
Ответы с готовыми решениями:

С++ Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них...
17)Даны два прямоугольника, стороны которых параллельны или перпендикулярны...

Заполнить матрицу от левого верхнего угла по диагонали
Заполнить матрицу А(9,9), от левого верхнего угла по диагонали: вправо - вверх.

Заполнить квадратную матрицу от левого верхнего угла по спирали
Заполнить матрицу А(9,9), от левого верхнего угла по спирали: вправо - вниз -...

Заполнить матрицу ЛП, от левого верхнего угла по диагонали: вправо - вверх
Здравствуйте, уважаемые форумчане. Я новичок в С++. Прошу помочь. Заполнить...

Заполнить матрицу ЛП, от левого верхнего угла по диагонали вправо — вверх
Помогите пожалуйста с лабораторной . 1. Создать квадратную матрицу целых...

15
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 15:03 2
Калерчик, посмотри сюда Как рисовать элементарные геометрические фигуры?
1
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 15:10  [ТС] 3
а саму программу можете составить?
0
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 15:12 4
Цитата Сообщение от Калерчик Посмотреть сообщение
а саму программу можете составить?
- могу только нарисуй в Paint каким должен быть дом(прорисуй прямоугольниками окна)
Я конечно это видел
Цитата Сообщение от Калерчик Посмотреть сообщение
если известны координаты левого верхнего угла дома, ширина и высота этажа. (дом должен быть трехэтажный, и на каждом этаже по одному одинаковому окошку)
Но хочу перед глазами чётко иметь что надо намалевать
1
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 15:33  [ТС] 5
Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома
0
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 15:34  [ТС] 6
только ярусы этажей и окошки должны быть одинаковые (координаты не известны,их вводить нужно)
0
-=ЮрА=-
07.02.2012, 15:50
  #7

Не по теме:

Калерчик, попробую помочь...

1
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 15:55  [ТС] 8
буду оч благодарна
0
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 16:35 9
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Калерчик Посмотреть сообщение
буду оч благодарна
- вот накидал
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
#include <windows.h>
 
#define BLK RGB(0,0,0)
#define WHT RGB(255,255,255)
 
HPEN  getPen(int iPEN_STYLE, int iPEN_SIZE, int iCOLORREF);
BOOL  PlotRect(HDC hDC, HPEN hPen, COORD BGN, COORD END);
 
int main()
{
    HWND hWnd = GetForegroundWindow();
    HPEN BPEN = getPen(PS_SOLID, 2, BLK);
    HPEN WPEN = getPen(PS_SOLID, 2, WHT);
    HBRUSH BK = CreateSolidBrush(BLK);//Нужна чтобы зарисовать контекст DC
    
    SHORT Line;
    SHORT Size= 80;//Размер стороны квадрата
    COORD BGN = {0};
    COORD END = {0};
    RECT pRECT= {0};
    GetWindowRect(hWnd,&pRECT);
    HDC hDC = GetWindowDC(hWnd);
    if(hDC)
    {
        SetBkMode(hDC,TRANSPARENT);
        while(true)//Простая перерисовка каждые 50 мсек
        {
            SelectObject(hDC,BK);
            for(Line = 0; Line < 3; Line++)//3 - число этажей, можно изменять
            {
                BGN.X = 10;
                BGN.Y = 40 + Size*Line;
                END.X = BGN.X + Size;
                END.Y = BGN.Y + Size;
                PlotRect(hDC, WPEN, BGN, END);
                BGN.X = BGN.X + Size/4;
                BGN.Y = BGN.Y + Size/4;
                END.X = BGN.X + Size/2;
                END.Y = BGN.Y + Size/2;
                PlotRect(hDC, WPEN, BGN, END);
            }
            Sleep(50);//50 мсек
        }
        ReleaseDC(hWnd,hDC);//Высвобождаем графический контекст консоли
    }
    else
        MessageBox(hWnd,"Can't get drawing context of console",NULL,MB_OK);
    return 0;
}
 
HPEN getPen(int iPEN_STYLE, int iPEN_SIZE, int iCOLORREF)
{
    return CreatePen(iPEN_STYLE, iPEN_SIZE, iCOLORREF);
}
 
BOOL PlotRect(HDC hDC, HPEN hPen, COORD BGN, COORD END)
{
    SelectObject(hDC,hPen);
    return Rectangle(hDC,BGN.X, BGN.Y, END.X, END.Y);
}
3
Миниатюры
Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома  
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 16:37 10
Если компилятор будет ругаться сюда
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
MessageBox(hWnd,"Can't get drawing context of console",NULL,MB_OK);
Записываем так MessageBoxA(hWnd,"Can't get drawing context of console",NULL,MB_OK);
1
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 16:46  [ТС] 11
а можете компилятор кинуть, а то с форума закачиваются с какой-то ошибкой
0
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 17:07 12
Цитата Сообщение от Калерчик Посмотреть сообщение
а можете компилятор кинуть, а то с форума закачиваются с какой-то ошибкой
- VisualStudio 6.0. А какой компилятор у вас???Можно посмотреть скрин ошибки???

Добавлено через 2 минуты

Не по теме:

Калерчик, создайте срр-файл и нажмите построить проект из существующего кода, не делайте SimpleAplicationProject или куда хуже Win32 Project - это простейшая консоль и ошибки там могут возникнуть лишь в MessageBox в остальном им просто неоткуда браться...

0
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 17:25  [ТС] 13
Visual C++ 2010 Express ошибка 135
0
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 17:45 14
Цитата Сообщение от Калерчик Посмотреть сообщение
Visual C++ 2010 Express ошибка 135
- Express крайне урезанная версия в её составе наверное даже windows.h нет. Чтобы мой код пошёл нужна Standart или Full Edition
1
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 17:53  [ТС] 15
а можете по строчное объяснить работу программы
0
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 18:02 16
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
HWND hWnd = GetForegroundWindow();
- получаем дескриптор окна консоли

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
HPEN BPEN = getPen(PS_SOLID, 2, BLK);
* * * * HPEN WPEN = getPen(PS_SOLID, 2, WHT);
- получаем чёрную и белую "ручки"(в общем это объект который оставляет след определённой ширины и цвета)

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
HBRUSH BK = CreateSolidBrush(BLK);
- создаём чёрную "кисть" (аналог ручки, но будет красить всю область сразу а не оставлять в ней след, это даже больше на Ведро в Paint похоже)

Вот это вообще можно убрать, я сначала думать делать программу по другому, в общем это старые мысли остались
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
RECT pRECT= {0};
* * * * GetWindowRect(hWnd,&pRECT);
- а так это получение координат области окна консоли

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
HDC hDC = GetWindowDC(hWnd);
- получаем графический контекст устройства консоли

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
SelectObject(hDC,BK);
- красим DC в цвет нашей кисти

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(Line = 0; Line < 3; Line++)//3 - число этажей, можно изменять
C++
1
2
3
4
5
6
7
8
9
10
11
12
{
  BGN.X = 10;
  BGN.Y = 40 + Size*Line;
  END.X = BGN.X + Size;
  END.Y = BGN.Y + Size;
  PlotRect(hDC, WPEN, BGN, END);
  BGN.X = BGN.X + Size/4;
  BGN.Y = BGN.Y + Size/4;
  END.X = BGN.X + Size/2;
  END.Y = BGN.Y + Size/2;
  PlotRect(hDC, WPEN, BGN, END);
}
- рисуем квадраты

Дальше всё понятно...
1
07.02.2012, 18:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2012, 18:02

Распечатать элементы матрицы по спирали, начиная с левого верхнего угла
Дана действительная квадратная матрица порядка n. Распечатать элементы матрицы...

Заполнить матрицу, от левого верхнего угла по диагонали: вправо - вверх
Помогите пожалуйста, уже второй день мучаюсь...

Прокрутить четверти матрицы по часовой стрелке, начиная с верхнего левого угла
Задание: дана матрица размерности nxn. Получить новую матрицу, переставляя её...


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

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

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