Hola, me pueden ayudar como pasar este codigo c++ a c por favor?
Lo necesito, es para un trabajo importante

#include "iostream"
#include "conio.h"
using namespace std;
int main()
{
int mat[4][4];
int n,i,j,aux,suma,cont;
cout<<" \n \n \t \t \t \tCuadrado Magico \n \n";
cout<<"\t \t Valores de 1 al 9 ( los numeros no se deben repitir)\n \n\n";
cout<<"\n \t \t \t \tINGRESE LA MATRIZ \n\n";



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

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


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


//Suma las columnas


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


//Suma las diagonales


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


if(aux==suma)
{
cont++;
}
if (cont==8)
{
cout<<"\n\n \t \t \t \t Es un cuadro magico";
}
else
{ cout<<"\n \n\t \t \t \t No es un cuadro magico";
}
getch();
}

Se agradece de antemano, gracias.


dm908: Gracias por nada

Respuestas

Respuesta dada por: LeonardoDY
3

Vamos a analizar el código de C++ para pasarlo a C, comenzando por citar que conio.h no es una librería ANSI C estándar, tampoco lo es la función getch() que está en esa librería. Por lo que podría no compilar en algunos IDEs. En ese caso Podemos reemplazarla por una función delay() para que la ventana de la consola nos permita ver el resultado por unos segundos antes de cerrarse automáticamente.

La biblioteca "iostream" permite usar los flujos de C++ por lo que no es necesaria, sí lo es la librería "stdio.h". La impresión de datos serán realizada por la función printf mientras que el ingreso de datos se hará por la función scanf.

Además, los elementos de un arreglo se cuentan desde el elemento 0 hasta el elemento n-1, no desde el elemento 1, esta incidencia no se corregirá en esta instancia. Por lo que el código queda:

int main()

{

      int        mat[4][4];

      int        n, i, j, aux, suma, cont;

      printf("\n\n\t\t\tCuadrado Mágico\n\n");

      printf("\t\tValores del 1 al 9(los valores no se deben repetir)\n\n\n");

      printf("\n\t\t\t\t INGRESE LA MATRIZ\n\n");

      for(i=1;i<=3;i++){

             for(j=1;j<=3;j++){

                  do{

                           printf("Valor (%d,%d):", i, j);

                           scanf("%d",&aux);

                  }while(aux<1||aux>9);

                  mat[i][j]=aux;

             }

      }

      //Imprime la matriz

      for(i=1;i<=3;i++){

                printf("\n\t\t\t\t");

                for(j=1;j<=3;j++)

                           printf("%d\t", mat[i][j]);

      }

      cont=aux=0;

      //sumando filas

      for(i=1;i<=3;i++){

           suma=0;

           for(j=1;i<=3;j++){

                 suma+=mat[i][j];

           }

           if(i==1) aux=suma;

           if(aux==suma) cont++;

      }

      //Suma las columnas

      for(i=1;i<=3;i++){

            suma=0;

            for(j=1;j<=3;j++){

                   suma+=mat[j][i];

            }

            if(aux==suma) cont++;

       }

      //Suma de las diagonales

       suma=0;

       suma=mat[1][1]+mat[2][2]+mat[3][3];

       if(aux==suma) cont++;

       suma=mat[1][3]+mat[2][2]+mat[3][1];

      if(aux==suma) cont++;

       if(cont==8) printf("\n\n\t\t\t\tEs un cuadro mágico");

       else  printf("\n\n\t\t\t\tNo es un cuadro mágico");

}

Preguntas similares