Foros ZackYFileS

Foros ZackYFileS (http://foros.zackyfiles.com/index.php)
-   PROGRAMACIÓN Lenguajes: Visual Basic, C++, etc (http://foros.zackyfiles.com/forumdisplay.php?f=370)
-   -   Ayuda con C (http://foros.zackyfiles.com/showthread.php?t=612766)

antoniogas 31/10/2009 13:31

Ayuda con C
 
Hola,
En clase me han mandado programar un cuadrado mágico en C, el cuadrado mágico deberia de ser de tal forma que vaya en la dirección noroeste y si se "choca" suba y siga dicha dirección, el código que encontré lo hacia de otra manera, pero eso ya lo he solucionado, mi problema es que tiene un define quiero pasarlo a codigo y quitar ese define, pero no se como hacerlo, me gustaria pasarlo como "if...etc"

El cubo mágico deberia ser:

46 15 40 9 34 3 28
21 39 8 33 2 27 45
38 14 32 1 26 44 20
13 31 7 25 43 19 37
30 6 24 49 18 36 12
5 23 48 17 42 11 29
22 47 16 41 10 35 4

Os dejo aquí el código:

[quote]/*Codificacion basada en el algoritmo anterior*/

#include <stdio.h>
#include <conio.h>

/*limitar rango ( limita los valores de x al rango [0, N] )*/
#define lr( x, N )( (x)<0 ? N+(x)%N : ( (x)>=N ? (x)%N : (x) ) )


void main()
{
int cuadrado[7][7],x,y,n,N=7;

printf( "\nCuadrado Magico de orden %ix%i :\n\n", N, N);

/*Se inicia los elementos del cuadrado magico con ceros*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
cuadrado[x][y]=0;
}
}
/*Se aplica el algoritmo general para obtener cuadrados magicos de orden impar*/
for( x=N/2,y=2,n=1; n<=N*N; ) /*se hace N*N iteraciones...*/
{
if(!cuadrado[x][y]) /*si el elemento seleccionado es cero*/
{
cuadrado[x][y] = n++; /*se inserta un número natural */
x=lr(x+1,N); /*se incrementa x en 1 */
y=lr(y-1,N); /*se decrementa y en 1 */
}
else
{
x=lr(x-1,N); /*se decrementa x en 1 */
y=lr(y-1,N); /*se incrementa y en 2 */
}

}
/*se imprime el cuadrado magico en pantalla*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
printf("\n");
for(x=0;x<N;x++)
{
getch();
printf("%4i",cuadrado[x][y]);
}
}
}
printf("\n\n Suma = %i\n\n",(N*(N*N+1))/2); /*se imprime la suma*/

getch();
}[/quote]

Haber si me podeis ayudar.

Muchas gracias y salu2

kezuziyo 31/10/2009 14:12

No entiendo muy bién lo que pides, un #define se expande cada vez que aparece en la fase del preprocesador antes de compilar y tiene como finalidad facilitar la comprensión del código repetitivo, podrías convertirlo en función o expandir tu mismo esa definición en todos los sitios que se utiliza.
Ahora bién, si lo que no entiendes es el operador ternario ((expresion) ? (parte verdadera) : (parte falsa)) lo que hace es evaluarse la expresion y devuelve la parte verdadera o la parte false dependiendo de si esa expresion es verdadera o falsa, por ejemplo
x=(a>b)?c:d;
equilvadría a
if (a>b) {
x=c;
} else {
x=d;
}

antoniogas 31/10/2009 14:31

[QUOTE=kezuziyo;3902867]No entiendo muy bién lo que pides, un #define se expande cada vez que aparece en la fase del preprocesador antes de compilar y tiene como finalidad facilitar la comprensión del código repetitivo, podrías convertirlo en función o expandir tu mismo esa definición en todos los sitios que se utiliza.
Ahora bién, si lo que no entiendes es el operador ternario ((expresion) ? (parte verdadera) : (parte falsa)) lo que hace es evaluarse la expresion y devuelve la parte verdadera o la parte false dependiendo de si esa expresion es verdadera o falsa, por ejemplo
x=(a>b)?c:d;
equilvadría a
if (a>b) {
x=c;
} else {
x=d;
}[/QUOTE]

Lo que hace el define lo entiendo,pero quiero quitar el define y poner la expresion en los sitios donde sea necesario y esto es lo que no se hacer.
El codigo del define seria:
If(x<0)
X=7+x%7;
Else
{
If(x>=7)
X=x%7
Else
X=x
}
Seria correcto? Pero no se donde ponerlo.

Salu2

kezuziyo 31/10/2009 15:53

Voy a desarrollarte una de las expresiones, aunque sigo sin entender para que lo quieres hacer.

#define lr( x, N )( (x)<0 ? N+(x)%N : ( (x)>=N ? (x)%N : (x) ) )
x=lr(x+1,N);
sería sustituyendo x por x+1, y N por N
if ((x+1)<0) {
x=N+(x+1)%N
} else {
if ((x+1)>=N) {
x=(x+1)%N
} else {
x=(x+1)
}
}

Coke-OFF 31/10/2009 15:55

el define...

#define lr( x, N )( (x)<0 ? N+(x)%N : ( (x)>=N ? (x)%N : (x) ) )

viene a ser algo asi...

if(x < 0) x = N + (x) % N;
else if(x >= N) x = (x) % N;
else x = x;

tienes que ponerlo en donde salga lr(x, N);

ejemplo....x = lr(x + 1, N);

if(++x < 0) x = N + (x) % N;
else if(x >= N) x = (x) % N;
else x = x;

creo, no me hagas mucho caso...:p

PD: perdon, mientras hacia mi post ya te habian contestado.

Coke.

antoniogas 31/10/2009 16:48

Buenas de nuevo, he sustituido el lr(x,N) por la función if else... y el programa se ejecuta pero no hace nada, este seria el codigo sustituido:

[quote]/*Codificacion basada en el algoritmo anterior*/

#include <stdio.h>
#include <conio.h>

/*limitar rango ( limita los valores de x al rango [0, N] )*/
//#define lr( x, N )( (x)<0 ? N+(x)%N : ( (x)>=N ? (x)%N : (x) ) )

void main()
{
int cuadrado[7][7],x,y,n,N=7;

printf( "\nCuadrado Magico de orden %ix%i :\n\n", N, N);

/*Se inicia los elementos del cuadrado magico con ceros*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
cuadrado[x][y]=0;
}
}
/*Se aplica el algoritmo general para obtener cuadrados magicos de orden impar*/
for( x=N/2,y=2,n=1; n<=N*N; ) /*se hace N*N iteraciones...*/
{
if(!cuadrado[x][y]) /*si el elemento seleccionado es cero*/
{
cuadrado[x][y] = n++; /*se inserta un número natural */
if ((x+1)<0)
{
x=N+(x+1)%N;
}
else
{
if ((x+1)>=N)
{
x=(x+1)%N;
}
else
{
x=(x+1); /*se incrementa x en 1 */
}
}
if ((y-1)<0)
{
x=N+(y-1)%N;
}
else
{
if ((y-1)>=N)
{
x=(y-1)%N;
}
else
{
x=(y-1);
}
} /*se decrementa y en 1 */
}
else
{
if ((x+1)<0)
{
x=N+(x+1)%N;
}
else
{
if ((x+1)>=N)
{
x=(x+1)%N;
}
else
{
x=(x+1);
}
} /*se decrementa x en 1 */
if ((y-1)<0)
{
x=N+(y-1)%N;
}
else
{
if ((y-1)>=N)
{
x=(y-1)%N;
}
else
{
x=(y-1);
}
}/*se incrementa y en 2 */
}

}
/*se imprime el cuadrado magico en pantalla*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
printf("\n");
for(x=0;x<N;x++)
{
getch();
printf("%4i",cuadrado[x][y]);
}
}
}
printf("\n\n Suma = %i\n\n",(N*(N*N+1))/2); /*se imprime la suma*/

getch();
}[/quote]

Salu2

Coke-OFF 31/10/2009 16:56

[QUOTE]/*Codificacion basada en el algoritmo anterior*/

#include <stdio.h>
#include <conio.h>

/*limitar rango ( limita los valores de x al rango [0, N] )*/
//#define lr( x, N )( (x)<0 ? N+(x)%N : ( (x)>=N ? (x)%N : (x) ) )

void main()
{
int cuadrado[7][7],x,y,n,N=7;

printf( "\nCuadrado Magico de orden %ix%i :\n\n", N, N);

/*Se inicia los elementos del cuadrado magico con ceros*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
cuadrado[x][y]=0;
}
}
/*Se aplica el algoritmo general para obtener cuadrados magicos de orden impar*/
for( x=N/2,y=2,n=1; n<=N*N; ) /*se hace N*N iteraciones...*/
{
if(!cuadrado[x][y]) /*si el elemento seleccionado es cero*/
{
cuadrado[x][y] = n++; /*se inserta un número natural */
if ((x+1)<0)
{
x=N+(x+1)%N;
}
else
{
if ((x+1)>=N)
{
x=(x+1)%N;
}
else
{
x=(x+1); /*se incrementa x en 1 */
}
}
if ((y-1)<0)
{
[B]y[/B]=N+(y-1)%N;
}
else
{
if ((y-1)>=N)
{
[B]y[/B]=(y-1)%N;
}
else
{
[B]y[/B]=(y-1);
}
} /*se decrementa y en 1 */
}
else
{
if ((x+1)<0)
{
x=N+(x+1)%N;
}
else
{
if ((x+1)>=N)
{
x=(x+1)%N;
}
else
{
x=(x+1);
}
} /*se decrementa x en 1 */
if ((y-1)<0)
{
[B]y[/B]=N+(y-1)%N;
}
else
{
if ((y-1)>=N)
{
[B]y[/B]=(y-1)%N;
}
else
{
[B]y[/B]=(y-1);
}
}/*se incrementa y en 2 */
}

}
/*se imprime el cuadrado magico en pantalla*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
printf("\n");
for(x=0;x<N;x++)
{
getch();
printf("%4i",cuadrado[x][y]);
}
}
}
printf("\n\n Suma = %i\n\n",(N*(N*N+1))/2); /*se imprime la suma*/

getch();
} [/QUOTE]

prueba a cambiar las negritas...tu tienes x, pon y

Coke.

antoniogas 31/10/2009 17:00

[quote]/*Codificacion basada en el algoritmo anterior*/

#include <stdio.h>
#include <conio.h>

/*limitar rango ( limita los valores de x al rango [0, N] )*/
//#define lr( x, N )( (x)<0 ? N+(x)%N : ( (x)>=N ? (x)%N : (x) ) )

void main()
{
int cuadrado[7][7],x,y,n,N=7;

printf( "\nCuadrado Magico de orden %ix%i :\n\n", N, N);

/*Se inicia los elementos del cuadrado magico con ceros*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
cuadrado[x][y]=0;
}
}
/*Se aplica el algoritmo general para obtener cuadrados magicos de orden impar*/
for( x=N/2,y=2,n=1; n<=N*N; ) /*se hace N*N iteraciones...*/
{
if(!cuadrado[x][y]) /*si el elemento seleccionado es cero*/
{
cuadrado[x][y] = n++; /*se inserta un número natural */
if ((x+1)<0)
{
x=N+(x+1)%N;
}
else
{
if ((x+1)>=N)
{
x=(x+1)%N;
}
else
{
x=(x+1); /*se incrementa x en 1 */
}
}
if ((y-1)<0)
{
y=N+(y-1)%N;
}
else
{
if ((y-1)>=N)
{
y=(y-1)%N;
}
else
{
y=(y-1);
}
} /*se decrementa y en 1 */
}
else
{
if ((x+1)<0)
{
x=N+(x+1)%N;
}
else
{
if ((x+1)>=N)
{
x=(x+1)%N;
}
else
{
x=(x+1);
}
} /*se decrementa x en 1 */
if ((y-1)<0)
{
y=N+(y-1)%N;
}
else
{
if ((y-1)>=N)
{
y=(y-1)%N;
}
else
{
y=(y-1);
}
}/*se incrementa y en 2 */
}

}
/*se imprime el cuadrado magico en pantalla*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
printf("\n");
for(x=0;x<N;x++)
{
getch();
printf("%4i",cuadrado[x][y]);
}
}
}
printf("\n\n Suma = %i\n\n",(N*(N*N+1))/2); /*se imprime la suma*/

getch();
}[/quote]

Ya lo he cambiado y sigue igual.

Coke-OFF 31/10/2009 17:24

has probado el original?...funciona?

Coke.

antoniogas 31/10/2009 17:32

Cita:

Iniciado por Coke (Mensaje 3902966)
has probado el original?...funciona?

Coke.

Si, el original con el define si funciona.

Salu2

Coke-OFF 31/10/2009 17:34

Cita:

Iniciado por antoniogas (Mensaje 3902973)
Si, el original con el define si funciona.

Salu2

si, ya lo he comprobado...via mirá.

Coke.

Coke-OFF 31/10/2009 17:39

prueba con mi solucion...

[QUOTE]#include <stdio.h>
#include <conio.h>

/*limitar rango ( limita los valores de x al rango [0, N] )*/
//#define lr( x, N )( (x)<0 ? N+(x)%N : ( (x)>=N ? (x)%N : (x) ) )


void main()
{
int cuadrado[7][7],x,y,n,N=7;

printf( "\nCuadrado Magico de orden %ix%i :\n\n", N, N);

/*Se inicia los elementos del cuadrado magico con ceros*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
cuadrado[x][y]=0;
}
}
/*Se aplica el algoritmo general para obtener cuadrados magicos de orden impar*/
for( x=N/2,y=2,n=1; n<=N*N; ) /*se hace N*N iteraciones...*/
{
if(!cuadrado[x][y]) /*si el elemento seleccionado es cero*/
{
cuadrado[x][y] = n++; /*se inserta un número natural */

//x=lr(x+1,N); /*se incrementa x en 1 */

if(++x < 0) x = N+(x)%N;
else if(x >= N) x = (x)%N;
else x = x;

//y=lr(y-1,N); /*se decrementa y en 1 */

if(--y < 0) y = N+(y)%N;
else if(y >= N) y = (y)%N;
else y = y;
}
else
{
//x=lr(x-1,N); /*se decrementa x en 1 */

if(--x < 0) x = N+(x)%N;
else if(x >= N) x = (x)%N;
else x = x;

//y=lr(y-1,N); /*se incrementa y en 2 */

if(--y < 0) y = N+(y)%N;
else if(y >= N) y = (y)%N;
else y = y;
}

}
/*se imprime el cuadrado magico en pantalla*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
printf("\n");
for(x=0;x<N;x++)
{
getch();
printf("%4i",cuadrado[x][y]);
}
}
}
printf("\n\n Suma = %i\n\n",(N*(N*N+1))/2); /*se imprime la suma*/

getch();
}
[/QUOTE]

PD: incluso el else final, no tienes que ponerlo...quiero decir...

[QUOTE]#include <stdio.h>
#include <conio.h>

/*limitar rango ( limita los valores de x al rango [0, N] )*/
//#define lr( x, N )( (x)<0 ? N+(x)%N : ( (x)>=N ? (x)%N : (x) ) )


void main()
{
int cuadrado[7][7],x,y,n,N=7;

printf( "\nCuadrado Magico de orden %ix%i :\n\n", N, N);

/*Se inicia los elementos del cuadrado magico con ceros*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
cuadrado[x][y]=0;
}
}
/*Se aplica el algoritmo general para obtener cuadrados magicos de orden impar*/
for( x=N/2,y=2,n=1; n<=N*N; ) /*se hace N*N iteraciones...*/
{
if(!cuadrado[x][y]) /*si el elemento seleccionado es cero*/
{
cuadrado[x][y] = n++; /*se inserta un número natural */

//x=lr(x+1,N); /*se incrementa x en 1 */

if(++x < 0) x = N+(x)%N;
else if(x >= N) x = (x)%N;

//y=lr(y-1,N); /*se decrementa y en 1 */

if(--y < 0) y = N+(y)%N;
else if(y >= N) y = (y)%N;
}
else
{
//x=lr(x-1,N); /*se decrementa x en 1 */

if(--x < 0) x = N+(x)%N;
else if(x >= N) x = (x)%N;

//y=lr(y-1,N); /*se incrementa y en 2 */

if(--y < 0) y = N+(y)%N;
else if(y >= N) y = (y)%N;
}

}
/*se imprime el cuadrado magico en pantalla*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
printf("\n");
for(x=0;x<N;x++)
{
getch();
printf("%4i",cuadrado[x][y]);
}
}
}
printf("\n\n Suma = %i\n\n",(N*(N*N+1))/2); /*se imprime la suma*/

getch();
}
[/QUOTE]

Coke.

antoniogas 31/10/2009 17:46

Si, ahora si funciona, muchas gracias por todo.

Salu2

Coke-OFF 31/10/2009 17:58

Cita:

Iniciado por antoniogas (Mensaje 3902983)
Si, ahora si funciona, muchas gracias por todo.

Salu2

bien, me alegro...de nada.

Coke.

kezuziyo 31/10/2009 18:14

lo puedes simplificar un poco, ya que realmente lo que hace esa "función" es calcular la función módulo N positivo de un número x, que devuelve un entero entre 0 y N-1 (no entre 0 y N como dice)
/*limitar rango ( limita los valores de x al rango [0, N] )*/
#define lr( x, N )( (x)<0 ? N+(x)%N : [B]( (x)>=N ? (x)%N : (x) )[/B] )
la parte en negrita se puede sustituir perfectamente por [B](x)%N[/B] ya que cuando x<N=>x%N=x, por lo que puedes quitar todos los if que hay después de los else

Coke-OFF 31/10/2009 18:54

y como la "y" es igual en las dos condiciones, se puede sacar fuera...y el algoritmo quedaria asi...

Código PHP:

for(221<= N;) {
      if(!
cuadrado[x][y]) {
          
cuadrado[x][y] = n++;
        
          if(++
0N;
          else 
N;
      }else {
          if(--
0N;
          else 
N;
      }

      if(--
0N;
      else 
N;


Coke.

antoniogas 31/10/2009 21:13

Muchas gracias, ya está todo simplificado y funciona todo de maravilla,

Ahora tengo una duda, la matriz se imprime valor a valor, es decir, cuadrado[1][1],cuadrado[1][2],etc...me gustaria que imprimiese el cuadrado mágico de forma que se imprima el 1 en la posición que esté, luego el 2 y así sucesivamente, hasta el 49.

Esto se podría hacer, es muy lioso??

Salu2 y gracias por todo.

Coke-OFF 02/11/2009 02:11

si es una aplicacion de consola, como es el caso...no es posible, ya que la funcion printf(); imprime en pantalla como si de una maquina de escribir se tratara...

Coke.

antoniogas 02/11/2009 04:01

Cita:

Iniciado por Coke (Mensaje 3904017)
si es una aplicacion de consola, como es el caso...no es posible, ya que la funcion printf(); imprime en pantalla como si de una maquina de escribir se tratara...

Coke.

Vale,no pasa nada,muchisimas gracias por todo,si necesitais algo,aqui me teneis.
Salu2

antoniogas 02/11/2009 13:11

Hola de nuevo, perdonad por ser tan pesado, pero es que sigo encabezonado en imprimir la matriz por orden :D

Por ahora he conseguido imprimirla del uno al 45, pero no entiendo porqué se para en el 46, cuando deberia de seguir hasta el 49.

Os dejo todo el código, lo que he hecho yo para imprimirlo por orden, está al final del código.

Cita:

/*Programa que imprime un cuadrado magico impar*/
#include <stdio.h>
#include <conio.h>

main()
{
int cubo[7][7],x,y,n,p,f,me,pfila,pcolumna,ma,num;

printf( "\nCuadrado Magico de orden %dx%d :\n\n",7,7);

/*Se inicia los elementos del cuadrado magico con ceros*/
for(x=0;x<7;x++)
{
for(y=0;y<7;y++)
{
cubo[x][y]=0;
}
}
/*Se aplica el algoritmo general para obtener cuadrados magicos de orden impar*/
x=7/2;
y=2;
for(n=1;n<=7*7;)
{
if(!cubo[x][y]) /*si el elemento seleccionado es cero*/
{
cubo[x][y]=n++; /*se inserta un número natural */

if(++x<0)
x=7+x%7;
else
x=x%7;
}
else
{
if(--x<0)
x=7+x%7;
else
x=x%7;
}
if(--y<0)
y=7+y%7;
else
y=y%7;
}
/*se imprime el cuadrado magico en pantalla*/
ma=2;
me=0;
do
{
for(x=0;x<7;x++)
{
for(y=0;y<7;y++)
{
if(cubo[x][y]>me && cubo[x][y]<ma)
{
num=cubo[x][y];
pfila=3*(x+10);
pcolumna=y+10;
gotoxy(pfila,pcolumna);
printf("%d",num);
getch();
me++;
ma++;
x=0;
y=0;
}
}
}
}
while(num>49);
}
Bueno, ahora se imprime hasta el 45, y quedan 4 por imprimir y no se porque...

Salu2

Coke-OFF 02/11/2009 15:00

otias, po si se puede...nunca me lo habia planteado...bueno a lo que vamos.

en el bucle te falla la y...la igualas a 0, pero luego se incrementa por lo que el 46 que esta en cubo[0][0] no lo encuentra.

y = -1;

si quieres poder compilar el codigo con cualquier compilador, no uses gotoxy(); que es de Borland...usa esta funcion...por ejemplo, necesita la libreria "windows.h".

Código PHP:

void Migotoxy(int xint y) {
    
COORD coord;
    
coord.x;
    
coord.y;
    
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);


Coke.

antoniogas 02/11/2009 16:27

Hola coke, prefiero usar el gotoxy, ya que nosotros en clase nos han explicado el gotoxy (usamos borland en clase) y prefiero usar lo que ha explicado.

Si a x e y, le doy valor -1 en vez de 0, la matriz no se imprime correctamente, el 2 lo posiciona en otro lugar en vez del que debe ir, eso ya lo habia probado, y no funciona.

No entiendo porque la posicion 0,0 no la encuentra, cuando deberia encontrarla correctamente.

Salu2

antoniogas 02/11/2009 16:30

Buenas de nuevo coke, he igualado la y a -1, (yo igualaba la "x" y la "y", y el error era que la x no habia que igualarla a -1).

Ahora si me sale todo correctamente y todo conforme me lo pidieron que lo entregara.

El codigo quedaria así:

[quote]/*Programa que imprime un cuadrado magico impar*/
#include <stdio.h>
#include <conio.h>

main()
{
int cubo[7][7],x,y,n,ma,me,num,pfila,pcolumna,p,f;

printf( "\nCuadrado Magico de orden %dx%d :\n\n",7,7);

/*Se inicia los elementos del cuadrado magico con ceros*/
for(x=0;x<7;x++)
{
for(y=0;y<7;y++)
{
cubo[x][y]=0;
}
}

x=7/2;
y=2;
for(n=1;n<=7*7;)
{
if(!cubo[x][y]) /*si el elemento seleccionado es cero*/
{
cubo[x][y]=n++; /*se inserta un número natural */

if(++x<0)
x=7+x%7;
else
x=x%7;
}
else
{
if(--x<0)
x=7+x%7;
else
x=x%7;
}
if(--y<0)
y=7+y%7;
else
y=y%7;
}
/*se imprime el cuadrado magico en pantalla*/
ma=2;
me=0;
do
{
for(x=0;x<7;x++)
{
for(y=0;y<7;y++)
{
if(cubo[x][y]>me && cubo[x][y]<ma)
{
num=cubo[x][y];
pfila=3*(x+5);
pcolumna=y+5;
gotoxy(pfila,pcolumna);
printf("%d",num);
getch();
me++;
ma++;
x=0;
y=-1;
}
}
}
}
while(num>49);

p=(7*(7*7+1)/2);
for(f=5;f<=11;f++)
{
gotoxy(35,f);
printf(" ==> La suma de la fila es: %d",p);
}
printf("\n\n La suma de cada una de las filas, columnas y diagonales es: %d\n\n",(7*(7*7+1))/2); /*se imprime la suma*/
getch();
}[/quote]

Muchas gracias por todo, habeis sido de gran ayuda.

Salu2

Coke-OFF 02/11/2009 18:31

de nada Antonio...una ultima cosa...

if(x > 0 && x < 2) == if(x == 1)
if(x > 1 && x < 3) == if(x == 2)
.
.
.
por lo que el bucle, se puede poner asi...

Código PHP:

num 1;

do {
    for(
07x++) {
        for(
07y++) {
            if(
cubo[x][y] == num) {
                
pfila * (5);
                
pcolumna 5;
                
gotoxy(pfilapcolumna);            
                
printf("%d"num);
                
getch();                
                
0;
                
= -1;
                
num++;
            }
        }
    }
}while(
num 50); 

un saludo.

Coke.

antoniogas 02/11/2009 19:29

Muchas gracias de nuevo por todo coke.
Salu2


La franja horaria es GMT +2. Ahora son las 14:42.

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
ZackYFileS - Foros de Debate