Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problemas con Programa en C

Estas en el tema de Problemas con Programa en C en el foro de C/C++ en Foros del Web. Buenos días, estoy haciendo una rutina en c que resuelva una matriz por el método del pivote, mi problema viene cuando intento hacer una división ...
  #1 (permalink)  
Antiguo 20/01/2016, 12:19
 
Fecha de Ingreso: enero-2016
Mensajes: 2
Antigüedad: 8 años, 3 meses
Puntos: 0
Problemas con Programa en C

Buenos días, estoy haciendo una rutina en c que resuelva una matriz por el método del pivote, mi problema viene cuando intento hacer una división lo cual necesito hacer para completar o proseguir con el método. aquí mando el código subrayando la lineas donde esta el problema muchas gracias.

#include <iostream>
#include <conio.h>
#include <stdlib.h>

int main() {
int op,i,j,n,d,x,c=1,matz1[3][4],matz2[4][5],a=0,b=0,r=0;
float r1;
char matz3[5][6];
printf("Bienvenidos al Programa de Prueba");
do{



printf("Cual de estas opciones quiere realizar?\n 1)Matriz 3x3 \n 2)Matriz 4x4 \n 3)Matriz 5x5 \n");
scanf("%d", &op);
switch(op){
case 1:
for(i=1;i<=3;i++){
if(i==2)
c=1;
if(i==3)
c=1;
for(j=1;j<=4;j++){

if(j<4){
printf("Ingrese los datos de la ecuacion en la posicion %d %d: ",i,j);
scanf("%d",&n);
matz1[i][j]=n;}
if(j==4){
printf("Ingrese el resultado de la ecuacion: ");
scanf("%d",&n);
matz1[i][j]=n;
}


}
}
system("cls");
printf("Esta es su matriz resultante:\n");
for(i=1;i<=3;i++){
for(j=1;j<=4;j++){

if(j==1){
printf("\n");
}
if(j==4){
printf("=");
}
printf(" %d ",matz1[i][j]);

}
}

printf("\nF2=F1+(-a11/a21)*F2\n");
a=matz1[1][1];
b=matz1[2][1];
r=a/b
printf("el resultado de la division es:%f",r1);


}
printf("\nSi desea continuar presione 1\n");
scanf("%d",&d);
break;

case 2:
for(i=1;i<=4;i++){
for(j=1;j<=5;j++){
printf("Ingrese los datos de la primera ecuacion posicion %d %d: ",i,j);
scanf("%d",&n);
matz2[i][j]=n;
}
}
system("cls");
printf("Esta es su matriz resultante:\n");
for(i=1;i<=4;i++){
for(j=1;j<=5;j++){
if(j==1){
printf("\n");
}
if(j==5){
printf("=");
}
printf(" %d ",matz2[i][j]);

}
}
printf("\nSi desea continuar presione 1\n");
scanf("%d",&d);
break;

case 3:
for(i=1;i<=5;i++){
for(j=1;j<=6;j++){
printf("Ingrese el dato de la posicion %d %d: ",i,j);
scanf("%d",&n);
matz3[i][j]=n;
}
}
system("cls");
printf("Esta es su matriz resultante:\n");
for(i=1;i<=5;i++){
for(j=1;j<=6;j++){
if(j==1){
printf("\n");
}
if(j==6){
printf("=");
}
printf(" %d ",matz3[i][j]);

}
}
printf("\nSi desea continuar presione 1\n");
scanf("%d",&d);

break;

default:
printf("Opcion Invalida, si desea continuar presione 1\n");
scanf("%d",&d);
break;


}
}while(d==1);
return 0;
}
  #2 (permalink)  
Antiguo 20/01/2016, 14:05
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Problemas con Programa en C

En primer lugar, bienvenido al foro.

A falta de más comprobaciones (por favor, utiliza los highlight, si no resulta difícil leer el código), el problema parece ser que a, b, r y las matrices matz las has declarado de tipo entero. La división r=a/b es una división entera, por lo que solamente te conserva el cociente y pierdes el resto. Empieza por declarar esas matrices como tipo float o double (mejor double). Lógicamente, tendrás que cambiar también las especificaciones de formato de scanf y printf.

Saludos,
  #3 (permalink)  
Antiguo 20/01/2016, 16:15
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Problemas con Programa en C

Cita:
Iniciado por Fw190 Ver Mensaje
el problema parece ser que a, b, r y las matrices matz las has declarado de tipo entero. La división r=a/b es una división entera, por lo que solamente te conserva el cociente y pierdes el resto. Empieza por declarar esas matrices como tipo float o double (mejor double). Lógicamente, tendrás que cambiar también las especificaciones de formato de scanf y printf.

Saludos,
Yo iría un pelín más lejos.

Código C:
Ver original
  1. r=a/b
  2. printf("el resultado de la division es:%f",r1);

aparte de lo comentado por Fw190, si guardas el resultado de la división en r y después imprimes el valor de r1 espero que entiendas que al ser variables diferentes el valor no va a viajar por arte de magia de una variable a la otra.

Por eso siempre digo... usad nombres coherentes para las variables en los que quede clara su utilidad.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.

Etiquetas: char, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:39.