Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/07/2008, 12:24
sagitariosTheBest
 
Fecha de Ingreso: diciembre-2005
Mensajes: 201
Antigüedad: 18 años, 5 meses
Puntos: 2
Pregunta Traducir programa en C a php !

Alguien me puede ayudar a traducir este codigo en C para php??

muchas gracias de ante mano

el codigo se encuentra en este link:
http://www.jaterli.com/codigo-fuente...n-C-1/382.html

salu2

esto es lo que llevo en este momento, solo que no se que usar en vez del scanf de C no se como acomodar esta parte en php.


Código PHP:
<?php
/*Variables Globales */

 
$matriz[50][50];
 
$identidad[50][50];
 
$n//$n $$contiene el tama¤o de la matriz cuadrada


/*Funciones*/

hallar_inversa();
escalonar_matriz();
permutar_filas($fila1$fila2);
multip_fila($fila,$factor);
sumar_fila_multip($fila1,$fila2$factor);
ceros_abajo($fila_pivote, $$columna_pivote);
ceros_arriba($fila_pivote, $$columna_pivote);
generar_matriz_identidad();

/*cuerpo*/

function main()
{
global 
$matriz,$identidad,$n;
$fi;
$co;
do{

print(
"Ingrese el tama¤o de la matriz cuadrada: ");
scanf("%i",&$n);
if(
$n>50 || $n<2) {printf("El numero debe estar entre 2 y 50n");}
}while(
$n>50 || $n<2);

for(
$fi=0;$fi<$n;$fi++)
{
for(
$co=0;$co<$n;$co++)
{
printf("Ingrese el valor de matriz[%i][%i]",$fi+1,$co+1);
scanf("%lf",&matriz[$fi][$co]);
}
}

hallar_inversa();

return 
0;
}

/*-------------------------------------------------------------------------*/

