[ Foro de C ]

No se ejecuta el programa

08-Jul-2021 00:59
Invitado (Ayuda con un codigo c)
2 Respuestas

Trate pasar un codigo c++ a c pero no se ejecuta, me ayudan?

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

int main()
{
int mat[3][3];
int n,i,j,num,suma,cont;
printf("\n\tCuadrado Magico");
printf("\tValores de 1 al 9 ( los numeros no se deben repitir)\n");
printf("\n\tINGRESE LA MATRIZ\n");



for (i=1;i<=3;i++)
{
for (j=1;j<=3;j++)
{
do
{ printf("\tValor");
}
while(num<1 || num>9);
mat[i][j]=num;

}
}
// Imprime la matriz
for (i=1;i<=3;i++)
{
printf("\n\t");
for (j=1;j<=3;j++)
{


printf("\t");
}
}
cont=0; num=0;
//sumando filas
for (i=1;i<=3;i++)
{ suma=0;
for (j=1;j<=3;j++)
{
suma+=mat[i][j];
}
if(i==1)
{ num=suma;
}
if(num==suma)
{
cont++;
}
}


//Suma las columnas


for (i=1;i<=3;i++)
{ suma=0;
for (j=1;j<=3;j++)
{
suma+=mat[j][i];
}
if(num==suma)
{
cont++;
}
}


//Suma las diagonales


suma=0;
suma+=mat[1][1];
suma+=mat[2][2];
suma+=mat[3][3];
if(num==suma)
{ cont++;
}
suma=0;
suma+=mat[1][3];
suma+=mat[2][2];
suma+=mat[3][1];


if(num==suma)
{
cont++;
}
if (cont==8)
{
printf("\n\tEs un cuadro magico");
}
else
{ printf("\n\tNo es un cuadro magico");
}
system("pause");
}


11-Jul-2021 16:44
Invitado (tico)

hola invitado

el problema que le veo así de primeras, además de la mala identación es que la variable num contiene basura ya que nunca recibe ningun valor por lo que entra en un bucle sin infinito

si su valor  no esta entre los parametros que es lo mas normal al tener basura y no sale de ahí ya que nunca cambia porque no recibe ningún valor

suerte ;-)


11-Jul-2021 17:08
Invitado (tico)

hola invitado yo otra vez

he visto que tienes unos cuantos fallos, lo principal es que un array de 3x3 sus indices van de 0 a 2, por lo que en caso de que rellenes num correctamente cosa que ahora no hace, lo guardaras fuera de la zona reservada y te dará un fallo o simplemente funcionara mal ya que usas mat[3][3] que esta fuera de su zona reservada

cuando pones que imprimes la matriz en ningún momento la imprimes

num lo usas para muchas cosas por lo que no esta claro cual es su función

cont lo incremetas e incrementas pero no lo usas

si usas getchar en vez de pause, te ahorras una libreria y es mas seguro

suma no la guardas en ningún lado y la pierdes cada vez

... por no seguir mas vale que empiezes de nuevo y te hagas un diagrama de flujo y veas que ahí te funciona

suerte ;-)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)