سلام.کسی میتونه ارور این برنامه رو برام حل کنه.اگه سوالی در پیرامون برنامه خواستید در خدمتم.
c-cpp.rar
سلام.کسی میتونه ارور این برنامه رو برام حل کنه.اگه سوالی در پیرامون برنامه خواستید در خدمتم.
c-cpp.rar
لطفا برنامه رو قبل از هر چیز از نظر ظاهر اصلاح کنید و مرتب تر در سایت قرار بدید.
تمام برنامه ی شما در یک خط نوشته شده دوست گرامی!
سلام دوست عزیز.
اصلا کد قابل خوندن نیست.
برای من که باز شده
دوباره میزارم
c-cpp.rar
کافیه اونو با word باز کنی.حالا اگه بازم نشد.کافیه اینو یه کپی پیست کنید.بازم شرمنده
#include <stdio.h>
#include <math.h>
#define DEG_TO_RAD 0.0174532925
#define SIDE_DOWN_RIGHT 0
#define CORNER_DOWN_DOWN 1
#define SIDE_DOWN_DOWN 2
#define CORNER_DOWN_LEFT 3
#define SIDE_DOWN_LEFT 4
#define CORNER_LEFT_LEFT 5
#define SIDE_UP_LEFT 6
#define CORNER_UP_LEFT 7
#define SIDE_UP_UP 8
#define CORNER_UP_RIGHT 9
#define SIDE_UP_RIGHT 10
#define CORNER_RIGHT_RIGHT 11
#define MOVE_DOWN 0
#define MOVE_DOWN_LEFT 1
#define MOVE_UP_LEFT 2
#define MOVE_UP 3
#define MOVE_UP_RIGHT 4
#define MOVE_DOWN_RIGHT 5
int GetRingSize(int ring)
{
if(ring == 0) return 1;
return ring * 6;
}
int GetRingOffset(int ring)
{
int offset = 0, i;
for(i=0; i<ring; i++)
offset += GetRingSize(i);
return offset;
}
int GetRing(int pos)
{
int ring=0;;
while( GetRingOffset(ring) < pos )
ring++;
return ring;
}
void SpiralTo2D(int pos, int *x, int *y)
{
int ring = GetRing(pos)-1;
int step = pos - GetRingOffset(ring);
int sector_size = 360 / GetRingSize(ring);
int deg = (sector_size * step) - 240;
*x = (int)(sin(deg*DEG_TO_RAD) * ring * 10.0);
*y = (int)(cos(deg*DEG_TO_RAD) * ring * 10.0);
}
int GetRotation(int pos)
{
int ring = GetRing(pos);
int size = GetRingSize(ring-1);
int offset = GetRingOffset(ring-1);
int sector = size / 6;
int rotation = 0;
int step = pos - offset - 1;
int x, y;
for(x=0; x<6; x++)
{
// Side
for(y=0; y<sector-1; y++)
if(step == (x*sector)+y)
return rotation;
rotation++;
// Corner
if(step == (x*sector)+y)
return rotation;
rotation++;
}
return -1;
}
int MoveToNextTile(int pos, int dir)
{
int rot = GetRotation(pos);
if(pos == 1) return 2+dir;
int ring = GetRing(pos)-1;
int ring_size = GetRingSize(ring);
int inner_size = GetRingSize(ring-1);
int offset = GetRingOffset(ring);
switch(rot)
{
case 0:
switch(dir)
{
case MOVE_DOWN: return pos + ring_size + 1;
case MOVE_DOWN_LEFT: return pos + 1;
case MOVE_UP_LEFT: return pos - inner_size;
case MOVE_UP: return (pos == offset+1)? pos-1: pos-inner_size-1;
case MOVE_UP_RIGHT: return (pos == offset+1)? pos+ring_size-1: pos-1;
case MOVE_DOWN_RIGHT: return pos + ring_size;
default: return -1;
}
case 1:
switch(dir)
{
case MOVE_DOWN: return pos + ring_size + 1;
case MOVE_DOWN_LEFT: return pos + ring_size + 2;
case MOVE_UP_LEFT: return pos + 1;
case MOVE_UP: return (ring > 1)? pos - inner_size -1: 1;
case MOVE_UP_RIGHT: return (ring > 1)? pos - 1: 7;
case MOVE_DOWN_RIGHT: return pos + ring_size;
default: return -1;
}
case 2:
switch(dir)
{
case MOVE_DOWN: return pos + ring_size + 1;
case MOVE_DOWN_LEFT: return pos + ring_size + 2;
case MOVE_UP_LEFT: return pos + 1;
case MOVE_UP: return pos - inner_size -1;
case MOVE_UP_RIGHT: return pos - inner_size -2;
case MOVE_DOWN_RIGHT: return pos-1;
default: return -1;
}
case 3:
switch(dir)
{
case MOVE_DOWN: return pos + ring_size + 1;
case MOVE_DOWN_LEFT: return pos + ring_size + 2;
case MOVE_UP_LEFT: return pos + ring_size + 3;
case MOVE_UP: return pos + 1;
case MOVE_UP_RIGHT: return (pos == 3)? 1: pos - inner_size - 2;
case MOVE_DOWN_RIGHT: return pos - 1;
default: return -1;
}
case 4:
switch(dir)
{
case MOVE_DOWN: return pos - 1;
case MOVE_DOWN_LEFT: return pos + ring_size + 2;
case MOVE_UP_LEFT: return pos + ring_size + 3;
case MOVE_UP: return pos + 1;
case MOVE_UP_RIGHT: return pos - inner_size - 2;
case MOVE_DOWN_RIGHT: return pos - inner_size - 3;
default: return -1;
}
case 5:
switch(dir)
{
case MOVE_DOWN: return pos - 1;
case MOVE_DOWN_LEFT: return pos + ring_size + 2;
case MOVE_UP_LEFT: return pos + ring_size + 3;
case MOVE_UP: return pos + ring_size + 4;
case MOVE_UP_RIGHT: return pos + 1;
case MOVE_DOWN_RIGHT: return (pos == 4)? 1: pos - inner_size -3;
default: return -1;
}
case 6:
switch(dir)
{
case MOVE_DOWN: return pos - inner_size - 4;
case MOVE_DOWN_LEFT: return pos - 1;
case MOVE_UP_LEFT: return pos + ring_size + 3;
case MOVE_UP: return pos + ring_size + 4;
case MOVE_UP_RIGHT: return pos + 1;
case MOVE_DOWN_RIGHT: return pos - inner_size - 3;
default: return -1;
}
case 7:
switch(dir)
{
case MOVE_DOWN: return (pos == 5)? 1: pos - inner_size - 4;
case MOVE_DOWN_LEFT: return pos - 1;
case MOVE_UP_LEFT: return pos + ring_size + 3;
case MOVE_UP: return pos + ring_size + 4;
case MOVE_UP_RIGHT: return pos + ring_size + 5;
case MOVE_DOWN_RIGHT: return pos + 1;
default: return -1;
}
case 8:
switch(dir)
{
case MOVE_DOWN: return pos - inner_size - 4;
case MOVE_DOWN_LEFT: return pos - inner_size - 5;
case MOVE_UP_LEFT: return pos - 1;
case MOVE_UP: return pos + ring_size + 4;
case MOVE_UP_RIGHT: return pos + ring_size + 5;
case MOVE_DOWN_RIGHT: return pos + 1;
default: return -1;
}
case 9:
switch(dir)
{
case MOVE_DOWN: return pos + 1;
case MOVE_DOWN_LEFT: return (pos == 6)? 1: pos - inner_size - 5;
case MOVE_UP_LEFT: return pos - 1;
case MOVE_UP: return pos + ring_size + 4;
case MOVE_UP_RIGHT: return pos + ring_size + 5;
case MOVE_DOWN_RIGHT: return pos + ring_size + 6;
default: return -1;
}
case 10:
switch(dir)
{
case MOVE_DOWN: return pos + 1;
case MOVE_DOWN_LEFT: return pos - inner_size - 5;
case MOVE_UP_LEFT: return pos - inner_size - 6;
case MOVE_UP: return pos -1;
case MOVE_UP_RIGHT: return pos + ring_size + 5;
case MOVE_DOWN_RIGHT: return pos + ring_size + 6;
default: return -1;
}
case 11:
switch(dir)
{
case MOVE_DOWN: return pos + 1;
case MOVE_DOWN_LEFT: return offset + 1;
case MOVE_UP_LEFT: return (pos == 7)? 1: pos - inner_size - 6;
case MOVE_UP: return pos - 1;
case MOVE_UP_RIGHT: return pos + ring_size + 5;
case MOVE_DOWN_RIGHT: return pos + ring_size + 6;
default: return -1;
}
default: return -1;
}
}
// Gets next step
int GetNextTile(int location, int target)
{
int i;
for(i=0; i<6; i++)
if(MoveToNextTile(location, i) == target)
return MoveToNextTile(location, i);
int l_x, l_y, t_x, t_y; // Location and target co-ords
SpiralTo2D(location, &l_x, &l_y);
SpiralTo2D(target, &t_x, &t_y);
if(l_x == t_x) // Move up or down only
if(l_y < t_y)
return MoveToNextTile(location, MOVE_UP);
else
return MoveToNextTile(location, MOVE_DOWN);
else if(l_x > t_x)// Move left
if(l_y > t_y)
return MoveToNextTile(location, MOVE_DOWN_LEFT);
else
return MoveToNextTile(location, MOVE_UP_LEFT);
else //Move Right
if(l_y > t_y)
return MoveToNextTile(location, MOVE_DOWN_RIGHT);
else
return MoveToNextTile(location, MOVE_UP_RIGHT);
}
int MoveToTarget(int origin, int destination)
{
int location = origin;
int steps = 0;
printf("%i\n", location);
while(location != destination)
{
location = GetNextTile(location, destination);
printf("%i\n", location);
if((steps++) > 1000000) return -1;
}
printf("Move took %i steps\n", steps);
return 0;
}
int main()
{
int pos, target;
printf("Enter location to move from: ");
scanf("%i", &pos);
printf("Enter location to move to: ");
scanf("%i", &target);
MoveToTarget(pos, target);
getchar();
getchar();
return 0;
}
خوب این شد یک سورس مرتب.
من برنامه رو کامپایل کردم.مشکلی نداشت!
اجراشم کردم.
شما دقیقا با چه خطایی مواجه می شی؟شاید ایراد از کامپایلرتون باشه!
من از کامپایلر Borland C++ v 5.02 استفاده کردم.
توربو سی خیلی مشکلات بی خود داره و ایرادات بی هوده می گیره.بهتون توصیه می کنم از توربو استفاده نکنید.
آفرین.انسان تیز بینی هستید.براساس این عکس باید بگم که نمیدونم چرا پسوند فایلتون HTM هست ؟
به این نکته اصلا توجه نکردم.
دوستان گرامی دمتون گرم مشکل همون چیزی بود که دوست گرامی negativ گفت به قول بچه ها
آفرین.انسان تیز بینی هستید.
به این نکته اصلا توجه نکردم.