Advertisement
link186fr

Estructura Racional, Estructura de Datos en C.

Nov 9th, 2013
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.24 KB | None | 0 0
  1. #include <stdio.h>
  2. //#include <conio.h>
  3. #include <stdlib.h>
  4.  
  5. struct racional{
  6.        int num,den;
  7.        };
  8.        
  9. typedef struct racional Racional;
  10.  
  11. Racional *crear(int,int);
  12. Racional *suma(Racional *,Racional *);
  13. Racional *resta(Racional *,Racional *);
  14. Racional *divide(Racional *,Racional *);
  15. Racional *multiplicacion(Racional *,Racional *);
  16. int igualdad(Racional *,Racional *);
  17. int mcd(Racional *,Racional *);
  18. void imprime(void *);
  19.  
  20. main()
  21. {
  22.        Racional *r1=crear(1,2);
  23.        Racional *r2=crear(5,2);
  24.        Racional *res=suma(r1,r2);
  25.        Racional *sum=resta(r1,r2);
  26.        //Racional *mcdd=mcd(r1,r2);
  27.        imprime(r1);
  28.        printf("\t\n");
  29.        imprime(r2);
  30.        printf("\t\n");
  31.        imprime(res);
  32.        printf("\n");
  33.        imprime(sum);
  34.        printf("\n");
  35.        //imprime(mcdd);
  36.        //printf("\n");
  37.        if(igualdad(r1,r2))
  38.                           printf("\nSon iguales\n");
  39.        //getch();
  40.        return 0;
  41.        }
  42.        
  43. //Funcion que crea el numero racional
  44. Racional *crear(int num,int den){
  45.          Racional *p;
  46.          p=(Racional*)malloc(sizeof(Racional));
  47.          p->num=num;
  48.          p->den=den;
  49.          return p;
  50.          }
  51.          
  52. //Funcion que suma los racionales
  53. Racional *suma(Racional *q1,Racional *q2)
  54. {
  55.     return crear((q1->num*q2->den)+(q2->num*q1->den),q1->den*q2->den);
  56. }
  57.  
  58. //Funcion que resta los racionales
  59. Racional *resta(Racional *q1,Racional *q2)
  60. {
  61.     return crear((q1->num*q2->den)-(q2->num*q1->den),q1->den*q2->den);
  62. }
  63.  
  64. //Funcion que multiplica los racionales
  65. Racional *multiplicacion(Racional *q1,Racional *q2)
  66. {
  67.     return crear(q1->num*q2->num,q1->den*q2->den);
  68. }
  69.                  
  70. //Funcion que divide los racionales
  71. Racional *divide(Racional *q1,Racional *q2)
  72. {
  73.     return crear(q1->num*q2->den,q1->den*q2->num);
  74. }
  75.          
  76. //Funcion que compara si son iguales
  77. int igualdad(Racional *q1,Racional *q2)
  78. {
  79.     return(q1->num*q2->den==q1->den*q2->num);
  80. }
  81.  
  82. //Funcion que obtiene el maximo comun divisor
  83. int mcd(Racional *q1,Racional *q2)
  84. {
  85.     return(q1->num*q2->den%q1->den*q2->num);
  86. }
  87.    
  88. //Funcion que imprime un racional
  89. void imprime(void *enter)
  90. {
  91.   Racional *q=(Racional *)enter;
  92.   printf("%d/%d",q->num,q->den);
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement