PDA

View Full Version : کمک ارور این برنامه رو برام حل کنید



delta_qi
جمعه 14 خرداد 1389, 20:15 عصر
سلام.کسی میتونه ارور این برنامه رو برام حل کنه.اگه سوالی در پیرامون برنامه خواستید در خدمتم.
50471

ztx4
جمعه 14 خرداد 1389, 22:49 عصر
لطفا برنامه رو قبل از هر چیز از نظر ظاهر اصلاح کنید و مرتب تر در سایت قرار بدید.
تمام برنامه ی شما در یک خط نوشته شده دوست گرامی!

mohsensaghafi
شنبه 15 خرداد 1389, 01:59 صبح
سلام دوست عزیز.
اصلا کد قابل خوندن نیست.

delta_qi
شنبه 15 خرداد 1389, 10:11 صبح
برای من که باز شده:متفکر:
دوباره میزارم
50489
کافیه اونو با 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;
}

ztx4
شنبه 15 خرداد 1389, 10:51 صبح
خوب این شد یک سورس مرتب.
من برنامه رو کامپایل کردم.مشکلی نداشت!
اجراشم کردم.
شما دقیقا با چه خطایی مواجه می شی؟شاید ایراد از کامپایلرتون باشه!

delta_qi
شنبه 15 خرداد 1389, 20:47 عصر
اقا دمت گرم پس چرا روی pc من اجرا نمیشه.من از برنامه++ turbo c استفاده میکنم.یه سوال داشتم برنامه ورودی از شما چی میخاد(باید 2عدد بگیره و یه عدد خروجی بده).سوال 2 هم اینه که شما لینک دانلود برنامه c رو ندارید؟ توی این عکس خطا هارو نشون دادم.ممنون که به فکر مایی
http://www1.upic.ir/images/h91xizqflwqaj54k8uew.jpg (http://www1.upic.ir/)

ztx4
شنبه 15 خرداد 1389, 21:15 عصر
من از کامپایلر Borland c++ v 5.02 استفاده کردم.
توربو سی خیلی مشکلات بی خود داره و ایرادات بی هوده می گیره.بهتون توصیه می کنم از توربو استفاده نکنید.

ztx4
یک شنبه 16 خرداد 1389, 00:23 صبح
براساس این عکس باید بگم که نمیدونم چرا پسوند فایلتون HTM هست ؟

آفرین.انسان تیز بینی هستید.
به این نکته اصلا توجه نکردم.

delta_qi
یک شنبه 16 خرداد 1389, 23:04 عصر
دوستان گرامی دمتون گرم مشکل همون چیزی بود که دوست گرامی negativ گفت به قول بچه ها

آفرین.انسان تیز بینی هستید.
به این نکته اصلا توجه نکردم.