Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
1. Realizar el siguiente algoritmo modular que mediante un menú de opciones resuelva: 1.1. Cargar un vector G con F datos positivos impares. 1.2. Mostrar el vector G. 1.3. Agregar un dato X al vector G. 1.4. Modificar un elemento del vector G con un nuevo valor X en la posición P. 1.5. Insertar un elemento X en el vector G en la posición P. 1.6. Eliminar un elemento del vector G de la posición P. 1.7. Salir. 2. Escribir un Algoritmo que elimine todos los valores K de un vector V con N datos. LAZARUS PASCAL Program Ejercicio2_TPN8; uses crt; Const MAX = 500; Type TVector = array [1..MAX] of Integer; (*MÓDULOS = PROCEDIMIENTOS*) {SUBRUTINAS} Procedure Menu (var op:Integer); begin writeln('------------------------------------------------------------------------------------'); writeln(' INGRESE UNA OPCION '); writeln('------------------------------------------------------------------------------------'); writeln(); writeln('1. Cargar datos al Vector [V] '); writeln('2. Mostrar Vector [V]'); writeln('3. Eliminar todo los Valores K'); writeln('4. Salida'); readln(op); end; // CARGAR VECTOR Y ELEMENTOS A INGRESAR // Procedure CargarVector (var V:TVector; var N:integer); var i:integer; begin writeln(' ~~~~~~~~~~~~~~~~ CARGAR VECTOR ~~~~~~~~~~~~~~~~ '); write('Ingrese la Cantidad de Numeros a Ingresar:',' '); read(n); writeln(); writeln('~~~~~~~~~~~~~~~~ NUMEROS A INGRESAR ~~~~~~~~~~~~~~~~ '); For i:= 1 to N do begin write('Ingrese un Valor para el Elemento',' ',i,' :'); read(V[i]); writeln(); end; end; // BUSCAR ELEMENTOS INGRESADOS // procedure MostrarVector(V:TVector; N:integer); var i:integer; begin for i:=1 to N do writeln('Valor ', i, ' : ',V[i]); readkey; end; // BUSCAR NUMEROS REPETIDOS // Function Buscar (V:TVector; N:Integer; K:integer):Integer; var pos,i:Integer; begin pos:= 0; for i:= 1 to N do begin if (V[i]= K) then begin pos:=i; end; end; Buscar:= pos; end; // ELIMINAR // Procedure Eliminar (var V:TVector; var N:Integer; pos:integer); var i:integer; begin for i:=pos to N-1 do begin V[i]:=V[i+1]; end; N:=N-1; end; //Eliminar con posicion // Procedure EliminarTodos (var V:TVector; var N:Integer; K:integer); var pos:integer; begin pos:=Buscar (V,N,K); While (pos<>0) do begin //Eliminamos // Eliminar(V,N,pos); pos:=Buscar (V,N,K); end; end; (*ALGORITMO PRINCIPAL*) var V: TVector; N,K: Integer; bandera:boolean; OP:INTEGER; Begin bandera:=false; Repeat clrscr; Menu(op); Case op of 1: begin CargarVector ( V, N ); writeln(); bandera:=true; readkey; end; 2: begin if (bandera) then begin MostrarVector(V,N); readkey; end else begin writeln('Primero haga la Opcion 1'); readkey; end; end; 3: begin if (bandera) then begin writeln('Ingrese un Numero a Eliminar'); readln(K); EliminarTodos(V,N,K); MostrarVector(V,N); readkey; end else begin writeln('Primero haga la Opcion 1'); readkey; end; end; 4: begin writeln(' ',' ~ See you next to day ~ '); readkey; end else begin writeln('UD A INGRESADO UN NUMERO EQUIVOCADO'); readkey; end; end; Until (op = 4); readkey; end. //FIN_DEL_CASE readln; readkey; end. 3. Mediante un menú de opciones y a solicitud del usuario: 3.1. Ingrese datos al vector hasta que el operador no quiera ingresar más. 3.2. Listar los valores. 3.3. Insertar un valor en la posición K. 3.4. Agregar un valor X. 3.5. Cambiar los elementos con Valor1 dado por Valor2. 3.6. Cambiar el elemento ubicado en la posición central por el valor X. 3.7. Eliminar el elemento i-ésimo. 3.8. Eliminar los elementos de valor Valor3. 3.9. Salir. 3.10. 4. Un club de pescadores realizo una competencia de pesca. Por cada participante se registra la cantidad total de peces capturados. Para ello, se tiene un vector V que almacena las cantidades de peces capturados por participante. Diseñar un algoritmo modular, completo y prolijo, que mediante un menú de opciones resuelve: 4.1. Cargar V con N participantes. La mínima cantidad de participantes es 10 y la máxima es 50. La cantidad de peces debe ser mayor o igual a 0. 4.2. Mostrar el promedio de peces capturados. 4.3. Mostrar la mayor cantidad de peces capturados y quien (posición) fue el ganador (puede haber más de uno). 4.4. Penalizar con X cantidad peces al participante que está en la posición K. 5. Realizar un programa modular donde mediante un menú de opciones realice las siguientes tareas: 5.1. Cargar dos vectores paralelos llamados Alumnos [ ] y Notas[ ], donde se almacene el nombre del alumno (nombre de tipo string) y la nota del examen final (nota de tipo entero), la finalización del ingreso de datos es a pedido del operador. 5.2. Mostrar la nota más alta y más baja con el nombre del alumno. 5.3. Calcular el promedio y los nombres de los alumnos cuyas notas están por encima y por debajo del promedio. 5.4. Salir. LAZARUS PASCAL Program Ejercicio5_TPN8__Vectores_Paralelos; uses crt; Const MAX = 5000; Type Cadena = string [50]; TVectorCadena = array [1..MAX] of Cadena; TVectorEntero = array [1..MAX] of Integer; (*SUBRUTINAS*) // MENU DE OPCIONES // Procedure Menu (var op:Integer); begin writeln('------------------------------------------------------------------------------------'); writeln(' INGRESE UNA OPCION '); writeln('------------------------------------------------------------------------------------'); writeln(); writeln('1. Cargar datos al Vector [ Nombres ] y la Nota del Alumno en el Vector [ Notas ]'); writeln('2. Mostrar Notas (Altas - Bajas), Nombre del Alumno y la Posicion'); writeln('3. Calcular el Promedio y los Nombres de los cuyas notas estan encima y por debajo del Promedio'); writeln('4. Salida'); readln(op); end; // [OP 1] - CARGAR VECTORES // Procedure CargarVector_Datos(var Nombres:TVectorCadena; var Notas:TVectorEntero; var A:integer); var i:integer; resp:char; begin i:=0; repeat i:=i+1; write('Ingrese el Nombre del Alumno : '); readln(Nombres[i]); write('Ingrese la Nota : '); readln(Notas[i]); write('Desea continuar s/n ?: '); readln(resp); until (resp='n') or (resp='N'); A:=i; end; // [OP 2] - MOSTRAR DATOS ORIGINALES --> MAYORES Y MENORES // // [OP_2.1] - MOSTRAR NOTAS ALTAS, BAJAS Y NOMBRE DEL ALUMNO // Procedure MostrarNotas (var Nombres:TVectorCadena; var Notas:TVectorEntero; var opc:integer; var A:integer); var i:integer; begin writeln(); writeln(' ~ DATOS ORIGINALES ~'); writeln(' Nombre del Alumno: Notas:'); writeln('---------------------------------------------'); for i:=1 to A do writeln(Nombres[i],' ',' ',' ', Notas[i]); writeln(); {Opción 1 - NOTAS ALTAS} if(opc = 1) then for i:= 1 to A do begin if (Notas[i] >= 0) then begin writeln(' > NOTAS: > ALUMNOS: > UBICACION:'); writeln('Nota : ',Notas[i],' ',' ',' ','Nombre : ', Nombres[i],' ',' ',' ','Posicion: ', i); end; end; {Opción 2 - NOTAS BAJAS} if(opc = 2) then for i:= 1 to A do begin if (Notas[i] < 0) then begin writeln(' > NOTAS: > ALUMNOS: > UBICACION:'); writeln('Nota : ',Notas[i],' ',' ',' ','Nombre : ', Nombres[i],' ',' ',' ','Posicion : ', i); end; end; readkey; end; // PROMEDIO DE LAS NOTAS DE LOS ALUMNOS// Function Prome_Gral (Notas:TVectorEntero; A:integer):Real; var suma,i:integer; total:Real; begin suma:=0; for i:=1 to A do begin suma:=suma+Notas[i]; end; total:=suma/A; Prome_Gral:=total; end; // PROMEDIO - SUPERAN PROMEDIO Y NO SUPERAN // Procedure Mostrar_PosyDat (Nombres:TVectorCadena; var Notas:TVectorEntero; var punto:integer; A:integer; prom:real); var i:integer; begin {Opción 1 - SUPERA EL PROMEDIO} if(punto = 1) then for i:= 1 to A do begin if (Notas[i] > prom) then begin writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'); writeln(' NOTAS QUE SOBREPASAN EL PROMEDIOS'); writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'); writeln(' > NOTAS: > ALUMNOS: > UBICACION:'); writeln('Nota : ',Notas[i],' ',' ',' ','Nombre : ', Nombres[i],' ',' ',' ','Posicion : ', i); end; end; writeln(); writeln(); {Opción 2 - NO SUPERA EL PROMEDIO} if(punto = 2) then for i:= 1 to A do begin if (Notas[i] < prom) then begin writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'); writeln(' NOTAS QUE NO SOBREPASAN EL PROMEDIOS'); writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'); writeln(' > NOTAS: > ALUMNOS: > UBICACION:'); writeln('Nota : ',Notas[i],' ',' ',' ','Nombre : ', Nombres[i],' ',' ',' ','Posicion : ', i); end; end; readkey; end; (*ALGORITMO PRINCIPAL*) var Nombres: TVectorCadena; Notas : TVectorEntero; A:Integer; op:integer; opc,punto:integer; prom:real; bandera:boolean; Begin bandera:=false; Repeat clrscr; Menu(op); Case op of 1: begin CargarVector_Datos(Nombres,Notas,A); bandera:=true; readkey; end; 2: begin if (bandera) then begin writeln(' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'); writeln(' ~ PARA MOSTRAR ~ '); writeln(' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'); writeln(' 1. Notas Altas y su Posicion'); writeln(' 2. Notas Bajas y su Posicion'); readln(opc); MostrarNotas(Nombres,Notas,opc,A); readkey; end else begin writeln('Primero haga la Opcion 1'); readkey; end; end; 3: begin if (bandera) then begin // PROMEDIO // writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'); writeln(' PROMEDIO DE LA CARGA DEL VECTOR '); writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'); writeln(); prom:= Prome_Gral(Notas,A); writeln(' Su Promedio es:',' ',prom:0:2); writeln(); writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'); writeln(' ~ PARA MOSTRAR ~ '); writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'); writeln('1. Datos y Posicion de aquellos que Superan el Promdeio'); writeln('2. Datos y Posicion de aquellos que No Superan el Promdeio'); readln(punto); Mostrar_PosyDat(Nombres,Notas,punto,A,prom); readkey; end else begin writeln('Primero haga la Opcion 1'); readkey; end; end; 4: begin writeln(' ~ See you next to day ~ '); readkey; end else begin writeln('UD A INGRESADO UN NUMERO EQUIVOCADO'); readkey; end; end; Until (op = 4); readkey; end. 2
Compartir