Problema
Publicado por Adrian (6 intervenciones) el 19/06/2010 17:38:03
Hola foreros, espero que me podais ayudar estoy perdidisimo y no se donde tengo el fallo, os paso el codigo:
#include <stdio.h>
#include <stdlib.h>
int GenerarCM(int** cuadradoMagico, int x, int y, int max, int n, int i)
{
int xtemp, ytemp,j;
printf("%d %d",x,y);
x=x-1;
y=y+1;
xtemp=x;
ytemp=y;
if ((cuadradoMagico[x][y]==0)&&(x<0)&&(y>n))
{
cuadradoMagico[x][y]=i;
}
if (x==-1)
{
x=n-1;
}
if (y==n)
{
y=0;
}
if (cuadradoMagico[x][y]==0)
{
cuadradoMagico[x][y]=i;
}
else
{
x=xtemp+2;
y=ytemp-1;
cuadradoMagico[x][y]=i;
}
if (i<=max)
{
GenerarCM(cuadradoMagico,x,y,max,n,i++);//nicolas.duchateau
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ", cuadradoMagico[i][j]);
}
printf("\n");
}
}
main(int argc, char** argv) //newprojects arguments
{
int n,max,i,j,x=0,y=0,xtemp,ytemp;
if (atoi(argv[1])==1)
{
FILE *c;
int p,i=0,j,SUMA;
c=fopen("cuadrado.txt","r");
if (c==NULL)
{
printf("Error obrint els fitxers\n");
}
else
{
while (!feof(c))
{
fscanf(c,"%d",&p);
i++;
}
printf("%d\n",i);
fclose(c);
if (p%2==0)
{
printf("El cuadrado no es magico porque tiene lados pares y deverian ser impares");
}
else
{
p=sqrt(i);
int **cuadradoMagico1;
cuadradoMagico1=(int **) malloc(p*sizeof(int*));
for(i=0;i<p;i++)
{
cuadradoMagico1[i]=(int*) malloc(p*sizeof(int));
}
c=fopen("cuadrado.txt","r");
for(i=0;i<p;i++)
{
for(j=0;j<p;j++)
{
fscanf(c,"%d",&cuadradoMagico1[i][j]);
}
}
for(i=0;i<p;i++)
{
for(j=0;j<p;j++)
{
printf("%d",cuadradoMagico1[i][j]);
}
printf("\n");
}
fclose(c);
}
}
}
if (atoi(argv[1])==2)
{
n=atoi(argv[3]);
if (n%2==0)
{
printf("El numero introducido no es un numero impar\n");
}
else
{
int **cuadradoMagico;
cuadradoMagico=(int **) malloc(n*sizeof(int*));
for(i=0;i<n;i++)
{
cuadradoMagico[i]=(int*) malloc(n*sizeof(int));
}
max=n*n;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cuadradoMagico[i][j]=0;
}
}
cuadradoMagico[0][n/2]=1;
x=n-1;
y=(n/2)+1;
cuadradoMagico[x][y]=2;
i=3;
GenerarCM(cuadradoMagico,x,y,max,n,i);
}
}
}
el caso es que cuando ejecuto "./p 1 cuadrado.txt" Me funciona a la perfección pero cuando intento ejecutar "./p 2 cuadrado.txt 3" Me salta un core dumped.
Yo seguire trabajando en ello pero de mientras ire mirando el foro haber si hay alguien a quien se le ha encendido la bombilla y sabe ver mi problema jejjejejjje
muchas gracias gente!!
#include <stdio.h>
#include <stdlib.h>
int GenerarCM(int** cuadradoMagico, int x, int y, int max, int n, int i)
{
int xtemp, ytemp,j;
printf("%d %d",x,y);
x=x-1;
y=y+1;
xtemp=x;
ytemp=y;
if ((cuadradoMagico[x][y]==0)&&(x<0)&&(y>n))
{
cuadradoMagico[x][y]=i;
}
if (x==-1)
{
x=n-1;
}
if (y==n)
{
y=0;
}
if (cuadradoMagico[x][y]==0)
{
cuadradoMagico[x][y]=i;
}
else
{
x=xtemp+2;
y=ytemp-1;
cuadradoMagico[x][y]=i;
}
if (i<=max)
{
GenerarCM(cuadradoMagico,x,y,max,n,i++);//nicolas.duchateau
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ", cuadradoMagico[i][j]);
}
printf("\n");
}
}
main(int argc, char** argv) //newprojects arguments
{
int n,max,i,j,x=0,y=0,xtemp,ytemp;
if (atoi(argv[1])==1)
{
FILE *c;
int p,i=0,j,SUMA;
c=fopen("cuadrado.txt","r");
if (c==NULL)
{
printf("Error obrint els fitxers\n");
}
else
{
while (!feof(c))
{
fscanf(c,"%d",&p);
i++;
}
printf("%d\n",i);
fclose(c);
if (p%2==0)
{
printf("El cuadrado no es magico porque tiene lados pares y deverian ser impares");
}
else
{
p=sqrt(i);
int **cuadradoMagico1;
cuadradoMagico1=(int **) malloc(p*sizeof(int*));
for(i=0;i<p;i++)
{
cuadradoMagico1[i]=(int*) malloc(p*sizeof(int));
}
c=fopen("cuadrado.txt","r");
for(i=0;i<p;i++)
{
for(j=0;j<p;j++)
{
fscanf(c,"%d",&cuadradoMagico1[i][j]);
}
}
for(i=0;i<p;i++)
{
for(j=0;j<p;j++)
{
printf("%d",cuadradoMagico1[i][j]);
}
printf("\n");
}
fclose(c);
}
}
}
if (atoi(argv[1])==2)
{
n=atoi(argv[3]);
if (n%2==0)
{
printf("El numero introducido no es un numero impar\n");
}
else
{
int **cuadradoMagico;
cuadradoMagico=(int **) malloc(n*sizeof(int*));
for(i=0;i<n;i++)
{
cuadradoMagico[i]=(int*) malloc(n*sizeof(int));
}
max=n*n;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cuadradoMagico[i][j]=0;
}
}
cuadradoMagico[0][n/2]=1;
x=n-1;
y=(n/2)+1;
cuadradoMagico[x][y]=2;
i=3;
GenerarCM(cuadradoMagico,x,y,max,n,i);
}
}
}
el caso es que cuando ejecuto "./p 1 cuadrado.txt" Me funciona a la perfección pero cuando intento ejecutar "./p 2 cuadrado.txt 3" Me salta un core dumped.
Yo seguire trabajando en ello pero de mientras ire mirando el foro haber si hay alguien a quien se le ha encendido la bombilla y sabe ver mi problema jejjejejjje
muchas gracias gente!!
Valora esta pregunta


0