حداقل کد خودتون را هم قرار بدید این طور باشه میشه تکلیف دانشگاه.
#include <iostream>
#include <vector>
#include <deque>
#include <array>
using namespace std;
#include <iostream>
struct Point{
Point(int x=0,int y=0):
x_(x),
y_(y){}
int x_;
int y_;
};
class CochlearCoordinate {
public:
CochlearCoordinate(){
reset();
}
void reset(){
current_point_ = Point(0,0);
current_direct_ = 0;
counter_ = 0;
current_size_ = 1;
}
int nextDirect(){
current_direct_++;
if (current_direct_ >= coordinates_.size())
current_direct_ = 0;
}
int getNextSize(){
counter_++;
if (counter_ >= 2){
counter_ = 0;
current_size_++;
}
}
Point movePoint(const Point& center,const Point& offset){
Point result = center;
result.x_ = result.x_ +(offset.x_ * current_size_);
result.y_ = result.y_+(offset.y_ * current_size_);
return result;
}
int currentSize()const{
return current_size_;
}
Point currentPoint()const{
return current_point_;
}
Point nextPoint(){
current_point_ = movePoint(current_point_,coordinates_[current_direct_]);
nextDirect();
getNextSize();
return current_point_;
}
private:
int counter_;
int current_size_;
int current_direct_;
Point current_point_ ;
std::array<Point,4> coordinates_{Point(1,0),Point(0,1),Point(-1,0),Point(0,-1)};
};
void printPoint(const Point& pnt){
cout << "x:" << pnt.x_ << " y:"<< pnt.y_ << endl;
}
int main()
{
CochlearCoordinate cochl;
printPoint(cochl.currentPoint());
int counter = 0;
int count = 14;
while (counter < count -1){
printPoint(cochl.nextPoint());
counter++;
}
return 0;
}