ورود

View Full Version : مبتدی: تبدیل یک برنامه زبان c به c++



mhbitarafan
دوشنبه 24 تیر 1392, 22:14 عصر
سلام دوستان
من یه برنامه کوچیک به زبان c دارم باید تا فردا صبح تبدیلش کنم به c++ و به عنوان پروژه تحویل استادمون بدم ... (درس طراحی الگوریتم ... موضوع : روش تقسیم و حل)
لطفا اگه میتونید این تبدیل رو برام انجام بدید یا حداقل راهنماییم کنید ...
ممنون


#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>


static int h;
static int fill=1;
int pw(int n,int x)
{
int i;
int y=1;
for(i=1;i<=x;i++)
y=y*n;

return y;
}

main()
{
int **a,i,m,j,n,x=1;

printf("Enter the value of n\n");
scanf("%d",&n);

x=pw(2,n);

h=n-3;
printf("Tromino Puzzle :: %dx%d \n",x,x);

a=(int**)malloc(sizeof(int)*x*x);
for(i=0;i<x;i++)
a[i]=(int*)malloc(sizeof(int)*x);

for(i=0;i<x;i++)
{
for(j=0;j<x;j++)
{
a[i][j]=0;
}
}

printf("Enter the i & j value of empty block\n");
scanf("%d%d",&i,&j);
while(i>x || j>x)
{
printf("Enter correct i & j values\n");
scanf("%d%d",&i,&j);
}
a[i][j]=10000;


tromino(1,a,n);

a[i][j]=0;


for(i=0;i<x;i++)
{
printf("\n\n");
for(j=0;j<x;j++)
{
printf("%d\t",a[i][j]);
}
}

printf("\n\n");
}


tromino(int br,int **k,int n)
{
int **b,i,j,x,flag1=0,flag2=0,flag3=0,flag4=0,c,d;

x=pw(2,n);

b=(int**)malloc(sizeof(int)*(x/2)*(x/2));
for(i=0;i<(x/2);i++)
b[i]=(int*)malloc(sizeof(int)*(x/2));


for(i=0;i<(x/2);i++)
for(j=0;j<(x/2);j++)
{
if(k[i][j]!=0)
flag1=1;
}

for(i=(x/2);i<x;i++)
for(j=0;j<(x/2);j++)
{
if(k[i][j]!=0)
flag2=1;
}

for(i=0;i<(x/2);i++)
for(j=(x/2);j<x;j++)
{
if(k[i][j]!=0)
flag3=1;
}



for(i=(x/2);i<x;i++)
for(j=(x/2);j<x;j++)
{
if(k[i][j]!=0)
flag4=1;
}

/*printf("%d%d%d%d",flag1,flag2,flag3,flag4);*/


if(flag1==1)
{
k[(x/2)][(x/2)]=fill;
k[((x/2)-1)][(x/2)]=fill;
k[(x/2)][((x/2)-1)]=fill;
fill++;
}

else if(flag2==1)
{
k[(x/2)][(x/2)]=fill;
k[((x/2)-1)][(x/2)]=fill;
k[((x/2)-1)][((x/2)-1)]=fill;
fill++;
}

else if(flag3==1)
{
k[(x/2)][(x/2)]=fill;
k[(x/2)][((x/2)-1)]=fill;
k[((x/2)-1)][((x/2)-1)]=fill;
fill++;
}

else
{
k[(x/2)][((x/2)-1)]=fill;
k[((x/2)-1)][(x/2)]=fill;
k[((x/2)-1)][((x/2)-1)]=fill;
fill++;
}


if(br<=(n+h))
{
for(i=0;i<(x/2);i++)
for(j=0;j<(x/2);j++)
{
b[i][j]=k[i][j];
}

tromino((br+1),b,(n-1));

for(i=0;i<(x/2);i++)
for(j=0;j<(x/2);j++)
{
k[i][j]=b[i][j];
}

for(c=0,i=(x/2);i<x&&c<(x/2);i++,c++)
for(j=0;j<(x/2);j++)
b[c][j]=k[i][j];

tromino((br+1),b,(n-1));

for(c=0,i=(x/2);i<x&&c<(x/2);i++,c++)
for(j=0;j<(x/2);j++)
k[i][j]=b[c][j];


for(i=0;i<(x/2);i++)
for(d=0,j=(x/2);j<x&&d<(x/2);j++,d++)
b[i][d]=k[i][j];
tromino((br+1),b,(n-1));

for(i=0;i<(x/2);i++)
for(d=0,j=(x/2);j<x&&d<(x/2);j++,d++)
k[i][j]=b[i][d];


for(c=0,i=(x/2);i<x&&c<(x/2);i++,c++)
for(d=0,j=(x/2);j<x&&d<(x/2);j++,d++)
b[c][d]=k[i][j];

tromino((br+1),b,(n-1));

for(c=0,i=(x/2);i<x&&c<(x/2);i++,c++)
for(d=0,j=(x/2);j<x&&d<(x/2);j++,d++)
k[i][j]=b[c][d];




}


}