elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Ejemplo Pascal Unit - Iniciados en la programación
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejemplo Pascal Unit - Iniciados en la programación  (Leído 2,617 veces)
BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Ejemplo Pascal Unit - Iniciados en la programación
« en: 2 Junio 2012, 22:42 pm »

Un ejemplo de Unit - TAD Números Racionales - con implementación dinámica de punteros.

Código
  1. ////////////////////////////////////////////////////////////
  2. /////////////Nombre de Unidad: TAD Racionales///////////////
  3. ///////////////////Autor: Batchiano/////////////////////////
  4. //////////////////////////////////////////////////////////
  5. unit Racional;
  6.  
  7. interface
  8.  
  9. type
  10. tPRacional = ^tRacional; // Tipo puntero a racional
  11. tRacional = record // Tipo racional con un registro
  12. numerador,denominador:integer;
  13. end;
  14.  
  15. function CrearRacional(a,b:integer):tPRacional; { Crea un número racional }
  16. function MostrarRacional(r:tPRacional):string; { Muestra un número racional }
  17. function Numerador(r:tPRacional):integer; { Obtiene el numerador de un número racional }
  18. function Denominador(r:tPRacional):integer; { Obtiene el denominador de un número racional }
  19. function SumarRacional(r,s:tPRacional):tPRacional; { Suma dos números racionales }
  20. function RestarRacional(r,s:tPRacional):tPRacional; { Resta el segundo número racional al primero }
  21. function MultiplicarRacional(r,s:tPRacional):tPRacional; { Multiplica dos números racionales }
  22. function DividirRacional(r,s:tPRacional):tPRacional; { Divide el primer número racional pasado por el segundo }
  23. function SimplificarRacional(var r:tPRacional):tPRacional; { Simplifica un número racional }
  24. function mcd(a,b:integer):integer; { Obtiene el m.c.d de dos enteros (en términos positivos) }
  25.  
  26.  
  27. implementation
  28.  
  29. function min(a,b:integer):integer;
  30. begin
  31. min:=a;
  32. if b<a then
  33. min:=b;
  34. end;
  35.  
  36. function CrearRacional(a,b:integer):tPRacional;
  37. begin
  38. new(CrearRacional);
  39. CrearRacional^.numerador := a;
  40. CrearRacional^.denominador := b;
  41. end;
  42.  
  43. function MostrarRacional(r:tPRacional):string;
  44. var num,den:string;
  45. begin
  46. if ((numerador(r)>0) and (denominador(r)>0)) or ((numerador(r)<0) and (denominador(r)<0)) then begin
  47. str(abs(numerador(r)),num);
  48. str(abs(denominador(r)),den);
  49. MostrarRacional := num + '/' + den;
  50. end
  51. else begin
  52. str(abs(numerador(r)),num);
  53. str(abs(denominador(r)),den);
  54. MostrarRacional := '-' + num + '/' + den;
  55. end;
  56.  
  57. end;
  58.  
  59. function Numerador(r:tPRacional):integer;
  60. begin
  61. numerador := r^.numerador;
  62. end;
  63.  
  64. function Denominador(r:tPRacional):integer;
  65. begin
  66. denominador := r^.denominador;
  67. end;
  68.  
  69. function SimplificarRacional(var r:tPRacional):tPRacional;
  70. var a,b:integer;
  71. begin
  72. a:=abs(numerador(r));
  73. b:=abs(denominador(r));
  74. r^.numerador := numerador(r) div mcd(a,b);
  75. r^.denominador := denominador(r) div mcd(a,b);
  76. SimplificarRacional := r;
  77. end;
  78.  
  79. function SumarRacional(r,s:tPRacional):tPRacional;
  80. begin
  81. new(SumarRacional);
  82. SumarRacional^.denominador := denominador(r) * denominador(s);
  83. SumarRacional^.numerador := denominador(SumarRacional) div denominador(r) * numerador(r) + denominador(SumarRacional) div denominador(s) * numerador(s);
  84. SumarRacional := SimplificarRacional(SumarRacional);
  85. end;
  86.  
  87. function RestarRacional(r,s:tPRacional):tPRacional;
  88. begin
  89. new(RestarRacional);
  90. RestarRacional^.denominador := denominador(r) * denominador(s);
  91. RestarRacional^.numerador := denominador(RestarRacional) div denominador(r) * numerador(r) - denominador(RestarRacional) div denominador(s) * numerador(s);
  92. RestarRacional := SimplificarRacional(RestarRacional);
  93. end;
  94.  
  95. function MultiplicarRacional(r,s:tPRacional):tPRacional;
  96. begin
  97. new(MultiplicarRacional);
  98. MultiplicarRacional^.numerador := numerador(r) * numerador(s);
  99. MultiplicarRacional^.denominador := denominador(r) * denominador(s);
  100. MultiplicarRacional := SimplificarRacional(MultiplicarRacional);
  101. end;
  102.  
  103. function DividirRacional(r,s:tPRacional):tPRacional;
  104. begin
  105. new(DividirRacional);
  106. DividirRacional^.numerador := numerador(r) * denominador(s);
  107. DividirRacional^.denominador := denominador(r) * numerador(s);
  108. DividirRacional := SimplificarRacional(DividirRacional);
  109. end;
  110.  
  111. function mcd(a,b:integer):integer;
  112. var t:integer;
  113. begin
  114. a:=abs(a);
  115. b:=abs(b);
  116. t:=min(a,b);
  117. while (t>1) and (((b mod t) <> 0) or ((a mod t) <> 0)) do begin
  118. t:=t-1;
  119. end;
  120. mcd := t;
  121. end;
  122.  
  123. begin
  124.  
  125. end.
  126.  


« Última modificación: 2 Junio 2012, 22:54 pm por BatchianoISpyxolo » En línea

Puede que desees aprender a programar desde 0: www.espascal.es
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programacion en pascal
.NET (C#, VB.NET, ASP)
arcangel_negro 4 3,639 Último mensaje 25 Julio 2006, 21:41 pm
por BADBYTE-K
[Curso] Programación en Object Pascal (Delphi)
Programación General
Shrick 3 7,338 Último mensaje 24 Julio 2010, 21:01 pm
por matematicomarpla
[C++][?] Unit testing
Programación C/C++
oxydec 0 2,596 Último mensaje 18 Febrero 2011, 00:47 am
por oxydec
Programacion con PAscal
Programación General
inquilin@19 0 1,989 Último mensaje 24 Mayo 2013, 16:19 pm
por inquilin@19
ejemplo de programacion modular en pseudocodigo
Dudas Generales
Dnte.w 0 2,637 Último mensaje 14 Mayo 2015, 00:23 am
por Dnte.w
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines