2014-09-27 2 views
-1

직사각형 모양을 그리기로되어있는 지정이 있습니다. 평면에서 두 점을 지정하는 방법은 두 개의 수평선과 두 개의 수직선을 그립니다. Rectangle 클래스에서 Point 클래스를 사용해야합니다.직사각형 그리기 및 인쇄 방법

나는 할당 지침 .h (Point 클래스), .cpp (Point 클래스), .h (Rectangle 클래스), .cpp (Rectange 클래스) 메인 있습니다. 나는 본부에서 너무 많이하지 않았지만해야 할 일을 명기했다. 그는 y 또는 문자 y으로 구성된 윤곽선으로 그려진 사각형을 원합니다.

나는 모든이, .cpp (Point 클래스), .h (Rectangle 클래스)를 .h (Point 클래스) 좋은 생각,하지만 난 사각형 .cpp의 무승부 방법 및 인쇄 방법에 문제가 있어요, 강사는 말했다 그리기 메소드 또는 그와 비슷한 것에서 원점에 대한 임시 변수를 사용하십시오.

.cpp 직사각형 파일의 인쇄 방법에 대해 잘 모르는 경우 도움이됩니다. 컴파일하려고했지만 모든 지옥 느슨하게 부러, 어떤 설명/예를 많이 도움이 될 것입니다.

Point.h

//the Point.cpp file 
#include "Point.h" 
#include<iostream>  
using namespace std;  
//Getters 
double Point::getX()const {return x;} 
double Point::getY()const {return y;} 

//setters  
void Point::setX(double x) {this->x=x;} 
void Point::setY(double y) {this->y=y;} 

//Public functions 
void Point::print()const{ 
    cout << "(" << x << "," << y << ")" << endl; 
} 

//overloading '+' operator 
const Point Point::operator+(const Point & rt) const{ 
return Point(x + rt.x, y + rt.y); 
} 

const Point Point::operator-(const Point & rt) const{ 
return Point(x - rt.x, y - rt.y); 
} 

Point Point::operator+=(Point & rt){ 
return Point(x+=rt.x, y+=rt.y); 
} 

int Point::operator ==(Point & rt){ 
return (x == rt.x && y==rt.y); 
} 

int Point::operator <(Point & rt){ 
return (x < rt.x && y<rt.y); 
} 

int Point::operator >(Point & rt){ 
return (x > rt.x && y>rt.y); 
} 

int Point::operator <=(Point & rt){ 
return (x <= rt.x && y<=rt.y); 
} 

int Point::operator >=(Point & rt){ 
return (x >= rt.x && y>=rt.y); 
} 
//; 
//;  
//END POINT.CPP 

사각형 h 파일

#ifndef RECTANGLE_H  
#define RECTANGLE_H 
#include <iostream.h> 
#include "Point.h"  
class Rectangle { 

private:  
    Point origin; 
    Point corner; 

public: 
    Rectangle (const Point & or, const Point & cr):origin(or),corner(cr) {} 
    // void move(int dx, int dy);  
    void draw(); 
    void print()const; 
};  
#endif /* RECTANGLE_H */ 

사각형이 파일을 .CPP 통화 당

//Point.h 
#include <iostream.h> 
/* The Point class Header file (Point.h) */ 
#ifndef POINT_H 
#define POINT_H 

class Point { 

private: 
    double x,y;//x and y are private variables 

public:  
    Point(int x, int y):x(x),y(y){}//use initialization list  
    double getX() const; //Getters  
    double getY() const;  
    void setX(double x); //Setters  
    void setY(double y); //Setters 

    void print()const; 
    //Overload '+' operator 
    const Point operator +(const Point & rt)const; 
    //Overload '-' operator 
    const Point operator - (const Point &rt)const; 

    Point operator +=(Point & rt); 
    Point operator -=(Point & rt); 
    //Overload '==' operator comparing two points 

    int operator ==(Point &rt); 
    int operator <(Point &rt); 
    int operator >(Point &rt); 
    int operator <=(Point &rt); 
    int operator >=(Point &rt); 

}; 
/* POINT_H */ 
#endif 

포인트

