Advertisement
r_russo

Repaso primer parcial

Apr 26th, 2022
1,300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 5.83 KB | None | 0 0
  1. {
  2.     Escribir un programa que permita, mediante el uso de un menú:
  3.         1) Generar la trayectoria de un móvil con aceleración constante (MRUV)
  4.         y almacenarla en un archivo para un rango de tiempo ingresado
  5.         por teclado. El archivo debe contener en cada línea el tiempo y
  6.         la posición (0.000 5.000). El usuario ingresa aceleración,
  7.         velocidad inicial, tiempos inicial y final y la cantidad
  8.         de puntos que se van a calcular.
  9.         2) Mostrar el contenido del archivo
  10.                 t = 0.000   x = 1.0000
  11.                 t = 0.010   x = 1.2000
  12.         3) Cargar un archivo de texto con el mismo formato que el generado
  13.         en el punto a) y determinar la posición máxima y mínima con sus
  14.         respectivos tiempos.
  15.  
  16.     El menú debe reiterarse hasta que el usuario desee salir.
  17. }
  18.  
  19. program repaso;
  20.  
  21. var
  22.     op: Char;
  23.     aceleracion, velocidad_inicial, tiempo_inicial, tiempo_final: Real;
  24.     delta_t, t, x: Real;
  25.     xmin, xmax, txmin, txmax: Real;
  26.     primera_iteracion: Boolean;
  27.     i, cantidad: Word;
  28.     archivo: Text;
  29.  
  30. begin
  31. {
  32.     repeat
  33.         writeln('Elija una opción:');
  34.         writeln(' 1) Generar trayectoria del móvil');
  35.         writeln(' 2) Mostrar la información guardada');
  36.         writeln(' 3) Determinar posiciones máxima y mínima del archivo');
  37.         writeln(' s) Salir del programa');
  38.        
  39.         readln(op);
  40.    
  41.         case op of
  42.             '1': writeln('Opción 1');
  43.             '2': writeln('Opción 2');
  44.             '3': writeln('Opción 3');
  45.             's': writeln('Saliendo del programa')
  46.         else
  47.             writeln('Opción ', op, ' no reconocida');
  48.         end;
  49.     until op = 's';
  50. }
  51.  
  52.     writeln('Elija una opción:');
  53.     writeln(' 1) Generar trayectoria del móvil');
  54.     writeln(' 2) Mostrar la información guardada');
  55.     writeln(' 3) Determinar posiciones máxima y mínima del archivo');
  56.     writeln(' s) Salir del programa');
  57.    
  58.     readln(op);
  59.  
  60.     while (op <> 's') do
  61.     begin
  62.         case op of
  63.             '1':
  64.             begin
  65.                 write('Ingrese la aceleración: ');
  66.                 readln(aceleracion);
  67.                 write('Ingrese la velocidad inicial: ');
  68.                 readln(velocidad_inicial);
  69.                 write('Ingrese el tiempo inicial: ');
  70.                 readln(tiempo_inicial);
  71.                 write('Ingrese el tiempo final: ');
  72.                 readln(tiempo_final);
  73.                
  74.                 while (tiempo_final < tiempo_inicial) do
  75.                 begin
  76.                     writeln('El tiempo inicial debe ser menor que el tiempo final');
  77.                    
  78.                     write('Ingrese el tiempo inicial: ');
  79.                     readln(tiempo_inicial);
  80.                     write('Ingrese el tiempo final: ');
  81.                     readln(tiempo_final);
  82.                 end;
  83.                    
  84.                 write('Ingrese la cantidad de puntos a calcular: ');
  85.                 readln(cantidad);
  86.                
  87.                 // x = vi * t + 1/2 * a * t^2
  88.                 delta_t := (tiempo_final - tiempo_inicial) / cantidad;
  89.                
  90.                 t := tiempo_inicial;
  91.                 assign(archivo, 'trayectoria.txt');
  92.                 rewrite(archivo);
  93.                 for i := 0 to cantidad do
  94.                 begin
  95.                     // t := t + delta_t;
  96.                     t := tiempo_inicial + delta_t * i;
  97.                     x := velocidad_inicial * t + 0.5 * aceleracion * sqr(t);
  98.                     writeln(archivo, t, ' ', x);
  99.                 end;
  100.                 close(archivo);
  101.             end;
  102.             '2':
  103.             begin
  104.                 assign(archivo, 'trayectoria.txt');
  105.                 reset(archivo);
  106.                 while not eof(archivo) do
  107.                 begin
  108.                     readln(archivo, t, x);
  109.                     writeln('t = ', t:0:4, '  x = ', x:0:4);
  110.                 end;
  111.                 close(archivo);
  112.             end;
  113.             '3':
  114.             begin
  115.                 assign(archivo, 'trayectoria.txt');
  116.                 reset(archivo);
  117.                 primera_iteracion := TRUE;
  118.                 while not eof(archivo) do
  119.                 begin
  120.                     readln(archivo, t, x);
  121.                    
  122.                     if primera_iteracion then
  123.                     begin
  124.                         xmin := x;
  125.                         xmax := x;
  126.                         txmin := t;
  127.                         txmax := t;
  128.                         primera_iteracion := FALSE;
  129.                     end
  130.                     else
  131.                     begin
  132.                         if x > xmax then
  133.                         begin
  134.                             xmax := x;
  135.                             txmax := t;
  136.                         end
  137.                         else if x < xmin then
  138.                         begin
  139.                             xmin := x;
  140.                             txmin := t;
  141.                         end;
  142.                     end;
  143.                 end;
  144.                 close(archivo);
  145.                
  146.                 writeln('La posición máxima de la trayectoria se encuentra a ',
  147.                     xmax:0:4, 'm del origen a ', txmax:0:4, 's');
  148.                 writeln('La posición mínima de la trayectoria se encuentra a ',
  149.                     xmin:0:4, 'm del origen a ', txmin:0:4, 's');
  150.             end;
  151.         else
  152.             writeln('Opción ', op, ' no reconocida');
  153.         end;
  154.        
  155.         writeln('Elija una opción:');
  156.         writeln(' 1) Generar trayectoria del móvil');
  157.         writeln(' 2) Mostrar la información guardada');
  158.         writeln(' 3) Determinar posiciones máxima y mínima del archivo');
  159.         writeln(' s) Salir del programa');
  160.        
  161.         readln(op);
  162.     end;
  163.     writeln('Saliendo del programa');
  164. end.
  165.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement