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.
Respuestas
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");
}