Advertisement
cardel

Ejercicio 18 Feb FDP

Feb 18th, 2019
890
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 7.64 KB | None | 0 0
  1.  
  2. (define-struct computador (marca capA capM marcaProc))
  3. ;;Autor: Carlos Delgado
  4. ;;Fecha 11 de Feb 2019
  5. ;;Contrato: buscar-computador-mejor-memoria: computador, computador, computador, computador -> computador
  6. ;;Propósito: Retornar el computador que tenga más memoria dentro de un grupo de 4 computadores
  7. (define (buscar-computador-mejor-memoria com1 com2 com3 com4)
  8.   (cond
  9.     [(and (> (computador-capM com1) (computador-capM com2))
  10.           (> (computador-capM com1) (computador-capM com3))
  11.           (> (computador-capM com1) (computador-capM com4)))
  12.      com1]
  13.     [(and (> (computador-capM com2) (computador-capM com3))
  14.           (> (computador-capM com2) (computador-capM com4)))
  15.      com2]
  16.     [(> (computador-capM com3) (computador-capM com4)) com3]
  17.     [else com4]))
  18.  
  19.  
  20. (define computadorA (make-computador 'Dell 100 4 'Intel))
  21. (define computadorB (make-computador 'HP 150 8 'AMD))
  22. (define computadorC (make-computador 'Asus 200 16 'Intel))
  23. (define computadorD (make-computador 'Lenovo 80  64 'Intel))
  24.  
  25. (check-expect (buscar-computador-mejor-memoria computadorA
  26.                                                 computadorB
  27.                                                 computadorC
  28.                                                 computadorD)
  29.               computadorD)
  30.  
  31.  
  32.  
  33. ;;Autor: Carlos Delgado
  34. ;;Fecha: 11 de Feb 2019
  35. ;;Contrato: actualizar-computador: computador, simbolo, numero -> computador
  36. ;;Propósito: Actualizar un campo de la estructura computador de acuerdo a un simbolo
  37. ;;Pruebas ...
  38. (define (actualizar-computador comp sim num)
  39.   (cond
  40.     [(symbol=? 'memoria sim) (make-computador
  41.                               (computador-marca comp)
  42.                               (computador-capA comp)
  43.                               num
  44.                               (computador-marcaProc comp))]
  45.     [(symbol=? sim 'disco) (make-computador
  46.                             (computador-marca comp)
  47.                             num
  48.                             (computador-capM comp)
  49.                             (computador-marcaProc comp))]
  50.     [else comp])
  51.   )
  52.  
  53. (actualizar-computador computadorA 'memoria 64)
  54. (actualizar-computador computadorB 'disco 1000)
  55. (actualizar-computador computadorC 'video 1000)
  56.  
  57. ;**************
  58.  
  59. (define-struct computadorConTarjeta (marca capA capM proc video))
  60. (define-struct procesador (marca velocidad))
  61. (define-struct tarjetaVideo (marca memoria velocidad))
  62. ;;Autor: Carlos Delgado
  63. ;;Fecha: 11 de Feb 2019
  64. ;;Contrato: buscar-computador-mejor-velocidad: computador, computador, computador, computador -> computador
  65. ;;Propósito: Encontrar dentro de 4 computadores el más veloz en procesador
  66. ;;Ejemplo ...
  67.  
  68.  
  69. (define (buscar-computador-mejor-velocidad com1 com2 com3 com4)
  70.   (cond
  71.     [(and (> (procesador-velocidad (computadorConTarjeta-proc com1)) (procesador-velocidad (computadorConTarjeta-proc com2)))
  72.           (> (procesador-velocidad (computadorConTarjeta-proc com1)) (procesador-velocidad (computadorConTarjeta-proc com3)))
  73.           (> (procesador-velocidad (computadorConTarjeta-proc com1)) (procesador-velocidad (computadorConTarjeta-proc com4))))
  74.      com1]
  75.     [(and (> (procesador-velocidad (computadorConTarjeta-proc com2)) (procesador-velocidad (computadorConTarjeta-proc com3)))
  76.           (> (procesador-velocidad (computadorConTarjeta-proc com2)) (procesador-velocidad (computadorConTarjeta-proc com4))))
  77.      com2]
  78.     [(> (procesador-velocidad (computadorConTarjeta-proc com3)) (procesador-velocidad (computadorConTarjeta-proc com4))) com3]
  79.     [else com4]))
  80.  
  81.  
  82. (define computadorT1 (make-computadorConTarjeta 'Chino 500 4
  83.                                                 (make-procesador 'Intel 2.5)
  84.                                                 (make-tarjetaVideo 'Geforce 200 3.6)
  85.                                                 ))
  86.  
  87. (define computadorT2 (make-computadorConTarjeta 'Gato 200 6
  88.                                                 (make-procesador 'AMD 3)
  89.                                                 (make-tarjetaVideo 'Nvidia 100 2.5)
  90.                                                 ))
  91.  
  92.  
  93. (define computadorT3 (make-computadorConTarjeta 'Perro 100 12
  94.                                                 (make-procesador 'I5 5)
  95.                                                 (make-tarjetaVideo 'Avon 1050 10)
  96.                                                 ))
  97. (define computadorT4 (make-computadorConTarjeta 'Pajarito 80 10
  98.                                                 (make-procesador 'I10 8)
  99.                                                 (make-tarjetaVideo 'HD 300 6)
  100.                                                 ))
  101.  
  102.  
  103. (buscar-computador-mejor-velocidad computadorT1 computadorT2 computadorT3 computadorT4)
  104.  
  105.  
  106. ;;Autor: Carlos Delgado
  107. ;;Fecha: 11-Feb-2019
  108. ;;Contrato: actualizar-computadorV2: computadorConTarjeta, simbolo, numero
  109. ;;Propósito: Se recibe una estructura computador y de acuerdo al simbolo se actualiza un campo
  110. (define (actualizar-computadorV2 comp sim num)
  111.   (cond
  112.     [(symbol=? 'memoria sim) (make-computadorConTarjeta
  113.                               (computadorConTarjeta-marca comp)
  114.                               (computadorConTarjeta-capA comp)
  115.                               num
  116.                               (computadorConTarjeta-proc comp)
  117.                               (computadorConTarjeta-video comp)
  118.                               )]
  119.     [(symbol=? sim 'disco) (make-computadorConTarjeta
  120.                             (computadorConTarjeta-marca comp)
  121.                             num
  122.                             (computadorConTarjeta-capM comp)
  123.                             (computadorConTarjeta-proc comp)
  124.                             (computadorConTarjeta-video comp))]
  125.     [(symbol=? sim 'procesador)
  126.      (make-computadorConTarjeta
  127.       (computadorConTarjeta-marca comp)
  128.       (computadorConTarjeta-capA comp)
  129.       (computadorConTarjeta-capM comp)
  130.       (make-procesador
  131.        (procesador-marca (computadorConTarjeta-proc comp))
  132.        num)
  133.       (computadorConTarjeta-video comp))]
  134.     [(symbol=? sim 'video)
  135.      (make-computadorConTarjeta
  136.       (computadorConTarjeta-marca comp)
  137.       (computadorConTarjeta-capA comp)
  138.       (computadorConTarjeta-capM comp)
  139.       (computadorConTarjeta-proc comp)
  140.       (make-tarjetaVideo
  141.        (tarjetaVideo-marca (computadorConTarjeta-video comp))
  142.        (tarjetaVideo-memoria (computadorConTarjeta-video comp))
  143.        num
  144.       )
  145.       )
  146.      ]
  147.     [(symbol=? sim 'videoMemoria)
  148.      (make-computadorConTarjeta
  149.       (computadorConTarjeta-marca comp)
  150.       (computadorConTarjeta-capA comp)
  151.       (computadorConTarjeta-capM comp)
  152.       (computadorConTarjeta-proc comp)
  153.       (make-tarjetaVideo
  154.        (tarjetaVideo-marca (computadorConTarjeta-video comp))
  155.        num
  156.        (tarjetaVideo-velocidad (computadorConTarjeta-video comp))
  157.       )
  158.       )
  159.      ]
  160.     [else comp])
  161.   )
  162.  
  163. (define computadorT5 (make-computadorConTarjeta 'Gallo 40 20
  164.                                                 (make-procesador 'AMD 15)
  165.                                                 (make-tarjetaVideo 'Leonisa 50 3)
  166.                                                 ))
  167.  
  168. (actualizar-computadorV2 computadorT5 'procesador 30)
  169. (actualizar-computadorV2 computadorT5 'video 8)
  170. (actualizar-computadorV2 computadorT5 'videoMemoria 100)
  171.  
  172.  
  173. ;;Tenemos una lista de computadores con Tarjeta
  174. ;;Quiero sumar las memorias de todos los computadores
  175. ;;Estos vienen una lista de tamaño arbitrario
  176.  
  177. (define listaC (cons T1 (cons T2 (cons T3 (cons T4 (cons T1 empty))))))
  178.  
  179.  
  180. (+
  181.  (computadorConTarjeta-memoria (first listaC))
  182.  (computadorConTarjeta-memoria (first (rest listaC)))
  183.  (computadorConTarjeta-memoria (first (rest (rest listaC)))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement