Раздел «Язык Си».ClassSquare1:

Классы в С++

"Сложные объекты в классах."

Задача про точки

Точка на плоскости задана своими координатами (x,y) - целые числа.

Требуется написать класс, который позволяет:

  1. устанавливать координаты точки
  2. сравнивать две точки
  3. перемещать точку по X или Y
  4. вычислять разницу между двумя точками по X или Y

Напишем класс Point

// Начало мантры
#include <iostream>
#include <cstdlib>
using namespace std;
// Конец мантры

class Point{
// Закрытая область
  int x,y; //
public:
// открытая область
    Point(); // конструктор по-умолчанию
    Point(x1); // точка на оси X
    Point(int x1, int y1);// коструктор со значениями
    int isEqual(Point a); // точки совпадают? (да -1 , нет -0)
    int diffX(Point a); // на сколько нужно подвинуть по X
    int diffY(Point a); // на сколько нужно подвинуть по X
    void move (int x1); // перемещать вдоль оси X
    void move(int x1, int y1); //перемещать на x1 по X и на y1 по Y
    void print();
}
Point::Point(){
// Здесь нужен код
};

Point::Point(int x1){
// Здесь нужен код
};
 Point::Point(int x1, int y1){
// Здесь нужен код
};
int Point::isEqual(Point a){
// Здесь нужен код
      
};
int Point::diffX(Point a){
 // Здесь нужен код
};

int Point::diffY(Point a){
// Здесь нужен код
};

void Point::move (int x1){
// Здесь нужен код
}; 

void Point::move(int x1, int y1){
// Здесь нужен код
}; 

void Point::print(){
  cout<<'('<<x<<','<<y<<')';
};

int main(){
// Здесь нужно проверить ВСЕ функции
  return 1;
}

REFACTOR Задача 1.

Написать и проверить код для ВСЕХ функций класса Point

Задача про квадрат

Квадрат задается двумя точками: левой верхней и правой нижней.

Требуется:

  1. задавать точки - координаты
  2. проверять совпадают ли квадраты.

  3. вычислять чья площадь больше и на сколько

  4. передвигать квадрат в заданную точку

Напишем такой класс:

/ Начало мантры
#include <iostream>
#include <cstdlib>
using namespace std;
// Конец мантры
class Point{
 // вставить из прошлой задачи
};

class Square{
// Закрытая область
  Point p1, p2 // две точки - сложные объекты
  int ln; // длина стороны
public:
// открытая область
   Square(); // конструктор по-умолчанию
   Square(Point a, int len); // точка а (верхняя левая) и длина стороны
    Square(Point a, Point b);// коструктор со значениями
// совпадают ли квадраты
   int isSame(Square a);   
// сравнить площади, если наш квадрат больше, то возвращаем число >0
// если квадрат *a* больше, то число <0, если равны - 0
    int cmpS(Square a);  
    
    void moveToPoint (Point a); // перемещать  верхний левый угол в точку *a*
    void move(int x1, int y1); //перемещать на x1 по X и на y1 по Y 
    int isEqual(Square a); // квадраты равны (да -1 , нет -0)
    void print();

};
Square::Square(){
 // здесь нужен код
};

Square::Square(Point a, int len){
//  Мы не можем обращаться к a.x и a.y
// Поэтому сделаем сначала две одинаковые точки
// и одну подвинем на len по X и Y
   p1 = a;
   p2 = a;
   p2.move(len,-len);
   ln = len;
};

Square::Square(Point a, Point b){
// Здесь нужен код
// ln - вычислить. функция diff()
};

int Square::cmpS(Square a){
// Здесь нужен код 
// сравниваем площади
};

int Square::isSame(Square a){
// если совпадают вершины,
// то совпадают квадраты

}; 
int Square::isEqual(Square a){
// здесь нужен код
// 
};
void Square::moveToPoint (Point a){
// здесь нужен код
// подвинуть обе точки
}; 

void Square::move(int x1, int y1){
// здесь нужен код
// подвинуть обе точки
};

void Square::print(){
   p1.print();
   p2.print();
   cout<<endl;
}

REFACTOR Задача 2.

Написать и проверить код для ВСЕХ функций класса Square

REFACTOR Задача 3.

Два квадрата a и b заданы координатами своих вершин.

Требуется написать программу, которая вычисляет сколько квадратов b поместится в квадрат a. Для решения использоват класс Square

-- TatyanaOvsyannikova2011 - 08 Oct 2015

Attachment sort Action Size Date Who Comment
point1.png manage 20.9 K 08 Oct 2015 - 12:41 TatyanaOvsyannikova2011 одна точка
point3.png manage 33.8 K 08 Oct 2015 - 12:43 TatyanaOvsyannikova2011 три точки
kvadrat.png manage 33.1 K 08 Oct 2015 - 13:01 TatyanaOvsyannikova2011  
kvadrats.png manage 27.7 K 08 Oct 2015 - 13:41 TatyanaOvsyannikova2011  
kvadrat_ask1.png manage 30.8 K 08 Oct 2015 - 13:48 TatyanaOvsyannikova2011