Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/07/2014, 14:49
shxadow
 
Fecha de Ingreso: julio-2014
Mensajes: 1
Antigüedad: 9 años, 10 meses
Puntos: 0
problema con funciones y arrays dinamicos [cuadrado magico]

bueno lo que sucede es que tengo que hacer un trabajo para la U.. y se trata de crear un cuadrado magico... que es que todas las sumas de los cuadrados de el mismo resultado.... el problema que tengo es que no se como hacer una matriz bidimensional variable.. lo he intentado muchas cosas. pero veo que aun me falta.. pero tengo q entregar este trabajo.. y no se como hacerlo.. a y se me olvida.. es que todo el programa tiene que se por obliación con funciones.. y tengo algo.. pero por motivos que no se.. no me funciona el programa. me compila.. pero solo qeda ai.. si algien tuviera algo de tiempo plz.. :/


Código:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
void inicializar_arreglo (int **a, const int j){
    int x,y;
    for(x=0; x<j; x++){
        for(y=0; y<j; y++){
            (a[y][x]=0);
        }
    }
}

void materializar_arreglo(int **a, const int j){
    int w, y, x, z, tx, ty;
    (w=j*j);
    (y=0);
    (x=j/2);
    (tx=0);
    (ty=0);
    for(z=1; z<=w; z++){
        (a[y][x]=z);
        (ty=y);
        (tx=x);
        (y--);
        if(y<0){
            (y=j-1);
        }
        (x--);
        if(x<0){
            (x=j-1);
        }
        if(a[y][x]>0){
            (y=ty+1);
            (x=tx);
        }
    }
}

int main(){
    int i , j , k , w , x , y , z , tx , ty ;
    printf("||CUADRADO MAGICO||\n\n");
    printf("Ingrese un numero del cuadrado magico.\n\n");
    scanf("%d",&i);
    while(i<=2 | i%2==0){
        printf("Ingrese un numero impar mayor o igual que 3.\n\n");
        scanf("%d",&i);
        printf("\n");
    }
    int arr[i][i];
    inicializar_arreglo(arr,i);
    materializar_arreglo(arr,i);
    
    
    for(j=0; j<i; j++){
                for(k=0; k<i; k++){
                        printf("[%3d] ",arr[j][k]);
                        }
                printf("\n\n");
                }
    return 0;
}