Advertisement
Pendrag00n

Menú final de Curso

May 10th, 2021
1,455
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
QBasic 11.23 KB | None | 0 0
  1. SCREEN 12
  2. 'Declaracion de variables:
  3. VIEW SCREEN(30, 50)-(610, 425), 0, 1
  4. Color 3: LOCATE 7, 32: PRINT "Menu de Programas"
  5. Color 2: LOCATE 12, 12: PRINT "1 - Calculo de Areas"
  6. Color 2: LOCATE 16, 12: PRINT "2 - Ecuacion 2 grado"
  7. Color 2: LOCATE 20, 12: PRINT "3 - Sistema 3x3"
  8. Color 2: LOCATE 12, 50: PRINT "4 - Estadistica"
  9. Color 2: LOCATE 16, 50: PRINT "5 - Circulo"
  10. Color 6: LOCATE 20, 45: PRINT "Escoja un Programa"
  11.  
  12. DO
  13.     Color 3: LOCATE 25, 50: PRINT TIME$
  14.     c$ = INKEY$
  15. LOOP UNTIL c$ = "x" OR c$ = "1" OR c$ = "2" OR c$ = "3" OR c$ = "4" OR c$ = "5"
  16.  
  17. SELECT CASE c$
  18.     CASE "1"
  19.         CLS
  20.         CALL areas
  21.     CASE "2"
  22.         CLS
  23.         CALL ec2
  24.     CASE "3"
  25.         CLS
  26.         CALL sistema3x3
  27.     CASE "4"
  28.         CLS
  29.         CALL est
  30.     CASE "5"
  31.         CLS
  32.         CALL circl
  33. END SELECT
  34.  
  35. 'S U B P R O G R A M A S ////////////////////////////////////////////////////////////////////////////////////////////////
  36.  
  37. SUB areas
  38.     'Script que calcula el area y el perimetro de ciertas figuras geometricas
  39.     'Codificado por Julio Felipe Martin
  40.     DIM X AS INTEGER
  41.     DIM r, BT, HT, LT1, LT2, BC, AC, LP, AP AS _Unsigned INTEGER
  42.     PI = 3.1415926535897
  43.  
  44.     DO
  45.         CLS
  46.         LOCATE 6, 12: PRINT "1 CIRCULO        2 TRIANGULO"
  47.         LOCATE 8, 12: PRINT "3 RECTANGULO     4 PENTAGONO"
  48.         LOCATE 12, 12: PRINT "(Introduzca las medidas en centimetros)"
  49.         LOCATE 16, 14: INPUT "SELECCIONE LA FIGURA = ", X
  50.     LOOP UNTIL X = 1 OR X = 2 OR X = 3 OR X = 4
  51.     SELECT CASE X
  52.         CASE 1
  53.  
  54.             CLS
  55.             LINE (350, 20)-(350, 600), 1
  56.             LOCATE 6, 8: INPUT "Radio de la circunferencia = ", r
  57.             CALL carga
  58.             ACI = PI * r * r
  59.             PCI = 2 * PI * r
  60.             LOCATE 13, 49: PRINT "Area = "; ACI; "cm2"
  61.             LOCATE 16, 49: PRINT "Perimeto = "; PCI; "cm"
  62.  
  63.         CASE 2
  64.             DO
  65.                 CLS
  66.                 LINE (350, 20)-(350, 600), 1
  67.                 LOCATE 6, 8: INPUT "Base = ", BT
  68.                 LOCATE 8, 8: INPUT "Altura = ", HT
  69.                 LOCATE 10, 8: INPUT "Primer Lado = ", LT1
  70.                 LOCATE 12, 8: INPUT "Segundo Lado = ", LT2
  71.             LOOP UNTIL BT > 0 AND HT > 0 AND LT1 > 0 AND LT2 > 0
  72.             AT = (BT * HT) / 2
  73.             PT = BT + LT1 + LT2
  74.             CALL carga
  75.             LOCATE 13, 49: PRINT "Area = "; AT; "cm2"
  76.             LOCATE 16, 49: PRINT "Perimetro = "; PT; "cm"
  77.  
  78.         CASE 3
  79.             DO
  80.                 CLS
  81.                 LINE (350, 20)-(350, 600), 1
  82.                 LOCATE 6, 8: INPUT "Primer Lado = ", BC
  83.                 LOCATE 8, 8: INPUT "Segundo Lado = ", AC
  84.             LOOP UNTIL BC > 0 AND AC > 0
  85.             ArC = BC * AC
  86.             PeC = 2 * BC + 2 * AC
  87.             CALL carga
  88.             LOCATE 13, 49: PRINT "Area = "; ArC; "cm2"
  89.             LOCATE 16, 49: PRINT "Perimetro = "; PeC; "cm"
  90.  
  91.         CASE 4
  92.             DO
  93.                 CLS
  94.                 LINE (350, 20)-(350, 600), 1
  95.                 LOCATE 6, 8: INPUT "Lado = ", LP
  96.                 LOCATE 8, 8: INPUT "Apotema = ", AP
  97.             LOOP UNTIL LP > 0 AND AP > 0
  98.             PP = LP * 5
  99.             ArP = (PP * AP) / 2
  100.             CALL carga
  101.             LOCATE 13, 49: PRINT "Area = "; ArP; "cm2"
  102.             LOCATE 16, 49: PRINT "Perimetro = "; PP; "cm"
  103.  
  104.     END SELECT
  105.     END
  106. END SUB
  107.  
  108. '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  109.  
  110. SUB ec2
  111.     LINE (350, 20)-(350, 600), 1
  112.     LOCATE 6, 8: PRINT "Introduce los valores de A, B y C"
  113.     LOCATE 9, 8: INPUT "Introduce el valor de A = ", A
  114.     LOCATE 11, 8: INPUT "Introduce el valor de B = ", B
  115.     LOCATE 13, 8: INPUT "Introduce el valor de C = ", C
  116.     D = B * B - 4 * A * C
  117.     X1 = (-B + SQR(D)) / 2 * A
  118.     X2 = (-B - SQR(D)) / 2 * A
  119.     IF D < 0 THEN
  120.         CALL carga
  121.         LOCATE 13, 50: PRINT "N/A solucion real!"
  122.         LOCATE 17, 50: PRINT "X1 equivale a "; X1 + X2; "I"
  123.         LOCATE 20, 50: PRINT "X2 equivale a "; X1 - X2; "I"
  124.     ELSE
  125.         CALL carga
  126.         LOCATE 17, 50: PRINT "X1 equivale a "; X1
  127.         LOCATE 20, 50: PRINT "X2 equivale a "; X2
  128.     END IF
  129.     END
  130. END SUB
  131.  
  132. '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  133.  
  134. SUB sistema3x3
  135.     LINE (350, 20)-(350, 600), 1
  136.     LOCATE 12, 8: PRINT "La ecuacion debe tener este formato:"
  137.     LOCATE 14, 8: PRINT "a11 X + a12 Y + a13 Z = A1"
  138.     LOCATE 15, 8: PRINT "a21 X + a22 Y + a23 Z = A2"
  139.     LOCATE 16, 8: PRINT "a31 X + a32 Y + a33 Z = A3"
  140.     LOCATE 20, 8: INPUT "Introudzca el valor de a11: ", a11
  141.     LOCATE 20, 8: INPUT "Introudzca el valor de a12: ", a12
  142.     LOCATE 20, 8: INPUT "Introudzca el valor de a13: ", a13
  143.     LOCATE 20, 8: INPUT "Valor de la primera ecuacion: ", a1
  144.     CLS
  145.     LINE (350, 20)-(350, 600), 1
  146.     LOCATE 12, 8: PRINT "La ecuacion debe tener este formato:"
  147.     LOCATE 14, 8: PRINT "a11 X + a12 Y + a13 Z = A1"
  148.     LOCATE 15, 8: PRINT "a21 X + a22 Y + a23 Z = A2"
  149.     LOCATE 16, 8: PRINT "a31 X + a32 Y + a33 Z = A3"
  150.     LOCATE 20, 8: INPUT "Introudzca el valor de a21: ", a21
  151.     LOCATE 20, 8: INPUT "Introudzca el valor de a22: ", a22
  152.     LOCATE 20, 8: INPUT "Introudzca el valor de a23: ", a23
  153.     LOCATE 20, 8: INPUT "Valor de la segunda ecuacion: ", A2
  154.     CLS
  155.     LINE (350, 20)-(350, 600), 1
  156.     LOCATE 12, 8: PRINT "La ecuacion debe tener este formato:"
  157.     LOCATE 14, 8: PRINT "a11 X + a12 Y + a13 Z = A1"
  158.     LOCATE 15, 8: PRINT "a21 X + a22 Y + a23 Z = A2"
  159.     LOCATE 16, 8: PRINT "a31 X + a32 Y + a33 Z = A3"
  160.     LOCATE 20, 8: INPUT "Introudzca el valor de a31: ", a31
  161.     LOCATE 20, 8: INPUT "Introudzca el valor de a32: ", a32
  162.     LOCATE 20, 8: INPUT "Introudzca el valor de a33: ", a33
  163.     LOCATE 20, 8: INPUT "Valor de la tercera ecuacion: ", A3
  164.     CLS
  165.     LINE (350, 20)-(350, 600), 1
  166.  
  167.     D = (a11 * a22 * a33) + (a12 * a23 * a31) + (a32 * a21 * a13) - (a13 * a22 * a31) - (a11 * a23 * a32) - (a12 * a21 * a33)
  168.     LINE (350, 20)-(350, 600), 1
  169.     IF D = 0 THEN
  170.         CALL carga
  171.         LOCATE 13, 49: PRINT "El Determinante es 0"
  172.         LOCATE 14, 49: PRINT "No tiene Solucion"
  173.     ELSE
  174.         CALL carga
  175.         LOCATE 13, 47: PRINT "El Determinante es "; D
  176.         X = ((a1 * a22 * a33) + (a13 * A2 * a32) + (a12 * a23 * A3) - (a1 * a32 * a23) - (a12 * A2 * a33) - (a13 * a22 * A3)) / D
  177.         Y = ((a11 * A2 * a33) + (a1 * a23 * a31) + (a13 * a21 * A3) - (a13 * A2 * a31) - (a1 * a21 * a33) - (a11 * a23 * A3)) / D
  178.        4
  179.         Z = ((a11 * a22 * A3) + (a12 * A2 * a31) + (a1 * a21 * a32) - (a1 * a22 * a31) - (a11 * A2 * a32) - (a12 * a21 * A3)) / D
  180.         LOCATE 15, 49: PRINT "X Equivale a "; X
  181.         LOCATE 16, 49: PRINT "Y Equivale a "; Y
  182.         LOCATE 17, 49: PRINT "Z Equivale a "; Z
  183.     END IF
  184.     END
  185. END SUB
  186.  
  187. '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  188. SUB est
  189.     DIM t AS DOUBLE
  190.     DIM I, x(1000), f(1000), Moda, Modaa, Mediana, Desv1, Sumo AS SINGLE
  191.     LINE (350, 20)-(350, 600), 1
  192.     LOCATE 8, 7: INPUT "Introduzca numero total de datos: ", N
  193.     CLS
  194.     LINE (350, 20)-(350, 600), 1
  195.     LOCATE 8, 7: PRINT "Introduzca datos en orden creciente"
  196.  
  197.     FOR I = 1 TO N
  198.         LOCATE 10, 7: INPUT "Dato= "; x(I)
  199.         LOCATE 11, 7: INPUT "Veces que se repite = "; f(I)
  200.     NEXT I
  201.  
  202.     Moda = 0
  203.  
  204.     FOR I = 0 TO N
  205.         IF Modaa < f(I) THEN
  206.             Modaa = f(I)
  207.             Moda = x(I)
  208.         ELSE
  209.             Moda = Moda
  210.         END IF
  211.  
  212.     NEXT I
  213.  
  214.     FOR j = 0 TO N
  215.         t = t + x(j) * f(j)
  216.  
  217.     NEXT j
  218.  
  219.     FOR l = 0 TO N
  220.         ff = ff + f(l)
  221.  
  222.     NEXT l
  223.     media = t / ff
  224.  
  225.     FOR I = 0 TO N
  226.         Sumo = Sumo + (((x(I) - media) ^ 2) * f(I))
  227.     NEXT I
  228.     Desv1 = Sumo / (ff - 1)
  229.     desv2 = Desv1 ^ 0.5
  230.  
  231.  
  232.     medianaa = ff / 2
  233.     medianaaa = ff \ 2
  234.  
  235.     IF medianaa = medianaa THEN
  236.  
  237.         Mediana = x(medianaa - 1) + 0.5
  238.     ELSE
  239.         Mediana = x(medianaa - 1)
  240.  
  241.     END IF
  242.     LINE (350, 20)-(350, 600), 1
  243.     CALL carga
  244.     LOCATE 15, 48: PRINT "Total ="; t
  245.     LOCATE 16, 48: PRINT "Moda ="; Moda
  246.     LOCATE 17, 48: PRINT "Media ="; media
  247.     LOCATE 18, 48: PRINT "Mediana ="; Mediana
  248.     LOCATE 19, 48: PRINT "Desviacion ="; desv2
  249.     END
  250. END SUB
  251.  
  252. '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  253.  
  254. SUB circl
  255.     DIM PULSADO AS STRING
  256.     DIM Y AS INTEGER
  257.     DIM X AS INTEGER
  258.  
  259.     'Al anadir fullscreen cambiamos la resolucion de la ventana sin perder las propiedades de la Screen 12
  260.  
  261.     'Declaracion de variables:
  262.     X = 300
  263.     Y = 210
  264.     V = 5
  265.     a$ = DATE$
  266.     day$ = MID$(a$, 4, 2)
  267.     month$ = MID$(a$, 1, 2)
  268.     year$ = MID$(a$, 9, 2)
  269.  
  270.     'Portada del programa: (Los prints seguidos se podrían haber puesto en una sola linea
  271.     CLS
  272.     PRINT
  273.     PRINT
  274.     PRINT
  275.     PRINT
  276.     PRINT
  277.     PRINT
  278.     PRINT
  279.     Color 2: PRINT "                 Puedes mover el circulo con las teclas W A S D"
  280.     PRINT
  281.     Color 2: PRINT "                Puedes cambiar la velocidad con las teclas + y -"
  282.     PRINT
  283.     PRINT
  284.     PRINT
  285.     Color 2: PRINT "            1 = AZUL   2 = VERDE   3 = CYAN   4 = ROJO   5 = VIOLETA"
  286.     PRINT
  287.     Color 2: INPUT "                      De que color quieres tu circulo"; c
  288.     CLS
  289.     SCREEN 0
  290.     SCREEN 12
  291.     'Codigo para el correcto funcionamiento del los elemento decorativos y el movimiento del circulo:
  292.     CLS
  293.  
  294.     DO
  295.  
  296.         LOCATE 25, 13: PRINT "Velocidad = "; V; "Px/s"
  297.         LOCATE 25, 60: PRINT TIME$
  298.         LOCATE 25, 50: PRINT day$; "/"; month$; "/"; year$
  299.         'El movimiento del circulo no rompe ningun print
  300.         LINE (600, 425)-(40, 60), 15, B
  301.         PULSADO = UCASE$(INKEY$)
  302.         IF PULSADO = "W" AND Y > 115 THEN
  303.             CLS
  304.             Y = Y - V
  305.         ELSEIF PULSADO = "S" AND Y < 425 - 55 THEN
  306.             CLS
  307.             Y = Y + V
  308.         ELSEIF PULSADO = "A" AND X > 95 THEN
  309.             CLS
  310.             X = X - V
  311.         ELSEIF PULSADO = "D" AND X < 600 - 55 THEN
  312.             CLS
  313.             X = X + V
  314.         END IF
  315.         'El programa no permite el movimiento mas alla de la direccion de cada borde al estar todo definido en multiplos de 5
  316.         IF PULSADO = "+" THEN
  317.             V = V + 5
  318.         ELSEIF PULSADO = "-" THEN
  319.             V = V - 5
  320.         END IF
  321.         'Si la velocidad no va de 5 en 5 el circulo puede saltarse los bordes
  322.  
  323.         CIRCLE (X, Y), 50, c
  324.         CIRCLE (X, Y), 51, c
  325.         CIRCLE (X, Y), 52, c
  326.         CIRCLE (X, Y), 53, c
  327.         CIRCLE (X, Y), 54, c
  328.         CIRCLE (X, Y), 55, c
  329.         'Varios circulos sucesivos crean la ilusion de un circulo mas grueso que da un mejor aspecto al programa
  330.     LOOP UNTIL INKEY$ = "x"
  331.     END
  332.     'El comando para salir del programa no siempre responde correctamente, aun no se a que se debe, sucede de forma pseudoaleatoria
  333. END SUB
  334.  
  335. SUB carga
  336.     linea = 400
  337.     LINE (linea, 380)-(560, 400), 3, B
  338.     DO
  339.         linea = linea + 1
  340.         LINE (linea, 380)-(560, 400), 3, B
  341.         _Delay 0.005
  342.     LOOP UNTIL linea >= 560
  343.     CLS
  344.     LINE (350, 20)-(350, 600), 1
  345. END SUB
  346.  
  347.  
  348.  
  349.  
  350.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement