Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 14.12.2017, 20:54   #1
arnora
Пользователь
 
Регистрация: 27.11.2017
Сообщений: 13
Репутация: 10
По умолчанию Помогите пожалуйста разобраться с ошибками

Создать программу, которая проверяет, можно ли поместить заданный прямоугольник внутри заданной окружности. Использовать два класса – класс «Правильный прямоугольник» и класс «Окружность».

Код:

#include "stdafx.h"
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void write_c(LPCTSTR s, WORD color);
class rect {
public:
    int x, y, w, h;
public:
    rect(void) {}
    rect(int _x, int _y, int _w, int _h) :x(_x), y(_y), w(_w), h(_h) {}
};
class circle {
public:
    int x, y, r;
public:
    circle(void) {}
    circle(int _x, int _y, int _r) :x(_x), y(_y), r(_r) {}
};
inline bool isRectInCircle(const rect& rc, const circle& cr) {
    return (static_cast<double>(cr.r) * 2.0) > hypot(rc.w, rc.h);
}
int main(void) {
    HWND hwnd = GetConsoleWindow();
    HDC  hdc = GetDC(hwnd);
    HPEN    rp = CreatePen(PS_SOLID, 1, RGB(0xFF, 0, 0));
    HPEN    gp = CreatePen(PS_SOLID, 1, RGB(0, 0xFF, 0));
    HGDIOBJ hbr = SelectObject(hdc, (HBRUSH)GetStockObject(NULL_BRUSH));
    RECT    r;
    HGDIOBJ old;
    rect   rc;
    circle cr(150, 150, 100);
    for (int i = 0; i < 30; ++i) {
        GetClientRect(hwnd, &r);
        InvalidateRect(hwnd, &r, TRUE);
        //задаём произвольный размер прямоугольника
        rc.w = 50 + rand() % 150;
        rc.h = 50 + rand() % 150;
        if (isRectInCircle(rc, cr)) {
            write_c(_T("ПРЯМОУГОЛЬНИК ВХОДИТ В ОКРУЖНОСТЬ"), FOREGROUND_GREEN);
            old = SelectObject(hdc, gp);
        }
        else {
            write_c(_T("НЕЛЬЗЯ ПОМЕСТИТЬ ПРЯМОУГОЛЬНИК В ОКРУЖНОСТЬ"), FOREGROUND_RED);
            old = SelectObject(hdc, rp);
        }
        rc.x = (cr.x - cr.r) + (cr.r * 2 - rc.w) / 2;
        rc.y = (cr.y - cr.r) + (cr.r * 2 - rc.h) / 2;
        //вывод прямоугольника
        SetRect(&r, rc.x, rc.y, rc.x + rc.w, rc.y + rc.h);
        FrameRect(hdc, &r, (HBRUSH)GetStockObject(WHITE_BRUSH));
        //вывод окружности
        Ellipse(hdc, cr.x - cr.r, cr.y - cr.r, cr.x + cr.r, cr.y + cr.r);
        SelectObject(hdc, old);
 
        Sleep(1300);
    }
    DeleteObject(rp);
    DeleteObject(gp);
    SelectObject(hdc, hbr);
    ReleaseDC(hwnd, hdc);
    return 0;
}
//вывод
void write_c(LPCTSTR s, WORD color) {
    TCHAR b[128];
    CharToOem(s, b);
    static HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
    DWORD n;
    COORD p = { 1, 0 };
    FillConsoleOutputCharacter(hout, _T(' '), 80, p, &n);
    FillConsoleOutputAttribute(hout, color | FOREGROUND_INTENSITY, 80, p, &n);
    WriteConsoleOutputCharacter(hout, b, _tcslen(b), p, &n);
}

E0167 аргумент типа "TCHAR *" несовместим с параметром типа "LPSTR" 69
C2664 "BOOL CharToOemW(LPCWSTR,LPSTR)": невозможно преобразовать аргумент 2 из "TCHAR [128]" в "LPSTR" 69



_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 15.12.2017 в 10:42.
arnora вне форума   Ответить с цитированием
Старый 14.12.2017, 23:10   #2
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,529
Репутация: 1728
По умолчанию

Заменить LPSTR на LPTSTR
waleri на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разобраться в ошибками ---Demon--- C/C++ Базы данных 5 23.12.2013 10:27
Разобраться с ошибками, delphi Nice42ru Работа с сетью в Delphi 0 11.03.2011 20:26
Не могу разобраться с ошибками, голову сломал Cyber Общие вопросы C/C++ 8 14.02.2011 17:40
Помогите разобраться с ошибками в Delphi7 Statusbar Виноградик Помощь студентам 2 05.06.2009 11:26
Помогите разобраться с ошибками в исходнике С++ Go6a Помощь студентам 1 03.05.2008 17:43


10:27.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru