Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 108
1

Вывести на экран произвольный пятиугольник

31.05.2015, 10:42. Показов 5280. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите написать программу, которая выводит на экран произвольный пятиугольник

За ранее спасибо большое!

Добавлено через 12 часов 53 минуты
Помогите пожалуйста!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2015, 10:42
Ответы с готовыми решениями:

Создать произвольный класс и вывести содержимое на экран.
Создать произвольный класс на основе базового и вывести на экран содержимое его полей. Базовый...

Задается произвольный текст, Вычислить среднюю длину слов текста и вывести ее на экран
Задается произвольный текст, содержащий не более 10 строк, в каждой строке не бо-лее 80 символов....

Вывести на экран монитора пятиугольник
Вывести на экран монитора пятиугольник светло-зеленого (LightGreen) цвета таким образом, чтобы...

Вывести на экран монитора пятиугольник и закрасить его
Вывести на экран монитора пятиугольник и закрасить его светло-зелёным (LightGreen) цветом с...

31
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 108
14.06.2015, 12:38  [ТС] 21
Author24 — интернет-сервис помощи студентам
castaway, Ошибок не найдено. Как по другому можно сделать? Нужно срочно, помогите плиз
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
14.06.2015, 12:45 22
Цитата Сообщение от Олеся Довга Посмотреть сообщение
Ошибок не найдено.
Цитата Сообщение от castaway Посмотреть сообщение
Попробуй понавтыкать проверок на ошибки.
Проверка на ошибку, это например:
C++
1
2
HWND hwnd = GetConsoleWindow();
if ( hwnd == NULL ) ошибка
Как ты определил что ошибок не найдено?
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 108
14.06.2015, 12:49  [ТС] 23
castaway, Можете написать полный вид программы как она должна выглядеть
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
14.06.2015, 12:53 24
Нет.
0
81 / 80 / 9
Регистрация: 30.10.2013
Сообщений: 251
14.06.2015, 13:06 25
У меня в CodeBlocks, компилятор MinGW, ваш код работает, показывает пятиугольник, только при изменении размера окна, перерисовки нет и картинка исчезает, при прокрутке тоже. Там видать Dev-C++ , делает, что то типа этого, например после запуска окно свернуто, а смотрите, когда развернете его.
1
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
14.06.2015, 13:10 26
Кстати да. Как вариант, поставить задержку в начале программы: Sleep( 3000 ) и при запуске сразу открыть консольное окно (если оно не появилось) или просто подождать 3 секунды.
0
81 / 80 / 9
Регистрация: 30.10.2013
Сообщений: 251
14.06.2015, 13:29 27
Можно попробовать, сделать задержку, типа Sleep( 10000), чтоб развернуть окно и увидеть результат рисования, а можно в цикле аналогичную паузу для перерисовки сделать, или по нажатию кнопки к.-л. перерисовывать по циклу. Грубо конечно. А лучше win32api приложение с окном сделать.

Добавлено через 17 минут
Что то типа
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
#include <windows.h>
#include <conio.h>
#include <stdio.h>
int main()
{
    HWND hwnd;
    char Title[1024];
    GetConsoleTitle(Title, 1024); // Узнаем имя окна
// или GetModuleFileName(NULL,Title, sizeof(Title));
 
 
// printf("fdfd\n");
 
    hwnd=FindWindow(NULL, Title); // Узнаем hwnd окна
    int x[5]= {0,100,200,150,50}; // x координаты вершин
    int y[5]= {25,0,25,50,50}; // y координаты вершин
    do
    {
        system("cls");
        printf("press for refrash");
        HDC hdc=GetDC(hwnd);  // Получаем контекст для рисования
        HPEN p1,p2=CreatePen(PS_SOLID,2,RGB(255,0,0)); // Создаем красное перо
        p1=(HPEN)SelectObject(hdc,p2);    // Заносим красное перо в контекст рисования
 
        MoveToEx(hdc,x[4],y[4],NULL); // ставим перо в последнюю точку
        for(int i=0; i<5; i++)
            LineTo(hdc,x[i],y[i]); // Проводим линии
        SelectObject(hdc,p1); // Возвращаем старое перо
        ReleaseDC(hwnd,hdc);  // Освобождаем контекст рисования
        DeleteObject(p2);     // Удаляем созданное перо
        if (getch()==32) break;/// по пробелу выйти
 
    }
    while(1);
 
    _getch();
    return 0;
}
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 108
14.06.2015, 15:03  [ТС] 28
chedman, не получилось, выводит ошибку
Вывести на экран произвольный пятиугольник
0
81 / 80 / 9
Регистрация: 30.10.2013
Сообщений: 251
14.06.2015, 19:35 29
Попробуй запустить не чере Dev-C++, а отдельно полученный exe.
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 108
15.06.2015, 10:09  [ТС] 30
chedman, Ошибка не пропала
0
81 / 80 / 9
Регистрация: 30.10.2013
Сообщений: 251
15.06.2015, 11:14 31
Какая версия компилятора, может в параметрах линковки, что то лишнее, у меня линкуется с libgdi32.a , а компилятор MinGW 4.8.1 .

