Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * File: racionales.h
- * Author: ***
- *
- * Created on 3 de marzo de 2015, 10:37 PM
- */
- #include <stdbool.h>
- #ifndef racionales
- #define racionales
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif /* racionales */
- /*Definicion de estructura*/
- typedef struct{
- int num;/*numerador*/
- int den;/*denominador*/
- }fracc;
- /*
- * escanea por teclado valores para una estructura
- */
- void scanfracc(fracc * f){
- printf("Scan numerador: ");
- scanf("%i", &(f->num));
- printf("Scan denominador: ");
- scanf("%i", &(f->den));
- }
- /*
- * Imprime en pantalla un fraccionario
- */
- void printfracc(fracc f){
- printf("\n%i/%i ", f.num, f.den);
- }
- /*
- * Analiza si un fraccionario es valido
- */
- bool valido(fracc f){
- bool r = true;
- if(f.den <= 0 || f.num <= 0){
- r = false;
- }
- return r;
- }
- /*
- * Analiza si un fraccionario es propio o impropio
- */
- bool propio(fracc f){
- bool r = false;
- if(f.num >= f.den){
- r = true;
- }
- return r;
- }
- /*
- * Analiza si dos fraccionarios son equivalentes
- */
- bool equivalente(fracc n, fracc m){
- bool r = false;
- int a, b;
- a = n.num * m.den;
- b = n.den * m.num;
- if(a == b){
- r = true;
- }
- return r;
- }
- /*
- * Analiza si dos fraccionarios son homogeneos
- */
- bool homogeneos(fracc n, fracc m){
- bool r = false;
- if(n.den == m.den){
- r = true;
- }
- return r;
- }
- /*
- * Suma dos fraccionarios si son homogeneos, si no lo son ¡tambien!
- */
- void sumafracc(fracc n, fracc m, fracc * r){
- bool b = homogeneos(n, m) ? true : false;
- if(b == true){
- r->num = (n.num * m.den) + (n.den * m.num);
- r->den = m.den;
- }else{
- r->num = (n.num * m.den) + (n.den * m.num);
- r->den = n.den * m.den;
- }
- }
- /*
- *Multplica dos fracciones
- */
- void multifracc(fracc n, fracc m, fracc * r){
- r->num = n.num * m.num;
- r->den = n.den * m.den;
- }
- /***************************Fin de archivo "racionales.h"****************************************/
- /*
- * File: main.c
- * Author: ***
- *
- * Created on 4 de marzo de 2015, 10:17 PM
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include "racionales.h"
- /*
- *Funcion de funciones
- */
- int main(){
- fracc n, m, r;
- bool b;
- int selector, iniciador = 1;
- printf("Bienvenido\n");
- do{
- printf("\n");
- printf("Digite el numero de la operacion a realizar:\n");
- printf("1. Es valido o no valido?\n");
- printf("2. Es propio o impropio?\n");
- printf("3. Es equivalente?\n");
- printf("4. Son homogeneos?\n");
- printf("5. Suma de dos fraccionarios\n");
- printf("6. Multiplicacion de dos fraccionarios\n");
- printf("0. terminar\n");
- printf("... ");
- scanf("%i", &selector);
- switch(selector){
- case 1:
- scanfracc(&n);
- b = valido(n);
- if(b == true){
- printf("\nes valido ");
- printfracc(n);
- printf("\n");
- }else{
- printf("\nno es valido ");
- printf("\n");
- }
- break;
- case 2:
- scanfracc(&n);
- b = valido;
- if(b == true){
- b = propio(n);
- if(b == true){
- printf("\nes propio ");
- printfracc(n);
- printf("\n");
- }else{
- printf("\nes impropio ");
- printfracc(n);
- printf("\n");
- }
- }else{
- printf("\nno es valido ");
- printf("\n");
- }
- break;
- case 3:
- scanfracc(&n);
- scanfracc(&m);
- b = equivalente(n, m);
- if(b == true){
- printf("\nson quivalente ");
- printfracc(n);
- printfracc(m);
- printf("\n");
- }else{
- printf("\nno son equivalentes ");
- printfracc(n);
- printfracc(m);
- printf("\n");
- }
- break;
- case 4:
- scanfracc(&n);
- scanfracc(&m);
- b = homogeneos(n, m);
- if(b == true){
- printf("\nson homogeneos ");
- printfracc(n);
- printfracc(m);
- printf("\n");
- }else{
- printf("\nno son homogeneos ");
- printfracc(n);
- printfracc(m);
- printf("\n");
- }
- break;
- case 5:
- scanfracc(&n);
- scanfracc(&m);
- sumafracc(n, m, &r);
- printfracc(r);
- printf("\n");
- break;
- case 6:
- scanfracc(&n);
- scanfracc(&m);
- multifracc(n, m, &r);
- printfracc(r);
- printf("\n");
- break;
- case 0:
- return 0;
- }
- }while(iniciador == 1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment