ayuda en operacion con matriz

Iniciado por kiara_luna, 11 Septiembre 2011, 22:00 PM

0 Miembros y 1 Visitante están viendo este tema.

kiara_luna

hola tengo el siguiente programa,  que guarda 4 numeros en una matriz, pero quiero realizar una division entre el numero que se encuentra guardado en matris[1][1] y el total de columna que sería asi:  P= matris[1][1]/totalc, el problema es que en la impresion de este resultado siempre me vota r=0.0, que hacer ayuda.... a continuacion envio mi codigo para que me indiquen en que estoy fallando.

int f,c,nume,sum=0, sumf=0, totalf=0, totalc=0;
double P=0, a=0;
int matris[2][2],fil[2],col[2]; // matris= matriz fil= filas col=columnas


printf("\n PROBABILIDAD CONDICIONAL" );
printf("\n");


for(f=0; f<2; f++)
{
for(c=0; c<2; c++)
{
printf("\n Introduzca la cantidad de moleculas "); 
scanf("%d",&nume);
matris[f][c]=nume;
}
}
// printf("\n ");
printf("\n Matriz 2x2 ");
for(f=0; f<2; f++)
{
printf("\n ");
for(c=0; c<2; c++)
{
  printf("\n ");   
printf(" %d", matris[f][c]);
}
printf("\n ");
}




for(f=0; f<2; f++)
{
for(c=0; c<2; c++)
{
sumf=matris[f][c]+sumf; //suma de las filas

}
printf("\n Suma de los elementos por Filas: %d", sumf);
fil[f]=sumf;
totalf=totalf+fil[f];
//printf("\n Suma total Fila 1: %d", totalf);
sumf=0;

}
printf("\n Suma total de las Filas 1 y 2: %d", totalf);


//cargar el vector por columnas
for(c=0; c<2; c++)
{
for(f=0; f<2; f++)
{
sum=matris[f][c]+sum; //suma de las columnas
}
printf("\n Suma de los elementos por columnas %d", sum);
col[c]=sum;
totalc=totalc+col[c];
sum=0;
}
printf("\n Suma total columnas 1 y 2: %d", totalc);
printf("\n Suma total fila 2: %d", fil[1]);
printf("\n");
a= (fil[1]/totalc);
printf("Pa: %5.1lf\n",a);
printf("\n");
P=((matris[1][1])/(totalc));
printf("P(B¦A): %f\n",P);

printf("matriz i.i: %d\n",matris[1][1]);



getch();

}
kiara

rir3760

Si necesitas ayuda empieza dando todas las facilidades para que eso sea posible publicando el programa completo y utilizando las etiquetas "code" para visualizar correctamente el código fuente.

Un error en tu programa es realizar divisiones entre valores enteros (tipo int):
a = (fil[1] / totalc);
/* ... */
P = ( (matris[1][1]) / (totalc) );

En ambos casos si el primer operando de la división es menor que el segundo el resultado sera cero. Para evitarlo debes convertir uno de ellos al tipo "double", por ejemplo:
a = (double) fil[1] / totalc;
/* ... */
P = (double) matris[1][1] / totalc;


Y no necesitas de las variables "a" y "P", puedes colocar la expresión (la división) como argumento de la función "printf". Por ultimo el especificador de formato para el tipo "double" es "%f" (utilizas "%lf" en la primera llamada).

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

kiara_luna

ok, gracias, problema resuelto. =)
kiara