پاسخ داده شده: مساله مختصات حلزونی
حداقل کد خودتون را هم قرار بدید این طور باشه میشه تکلیف دانشگاه.
#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; }