Pagini recente » Cod sursa (job #2073915) | Cod sursa (job #327244) | Cod sursa (job #651654) | Cod sursa (job #533527) | Cod sursa (job #1513059)
#include <stdio.h>
#include <math.h>
#include <string.h>
void incarcare(int curbe[]){
curbe[1]=3;
int i;
for(i=2;i<=15;i++)
curbe[i]=curbe[i-1]*4+3;
}
void reduCadranul1(int *x,int *y,int raza){
int aux;
aux=*x;
*x=*y;
*y=aux;
}
void reduCadranul4(int *x,int *y, int raza){
*x=2*raza-*x+1;
*y=raza-*y+1;
int aux=*x;
*x=*y;
*y=aux;
}
int determinaCadran(int *x,int *y,int r){
if(*x<=r)
if(*y<=r){
reduCadranul1(x,y,r);
return 1;
}
else{
*y=*y-r;
return 2;
}
else
if(*y<=r){
reduCadranul4(x,y,r);
return 4;
}
else{
*x=*x-r;
*y=*y-r;
return 3;
}
}
int fractal(int x,int y,int ordin, int curbe[]){
int cadran,raza=pow(2,ordin-1);
if(ordin==1){
if(x==1&&y==1)
return 0;
if(x==1&&y==2)
return 1;
if(x==2&&y==2)
return 2;
return 3;
}
cadran=determinaCadran(&x,&y,raza);
return (cadran-1)*curbe[ordin-1]+cadran-1+fractal(x,y,ordin-1,curbe);
}
int main(){
int k,a,b,x[16],i;
FILE *fp=fopen("fractal.in","r");
FILE *fq=fopen("fractal.out","w");
incarcare(x);
fscanf(fp,"%d",&k);
fscanf(fp,"%d",&a);
fscanf(fp,"%d",&b);
fprintf(fq,"%d",fractal(a,b,k,x));
fclose(fp);fclose(fq);
return 0;
}