Calculadora con struct

Iniciado por Constantinoplero, 15 Enero 2012, 14:09 PM

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

Constantinoplero

Buenas,

Mi universidad está muy bien organizada, y para que yo pudiera ir a la revisión de un examen de cierta asignatura, tuve que perderme la clase de Informática, y justo dieron struct, por lo que ando un poco perdido.

Me han mandado un ejercicio que consiste en admitir dos fracciones de numeros naturales, hacer la suma, resta, división o multiplicación según me pidan, simplificarlas y devolver el valor.

Hasta ahora tengo esto:

VOLVERÉ A PONER EL CÓDIGO ESTA NOCHE. MOTIVO EN EL ÚLTIMO POST.

¿Cómo puedo continuar? No sé cómo hacer para que admita una segunda fracción ni como encarar para hacer las operaciones (funciones aparte?)...

EDITO: Estoy haciendo avances y ya se cómo hacer para pedirme dos.

Gracias.
Más que buenos principios prefiero mejores finales.

Constantinoplero

#1
Sigo avanzando... Ahora sólo me falta arreglar que los resultados no me den siempre 0/0... ¿Sabéis por qué es?

VOLVERÉ A PONER A EL CÓDIGO ESTA NOCHE. MOTIVO ABAJO.
Más que buenos principios prefiero mejores finales.

rir3760

La primera recomendación es elegir un lenguaje (C o C++) y enfocarte solo en el, el otro mejor piensa que no existe.

Ello porque así solo tienes que lidiar con un lenguaje, el otro escenario es aprender ambos junto con sus diferencias y si apenas estas empezando lo mejor es lo sencillo.

El programa no funciona correctamente porque (entre otras cosas) comparas el operador con las variables s, r, p y d. Ellas son variables y su valor inicial es "no definido" o "basura" (difícil que haya una coincidencia).

La declaración de la estructura "c" debes colocarla fuera del cuerpo de los condicionales.

Y para comparar el operador debes hacerlo con los caracteres literales 's', 'r', 'p' y 'd'.

Por ejemplo en el primer caso:
Código (cpp) [Seleccionar]
struct fraccion c;

if (operacion == 's'){
   c.numerador = (a.numerador*b.denominador) +  (b.numerador*a.denominador);
   c.denominador=a.denominador*b.denominador;
}


Por ultimo trata de utilizar nombres descriptivos pero cortos.

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

Constantinoplero

Oh, ¡gracias!

Lo de las variables entre comillas debería haber caído, aunque lo de poner struct fuera de los condicionales jamás lo sabría...

Gracias. Ahora sólo me falta simplificarlas, que supongo será con el MCD...

PD: Borro el código, que hay gente de mi clase buscando por internet y podrían copiarlo. Lo pongo otra vez a las 00:00 de hoy, que es cuando acaba el plazo.
Más que buenos principios prefiero mejores finales.