Pcs2d

Punto 2 - Taller 4 - Estructuras en C

Mar 5th, 2015
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.46 KB | None | 0 0
  1. /*
  2.  * File:   racionales.h
  3.  * Author: ***
  4.  *
  5.  * Created on 3 de marzo de 2015, 10:37 PM
  6.  */
  7.  
  8. #include <stdbool.h>
  9. #ifndef racionales
  10. #define racionales
  11.  
  12. #ifdef  __cplusplus
  13. extern "C" {
  14. #endif
  15.  
  16.  
  17.  
  18.  
  19. #ifdef  __cplusplus
  20. }
  21. #endif
  22.  
  23. #endif  /* racionales */
  24.  
  25. /*Definicion de estructura*/
  26. typedef struct{
  27.     int num;/*numerador*/
  28.     int den;/*denominador*/
  29. }fracc;
  30.  
  31. /*
  32.  * escanea por teclado valores para una estructura
  33.  */
  34. void scanfracc(fracc * f){
  35.     printf("Scan numerador: ");
  36.     scanf("%i", &(f->num));
  37.     printf("Scan denominador: ");
  38.     scanf("%i", &(f->den));
  39. }
  40.  
  41. /*
  42.  * Imprime en pantalla un fraccionario
  43.  */
  44. void printfracc(fracc f){
  45.     printf("\n%i/%i ", f.num, f.den);
  46. }
  47.  
  48. /*
  49.  * Analiza si un fraccionario es valido
  50.  */
  51. bool valido(fracc f){
  52.     bool r = true;
  53.     if(f.den <= 0 || f.num <= 0){
  54.         r = false;
  55.     }
  56.     return r;
  57. }
  58.  
  59. /*
  60.  * Analiza si un fraccionario es propio o impropio
  61.  */
  62. bool propio(fracc f){
  63.     bool r = false;
  64.     if(f.num >= f.den){
  65.         r = true;
  66.     }
  67.     return r;
  68. }
  69.  
  70. /*
  71.  * Analiza si dos fraccionarios son equivalentes
  72.  */
  73. bool equivalente(fracc n, fracc m){
  74.     bool r = false;
  75.     int a, b;
  76.     a = n.num * m.den;
  77.     b = n.den * m.num;
  78.     if(a == b){
  79.         r = true;
  80.     }
  81.     return r;
  82. }
  83.  
  84.  
  85. /*
  86.  * Analiza si dos fraccionarios son homogeneos
  87.  */
  88. bool homogeneos(fracc n, fracc m){
  89.     bool r = false;
  90.     if(n.den == m.den){
  91.         r = true;
  92.     }
  93.     return r;
  94. }
  95.  
  96.  
  97. /*
  98.  * Suma dos fraccionarios si son homogeneos, si no lo son ¡tambien!
  99.  */
  100. void sumafracc(fracc n, fracc m, fracc * r){
  101.     bool b = homogeneos(n, m) ? true : false;
  102.     if(b == true){
  103.         r->num = (n.num * m.den) + (n.den * m.num);
  104.         r->den = m.den;
  105.     }else{
  106.         r->num = (n.num * m.den) + (n.den * m.num);
  107.         r->den = n.den * m.den;
  108.     }
  109. }
  110.  
  111.  
  112. /*
  113.  *Multplica dos fracciones
  114.  */
  115. void multifracc(fracc n, fracc m, fracc * r){
  116.     r->num = n.num * m.num;
  117.     r->den = n.den * m.den;
  118. }
  119.  
  120. /***************************Fin de archivo "racionales.h"****************************************/
  121.  
  122. /*
  123.  * File:   main.c
  124.  * Author: ***
  125.  *
  126.  * Created on 4 de marzo de 2015, 10:17 PM
  127.  */
  128.  
  129. #include <stdio.h>
  130. #include <stdlib.h>
  131. #include "racionales.h"
  132.  
  133. /*
  134.  *Funcion de funciones
  135.  */
  136.  
  137. int main(){
  138.     fracc n, m, r;
  139.     bool b;
  140.     int selector, iniciador = 1;
  141.     printf("Bienvenido\n");
  142.     do{
  143.         printf("\n");
  144.         printf("Digite el numero de la operacion a realizar:\n");
  145.         printf("1. Es valido o no valido?\n");
  146.         printf("2. Es propio o impropio?\n");
  147.         printf("3. Es equivalente?\n");
  148.         printf("4. Son homogeneos?\n");
  149.         printf("5. Suma de dos fraccionarios\n");
  150.         printf("6. Multiplicacion de dos fraccionarios\n");
  151.         printf("0. terminar\n");
  152.         printf("... ");
  153.         scanf("%i", &selector);
  154.         switch(selector){
  155.             case 1:
  156.                 scanfracc(&n);
  157.                 b = valido(n);
  158.                 if(b == true){
  159.                     printf("\nes valido ");
  160.                     printfracc(n);
  161.                     printf("\n");
  162.                 }else{
  163.                     printf("\nno es valido ");
  164.                     printf("\n");
  165.                 }
  166.                 break;
  167.             case 2:
  168.                 scanfracc(&n);
  169.                 b = valido;
  170.                 if(b == true){
  171.                     b = propio(n);
  172.                     if(b == true){
  173.                         printf("\nes propio ");
  174.                         printfracc(n);
  175.                         printf("\n");
  176.                     }else{
  177.                         printf("\nes impropio ");
  178.                         printfracc(n);
  179.                         printf("\n");
  180.                     }
  181.                 }else{
  182.                     printf("\nno es valido ");
  183.                     printf("\n");
  184.                 }
  185.                 break;
  186.             case 3:
  187.                 scanfracc(&n);
  188.                 scanfracc(&m);
  189.                 b = equivalente(n, m);
  190.                 if(b == true){
  191.                     printf("\nson quivalente ");
  192.                     printfracc(n);
  193.                     printfracc(m);
  194.                     printf("\n");
  195.                 }else{
  196.                     printf("\nno son equivalentes ");
  197.                     printfracc(n);
  198.                     printfracc(m);
  199.                     printf("\n");
  200.                 }
  201.                 break;
  202.             case 4:
  203.                 scanfracc(&n);
  204.                 scanfracc(&m);
  205.                 b = homogeneos(n, m);
  206.                 if(b == true){
  207.                     printf("\nson homogeneos ");
  208.                     printfracc(n);
  209.                     printfracc(m);
  210.                     printf("\n");
  211.                 }else{
  212.                     printf("\nno son homogeneos ");
  213.                     printfracc(n);
  214.                     printfracc(m);
  215.                     printf("\n");
  216.                 }
  217.                 break;
  218.             case 5:
  219.                 scanfracc(&n);
  220.                 scanfracc(&m);
  221.                 sumafracc(n, m, &r);
  222.                 printfracc(r);
  223.                 printf("\n");
  224.                 break;
  225.             case 6:
  226.                 scanfracc(&n);
  227.                 scanfracc(&m);
  228.                 multifracc(n, m, &r);
  229.                 printfracc(r);
  230.                 printf("\n");
  231.                 break;
  232.             case 0:
  233.                 return 0;
  234.         }
  235.     }while(iniciador == 1);
  236.     return 0;
  237. }
Advertisement
Add Comment
Please, Sign In to add comment