Добавлено через 4 минуты
Есть подозрение, что conio.h криво реализована в используемом вами компиляторе. Можно попробовать:
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
#include <windows.h>
//#include <conio.h>
#include <stdio.h>
int main()
{
    HWND hwnd;
    char Title[1024];
    GetConsoleTitle(Title, 1024); // Узнаем имя окна
// или GetModuleFileName(NULL,Title, sizeof(Title));
 
 
// printf("fdfd\n");
 
    hwnd=FindWindow(NULL, Title); // Узнаем hwnd окна
    int x[5]= {0,100,200,150,50}; // x координаты вершин
    int y[5]= {25,0,25,50,50}; // y координаты вершин
 
    do
    {
        system("cls");
        printf("press for refrash");
        HDC hdc=GetDC(hwnd);  // Получаем контекст для рисования
        HPEN p1,p2=CreatePen(PS_SOLID,2,RGB(255,0,0)); // Создаем красное перо
        p1=(HPEN)SelectObject(hdc,p2);    // Заносим красное перо в контекст рисования
 
        MoveToEx(hdc,x[4],y[4],NULL); // ставим перо в последнюю точку
        for(int i=0; i<5; i++)
            LineTo(hdc,x[i],y[i]); // Проводим линии
        SelectObject(hdc,p1); // Возвращаем старое перо
        ReleaseDC(hwnd,hdc);  // Освобождаем контекст рисования
        DeleteObject(p2);     // Удаляем созданное перо
        if (getc(stdin)==32) break;/// по пробелу выйти
 
    }
    while(1);
 
    getc(stdin);
    return 0;
}
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
16.06.2015, 07:02 32
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define _WIN32_WINNT 0x0500 
 
int main()
{
    HDC hDC = GetDC( GetConsoleWindow( ) );
    HPEN Pen = CreatePen( PS_SOLID, 2, RGB(255, 255, 255));
    SelectObject( hDC, Pen );
    MoveToEx( hDC, 0, 85, NULL );  
       
     POINT poly[6] = {
        {10,30},
        {270,50},
        {390,250},
        {165,360},
        {45,335},
        {10,30}
     };
 
Polyline(hDC, poly , 6);
system("PAUSE"); 
     
}
Миниатюры
Вывести на экран произвольный пятиугольник   Вывести на экран произвольный пятиугольник  
0
16.06.2015, 07:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2015, 07:02
Помогаю со студенческими работами здесь

Вывести на экран монитора правильный пятиугольник зеленого цвета
1. Очистить экран монитора и при необходимости установить желаемый цвет фона. 2. Вывести один или...

Вывести на экран монитора правильный пятиугольник зеленого цвета
Вывести на экран монитора правильный пятиугольник зеленого цвета, описав вокруг него светлосиний...

Вывести на экран монитора пятиугольник желтогоцвета и шестиугольник светло-красного цвета
Вывести на экран монитора пятиугольник желтого (Yellow) цвета и шестиугольник светло-красного...

Вывести на экран монитора пятиугольник желтого (Yellow) цвета и шестиугольник светло-красного (LightRed)...
Помогите пожалуйста написать такую программу: Вывести на экран монитора пятиугольник желтого...


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

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