Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- Escribir un programa que permita, mediante el uso de un menú:
- 1) Generar la trayectoria de un móvil con aceleración constante (MRUV)
- y almacenarla en un archivo para un rango de tiempo ingresado
- por teclado. El archivo debe contener en cada línea el tiempo y
- la posición (0.000 5.000). El usuario ingresa aceleración,
- velocidad inicial, tiempos inicial y final y la cantidad
- de puntos que se van a calcular.
- 2) Mostrar el contenido del archivo
- t = 0.000 x = 1.0000
- t = 0.010 x = 1.2000
- 3) Cargar un archivo de texto con el mismo formato que el generado
- en el punto a) y determinar la posición máxima y mínima con sus
- respectivos tiempos.
- El menú debe reiterarse hasta que el usuario desee salir.
- }
- program repaso;
- var
- op: Char;
- aceleracion, velocidad_inicial, tiempo_inicial, tiempo_final: Real;
- delta_t, t, x: Real;
- xmin, xmax, txmin, txmax: Real;
- primera_iteracion: Boolean;
- i, cantidad: Word;
- archivo: Text;
- begin
- {
- repeat
- writeln('Elija una opción:');
- writeln(' 1) Generar trayectoria del móvil');
- writeln(' 2) Mostrar la información guardada');
- writeln(' 3) Determinar posiciones máxima y mínima del archivo');
- writeln(' s) Salir del programa');
- readln(op);
- case op of
- '1': writeln('Opción 1');
- '2': writeln('Opción 2');
- '3': writeln('Opción 3');
- 's': writeln('Saliendo del programa')
- else
- writeln('Opción ', op, ' no reconocida');
- end;
- until op = 's';
- }
- writeln('Elija una opción:');
- writeln(' 1) Generar trayectoria del móvil');
- writeln(' 2) Mostrar la información guardada');
- writeln(' 3) Determinar posiciones máxima y mínima del archivo');
- writeln(' s) Salir del programa');
- readln(op);
- while (op <> 's') do
- begin
- case op of
- '1':
- begin
- write('Ingrese la aceleración: ');
- readln(aceleracion);
- write('Ingrese la velocidad inicial: ');
- readln(velocidad_inicial);
- write('Ingrese el tiempo inicial: ');
- readln(tiempo_inicial);
- write('Ingrese el tiempo final: ');
- readln(tiempo_final);
- while (tiempo_final < tiempo_inicial) do
- begin
- writeln('El tiempo inicial debe ser menor que el tiempo final');
- write('Ingrese el tiempo inicial: ');
- readln(tiempo_inicial);
- write('Ingrese el tiempo final: ');
- readln(tiempo_final);
- end;
- write('Ingrese la cantidad de puntos a calcular: ');
- readln(cantidad);
- // x = vi * t + 1/2 * a * t^2
- delta_t := (tiempo_final - tiempo_inicial) / cantidad;
- t := tiempo_inicial;
- assign(archivo, 'trayectoria.txt');
- rewrite(archivo);
- for i := 0 to cantidad do
- begin
- // t := t + delta_t;
- t := tiempo_inicial + delta_t * i;
- x := velocidad_inicial * t + 0.5 * aceleracion * sqr(t);
- writeln(archivo, t, ' ', x);
- end;
- close(archivo);
- end;
- '2':
- begin
- assign(archivo, 'trayectoria.txt');
- reset(archivo);
- while not eof(archivo) do
- begin
- readln(archivo, t, x);
- writeln('t = ', t:0:4, ' x = ', x:0:4);
- end;
- close(archivo);
- end;
- '3':
- begin
- assign(archivo, 'trayectoria.txt');
- reset(archivo);
- primera_iteracion := TRUE;
- while not eof(archivo) do
- begin
- readln(archivo, t, x);
- if primera_iteracion then
- begin
- xmin := x;
- xmax := x;
- txmin := t;
- txmax := t;
- primera_iteracion := FALSE;
- end
- else
- begin
- if x > xmax then
- begin
- xmax := x;
- txmax := t;
- end
- else if x < xmin then
- begin
- xmin := x;
- txmin := t;
- end;
- end;
- end;
- close(archivo);
- writeln('La posición máxima de la trayectoria se encuentra a ',
- xmax:0:4, 'm del origen a ', txmax:0:4, 's');
- writeln('La posición mínima de la trayectoria se encuentra a ',
- xmin:0:4, 'm del origen a ', txmin:0:4, 's');
- end;
- else
- writeln('Opción ', op, ' no reconocida');
- end;
- writeln('Elija una opción:');
- writeln(' 1) Generar trayectoria del móvil');
- writeln(' 2) Mostrar la información guardada');
- writeln(' 3) Determinar posiciones máxima y mínima del archivo');
- writeln(' s) Salir del programa');
- readln(op);
- end;
- writeln('Saliendo del programa');
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement