Logo Studenta

TRABAJO PRACTICO N8

¡Este material tiene más páginas!

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

Continuar navegando