function hallar_inversa()
{
global 
$matriz,$identidad,$n;

$cont;
$cont2;
$flag=0;

escalonar_matriz();
generar_matriz_identidad(); //rellena la matriz identidad


for($cont=0;$cont<$n;$cont++) //re$corre $filas
{
for(
$cont2=0;$cont2<$n;$cont2++) //re$corre $columnas
{
if(
$matriz[$cont][$cont2]!=0//busca pivote (elemento ditinto de 0)
{
if(
$matriz[$cont][$cont2]!=1//si pivote no es 1, se lo multiplica
{
multip_fila($cont,pow($matriz[$cont][$cont2],-1));
}

ceros_arriba($cont,$cont2); // se hacen 0's por arriba
ceros_abajo($cont,$cont2); // y por debajo del pivote

break;
}
}
}

/*--------------------------------------------------------------*/
/* Una vez terminada esta operacion, la matriz identidad estara */
/* transformada en la inversa */
/* */
/* Ahora se $comprueba que la matriz original este transformada */
/* en la matriz identidad, de no ser asi la inversa obtenida */
/* no es valida y la matriz no tiena inversa */
/*--------------------------------------------------------------*/


for($cont=0;$cont<$n;$cont++)
{
for(
$cont2=0;$cont2<$n;$cont2++)
{
if(
$cont==$cont2)
{
if(
matriz[$cont][$cont2]!=1flag=1;
}
else
{
if(
matriz[$cont][$cont2]!=0flag=1;
}
}
}



if(
flag==1)
{
printf("nnLa matriz no tiene inversann");
}
else
{
printf("nnLa Matriz Inversa es :nn");

for(
$cont=0;$cont<$n;$cont++)
{
for(
$cont2=0;$cont2<$n;$cont2++)
{
printf("%+#0.3f ",$identidad[$cont][$cont2]);

}
printf("$n");
}
}


printf("nPresione una tecla para continuar...");

}

/*-----------------------------------------------------------------------*/
/* */
/* Ordena la matriz de forma que quede en su forma escalonada por */
/* renglones */
/* */
/*-----------------------------------------------------------------------*/

function escalonar_matriz()
{
global 
$matriz,$identidad,$n;
$cont;
$col;
$ceros;
$vec[10];
$flag
$aux
;

for(
$cont=0;$cont<$n;$cont++)
{
$col=0
$ceros
=0;

if(
$matriz[$cont][$col]==0)
{
do{
$ceros++;
$col++;
}while(
$matriz[$cont][$col]==0);
}
$vec[$cont]=$ceros;
}


do
{
$flag=0;
for(
$cont=0;$cont<$n-1;$cont++)
{
if(
vec[$cont]>vec[$cont+1])
{
$aux=$vec[$cont];
$vec[$cont]=$vec[$cont+1];
$vec[$cont+1]=$aux;

permutar_filas($cont,$cont+1);

$flag=1;
}
}
}while(
$flag==1);

}

/*----------------------------------------------------------------------*/
/* SE DEFI$nE$n LAS 3 OPERACIO$nES ELEME$nTALES DE FILA */
/* */
/* Las operaciones que se le realizen a la matriz para reducirla */
/* tambien deberan realizarsele a la matriz identidad para obtener */
/* la matriz inversa */
/*----------------------------------------------------------------------*/


function permutar_$filas($fila1,$fila2)
{
global 
$matriz,$identidad,$n;
$auxval;
$cont;

for(
$cont=0;$cont<$n;$cont++)
{
$auxval=$matriz[$fila1][$cont];
$matriz[$fila1][$cont]=$matriz[$fila2][$cont];
$matriz[$fila2][$cont]=$auxval;

$auxval=$identidad[$fila1][$cont];
$identidad[$fila1][$cont]=$identidad[$fila2][$cont];
$identidad[$fila2][$cont]=$auxval;
}
}

/*----------------------------------------------------------------------*/

function multip_fila($fila,$factor)
{
global 
$matriz,$identidad,$n;
$cont;

for(
$cont=0;$cont<$n;$cont++)
{
$matriz[$fila][$cont]=($matriz[$fila][$cont])* $factor;
$identidad[$fila][$cont]=($identidad[$fila][$cont])* $factor;
}
}

/*----------------------------------------------------------------------*/

function sumar_fila_multip($fila1,$fila2,$factor)
{
global 
$matriz,$identidad,$n;
$cont;
for(
$cont=0;$cont<$n;$cont++)
{
$matriz[$fila1][$cont]=($matriz[$fila1][$cont])+(($matriz[$fila2][$cont])*$factor);
$identidad[$fila1][$cont]=($identidad[$fila1][$cont])+(($identidad[$fila2][$cont])* $factor);
}
}


function 
ceros_arriba($fila_pivote,$columna_pivote)
{
global 
$matriz,$identidad,$n;
$cont;

for(
$cont=0;$cont<$fila_pivote;$cont++)
{
sumar_fila_multip($cont,$fila_pivote,(($matriz[$cont][$columna_pivote])*(-1)));

}
}

/*-------------------------------------------------------------------------*/
function ceros_abajo($fila_pivote,$columna_pivote)
{
global 
$matriz,$identidad,$n;
$cont;

for(
$cont=$columna_pivote+1;$cont<$n;$cont++)
{
sumar_fila_multip($cont,$fila_pivote,(($matriz[$cont][$columna_pivote])*(-1)));
}

}
/*-------------------------------------------------------------------------*/
function generar_matriz_identidad()
{
global 
$matriz,$identidad,$n;
$i;
$j;
for(
$i=0;$i<50;$i++)
{
for(
$j=0;$j<50;$j++)
{
if(
$i==$j$identidad[$i][$j]=1;
else 
$identidad[$i][$j]=0;
}
}
}
?>

Última edición por sagitariosTheBest; 28/07/2008 a las 12:32 Razón: falto colocar avences de traduccion