mehrayaneh
چهارشنبه 13 اردیبهشت 1391, 01:16 صبح
سلام من برج هانوی رو با ساختار شرطی نوشتم اما مشکل داره نمیدونم از کجا خواهشا راهنمایی کنید
ضمنا کامپایلرش ++dev c هستش
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int i,j,k,l,a=1,b=0,c=0,topa,topb,topc,n;
cin>>n;
if(n%2==0)
a=2;
int x[n],y[n],z[n];
for(i=n-1;i>=0;i++)
{
a=a+1;
x[i]=a;
}
for(i=0;i>=n-1;i++)
{
y[i]=n;
z[i]=n;
}
topa=n-1;
topb=0;
topc=0;
for(i=1;i>=0;i++)
{
for(j=1;j>=0;j++)
{
if(topa<0)
topa=0;
if(topb<0)
topb=0;
if(topc<0)
topc=0;
if(a%2==0&&x[topa]<y[topb]&&x[topa]<z[topc])
{
cout<<"a --> b";
y[topb]=x[topa];
x[topa]=n;
a=a+1;
b=b+1;
topa=topa-1;
topb=topb+1;
}
else if(a%2!=0&&x[topa]<y[topb]&&x[topa]<z[topc])
{
cout<<"a --> c";
z[topc]=x[topa];
x[topa]=n;
a=a+1;
c=c+1;
}
else if(x[topa]<y[topb]&&x[topa]>z[topc])
{
cout<<"a --> b";
y[topb]=x[topa];
x[topa]=n;
a=a+1;
b=b+1;
topa=topa-1;
topb=topb+1;
}
else if(x[topa]<y[topb]&&x[topa]>z[topc])
{
cout<<"a --> c";
z[topc]=x[topa];
x[topa]=n;
a=a+1;
c=c+1;
}
else;
break;
}
if(topc==n-1)
break;
for(k=1;k>=0;k++)
{
if(topa<0)
topa=0;
if(topb<0)
topb=0;
if(topc<0)
topc=0;
if(b%2==0&&y[topb]<x[topa]&&y[topb]<z[topc])
{
cout<<"b --> a";
x[topa]=y[topb];
y[topb]=n;
b=b+1;
a=a+1;
topb=topb-1;
topa=topa+1;
}
else if(b%2!=0&&y[topb]<x[topa]&&y[topb]<z[topc])
{
cout<<"b --> c";
z[topc]=y[topb];
y[topb]=n;
b=b+1;
c=c+1;
}
else if(y[topb]<x[topa]&&y[topb]>z[topc])
{
cout<<"b --> a";
x[topa]=y[topb];
y[topb]=n;
b=b+1;
a=a+1;
topb=topb-1;
topa=topa+1;
}
else if(y[topb]<x[topa]&&y[topb]>z[topc])
{
cout<<"b --> c";
z[topc]=y[topb];
y[topb]=n;
b=b+1;
c=c+1;
}
else;
break;
}
if(topc==n-1)
break;
for(l=1;l>=0;l=l+1)
{
if(topa<0)
topa=0;
if(topb<0)
topb=0;
if(topc<0)
topc=0;
if(c%2==0&&z[topc]<x[topa]&&z[topc]<y[topb])
{
cout<<"c --> a";
x[topa]=z[topc];
z[topc]=n;
c=c+1;
a=a+1;
topc=topc-1;
topa=topa+1;
}
else if(c%2!=0&&z[topc]<x[topa]&&z[topc]<y[topb])
{
cout<<"c --> b";
y[topb]=z[topc];
z[topc]=n;
c=c+1;
b=b+1;
}
else if(z[topc]<x[topa]&&z[topc]>y[topb])
{
cout<<"c --> a";
x[topa]=z[topc];
z[topc]=n;
c=c+1;
a=a+1;
topc=topc-1;
topa=topa+1;
}
else if(z[topc]<x[topa]&&z[topc]>y[topb])
{
cout<<"c --> b";
y[topb]=z[topc];
z[topc]=n;
c=c+1;
b=b+1;
}
else;
break;
}
if(topc==n-1)
break;
system("PAUSE");
return EXIT_SUCCESS;}}
ضمنا کامپایلرش ++dev c هستش
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int i,j,k,l,a=1,b=0,c=0,topa,topb,topc,n;
cin>>n;
if(n%2==0)
a=2;
int x[n],y[n],z[n];
for(i=n-1;i>=0;i++)
{
a=a+1;
x[i]=a;
}
for(i=0;i>=n-1;i++)
{
y[i]=n;
z[i]=n;
}
topa=n-1;
topb=0;
topc=0;
for(i=1;i>=0;i++)
{
for(j=1;j>=0;j++)
{
if(topa<0)
topa=0;
if(topb<0)
topb=0;
if(topc<0)
topc=0;
if(a%2==0&&x[topa]<y[topb]&&x[topa]<z[topc])
{
cout<<"a --> b";
y[topb]=x[topa];
x[topa]=n;
a=a+1;
b=b+1;
topa=topa-1;
topb=topb+1;
}
else if(a%2!=0&&x[topa]<y[topb]&&x[topa]<z[topc])
{
cout<<"a --> c";
z[topc]=x[topa];
x[topa]=n;
a=a+1;
c=c+1;
}
else if(x[topa]<y[topb]&&x[topa]>z[topc])
{
cout<<"a --> b";
y[topb]=x[topa];
x[topa]=n;
a=a+1;
b=b+1;
topa=topa-1;
topb=topb+1;
}
else if(x[topa]<y[topb]&&x[topa]>z[topc])
{
cout<<"a --> c";
z[topc]=x[topa];
x[topa]=n;
a=a+1;
c=c+1;
}
else;
break;
}
if(topc==n-1)
break;
for(k=1;k>=0;k++)
{
if(topa<0)
topa=0;
if(topb<0)
topb=0;
if(topc<0)
topc=0;
if(b%2==0&&y[topb]<x[topa]&&y[topb]<z[topc])
{
cout<<"b --> a";
x[topa]=y[topb];
y[topb]=n;
b=b+1;
a=a+1;
topb=topb-1;
topa=topa+1;
}
else if(b%2!=0&&y[topb]<x[topa]&&y[topb]<z[topc])
{
cout<<"b --> c";
z[topc]=y[topb];
y[topb]=n;
b=b+1;
c=c+1;
}
else if(y[topb]<x[topa]&&y[topb]>z[topc])
{
cout<<"b --> a";
x[topa]=y[topb];
y[topb]=n;
b=b+1;
a=a+1;
topb=topb-1;
topa=topa+1;
}
else if(y[topb]<x[topa]&&y[topb]>z[topc])
{
cout<<"b --> c";
z[topc]=y[topb];
y[topb]=n;
b=b+1;
c=c+1;
}
else;
break;
}
if(topc==n-1)
break;
for(l=1;l>=0;l=l+1)
{
if(topa<0)
topa=0;
if(topb<0)
topb=0;
if(topc<0)
topc=0;
if(c%2==0&&z[topc]<x[topa]&&z[topc]<y[topb])
{
cout<<"c --> a";
x[topa]=z[topc];
z[topc]=n;
c=c+1;
a=a+1;
topc=topc-1;
topa=topa+1;
}
else if(c%2!=0&&z[topc]<x[topa]&&z[topc]<y[topb])
{
cout<<"c --> b";
y[topb]=z[topc];
z[topc]=n;
c=c+1;
b=b+1;
}
else if(z[topc]<x[topa]&&z[topc]>y[topb])
{
cout<<"c --> a";
x[topa]=z[topc];
z[topc]=n;
c=c+1;
a=a+1;
topc=topc-1;
topa=topa+1;
}
else if(z[topc]<x[topa]&&z[topc]>y[topb])
{
cout<<"c --> b";
y[topb]=z[topc];
z[topc]=n;
c=c+1;
b=b+1;
}
else;
break;
}
if(topc==n-1)
break;
system("PAUSE");
return EXIT_SUCCESS;}}