/* The Rectangle.cpp file) */ 
#include "Point.h" 
#include "Rectangle.h" 
#include <iostream.h> 
#include <string> 
#include <conio.h> 
using namespace std;  
// Public Functions 
void Rectangle::print() const 
{ 
    cout<<"(" <<origin <<"," <<corner << ")" <<endl; 
} 

void Rectangle::draw()  
{  
     Point temp=origin;  //store origin in temp object 
     while (temp.getX() < corner.getX()) { 
     putch('y');  
    } 
    /* int temp=origin;  
     for (int x = temp.getX(); x < center.getX(); x++) { 
     Point pt1 (x, temp.getY()); 
     Point pt2 (x, center.getY()); 
     pt1(6,4); 
     // move to p1 // not sure how to do this 
     putCH ('y'); 
     pt2(30,15); 
     // move to p2 //not sure how to do this 
     putCH ('y'); 
    } 

    for (int y = lowerRight.getY(); y < upperLeft.getY(); y++) { 
      Point pt1 (origin.getX(),y); 
      Point pt2 (corner.getX(),y); 
      pt1(6,4); 
      //move to p1 //not sure how to do this 
      putCH('y'); 
      pt2(30,15); 
     // move to p2 //not sure how to do this 
      putCH ('y'); 
    }*/ 
//return 0; 
}//; 
,

내가 한 C++ 특정 문제를 볼 수

#include "Point.h" 
#include "Rectangle.h" 
#include <iostream> 
#include <conio.h> 
using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
     //char y;   
     Point p1(6, 4), p2(30, 15); 

     //cout<<"\n the origin of Rectangle is at: "; 
     //p1.print(); 
     //cout<<"\n the opposite corner of rect is at:"; 
     //p2.print(); 

     Rectangle r1(p1,p2);   
     r1.draw();   
     clrscr();   
     gotoxy(1,20);   
     //r1.print();   
     getch(); 
     return 0;  
    } //; 
    //END OF MAIN 
+0

두 가지 도움말. 1. 컴파일러에서 오류 메시지의 첫 번째 줄을 가져 와서 수정하십시오. 2. 전체를 많이 입력하지 말고 최선을 기원합니다. 몇 줄에 묶어서 컴파일하면됩니다. 자신감이 있으면 합병증 사이에 더 많은 줄을 입력 할 수 있습니다. –

답변

1

메인 : 당신이 점에 "<<" 연산자를 오버로드하지 않았다. 먼저 해주세요.

두 번째로 컴파일러를 사용하고 있습니까?

clrscr(); gotoxy(); 

은 표준 C++ +의 일부가 아닙니다.
귀하의 컴파일러가 지원한다면, 좋습니다. 그렇지 않으면 대안을 찾아야합니다.

좋은 규칙 : 네임 스페이스를 사용하여 표준

을 피하기; 대신

는 등

내가 실제 로직을 통과하지 않았다

std::cout 
    std::endl; 

물품. 실제로 귀하의 과제는 무엇입니까 - 그렇지 않은가요?

0

제안을 주셔서 감사합니다.하지만 저는 또한 Rectangle .cpp 메서드 draw() 및 print()에 특히 문제가 있습니다.C++을 처음 사용하기 때문에 Rectangle .cpp 파일의 draw() 및 print() 메서드에 대한 코드가 있지만 논리가 잘못되었습니다.

Rectangle.cpp 파일의 Rectangle 그리기 메서드에서 임시 변수를 선언해야하며 영구 원점이 아닌 임시 변수를 늘리려면 루프가 필요하다는 것을 알고 있습니다. draw() 메소드에 대한 코드를 작성하기 시작했으나 올바른 방향에 있는지 확신 할 수 없습니다.

또한

내 인쇄() 사각형 .CPP의 방법은 나에게 문제를주고, 내가 거기에 뭔가를 넣어 ... 그것은 권리입니다 확실하지 끝까지 Point.h으로

, 포인트 cpp를 잘하다 , 난 그냥 Rectangle .cpp에서 포인트 클래스의 비트를 사용하고 있습니다. Point.h 파일이나 Point.cpp 파일의 연산자 메서드에 관심이 없습니다 (예 : int Point :: operator == (Point & rt) 등). 필자는 필요하지 않다고 생각합니다. 그것이 과거에 필요했기 때문에 그들을 내려 놓으십시오.

관련 문제