Académique Documents
Professionnel Documents
Culture Documents
EJERCICIOS RESUELTOS
CUADERNILLO DE PRACTICA
SEGUNDA PARTE
Pgina - 1
ARREGLOS a) Unidimensionales: Ejercicio Resuelto: Ingresar 20 nmeros reales en un arreglo y luego mostrarlos ordenados en forma decreciente.Chapn Ejer1 para 1 a 20 leer( NUM[I] ) para I = 1 a 19 para J = I+1 a 20 NUM[I] < NUM[J]
V F
I=
Programa Pascal. PROGRAM EJER1 (INPUT, OUTPUT); VAR I, J, AUX : INTEGER; NUM : ARRAY [1..20] OF INTEGER; BEGIN FOR I := 1 TO 20 DO BEGIN WRITE ('INGRESE NRO.'); READLN (NUM[I]) END; FOR I := 1 TO 19 DO FOR J := I+1 TO 20 DO IF NUM[I] < NUM[J] THEN BEGIN AUX := NUM[I]; NUM[I] := NUM[J]; NUM[J] := AUX END; FOR I := 1 TO 20 DO WRITE (NUM[I],' ') Pgina - 2
END.
Ejercicio Resuelto: Se ingresan 30 nmeros enteros ordenados en forma creciente y un valor N. Se desea saber si el valor N coincide con algun elemento del arreglo; si es as, indicar la posicin en que fu encontrado, sino exhibir cartel aclaratorio.Chapn Ejer2 I =
para
MED 15
PROGRAM EJER2 (INPUT, OUTPUT); VAR I, INF, SUP, MED, N : INTEGER; VEC: ARRAY [1..30] OF INTEGER; BEGIN FOR I := 1 TO 30 DO BEGIN WRITE ('INGRESE NRO.'); READLN (VEC[I]) END; WRITE ('INGRESE NRO. A BUSCAR'); READLN (N); INF := 1; SUP := 30; MED := 15; WHILE (INF<=SUP) AND (N<>VEC[MED]) DO BEGIN IF N<VEC[MED] THEN SUP:= MED - 1 ELSE INF:= MED + 1; MED := (INF + SUP) DIV 2 END; IF N <> VEC[MED] Pgina - 3
THEN WRITE ('EL VALOR', N, 'NO FUE ENCONTRADO') ELSE WRITE ('EL VALOR',N,'SE ENCUENTRA EN LA POSICION', MED) END.
Ejercicio Resuelto: Ingresar 10 elementos enteros en un arreglo y luego 13 elementos enteros en otro arreglo, dichos conjuntos ya ingresan ordenados en forma creciente. Se desea obtener un tercer arreglo de 23 elementos ordenados en forma creciente, intercalando los elementos de los arreglos ingresados (aplicar Mtodo MERGE).Chapn Ejer3 = 1 a 10 leer(V1 [I]) para J = 1 a 13 leer( V2 [J]) I1 ; J1 ; 1 Mientras (I <= 10) y (J <= 13)
V
para
V1[I] = V2[J] F V3[K] V1[I] V3[K] V1[I] V3[K] V2[J] I I+1 I I + 1 K K+1 J J + 1 V3[K] V2[J] J J+1 KK+1
V
Programa Pascal. PROGRAM EJER3(INPUT, OUTPUT); VAR I, J, K, L : INTEGER; V1 : ARRAY [1..10] OF INTEGER; V2 : ARRAY [1..13] OF INTEGER; Pgina - 4
V3 : ARRAY [1..23] OF INTEGER; BEGIN FOR I := 1 TO 10 DO BEGIN WRITE ('INGRESE NRO.'); READLN (V1[I]) END; FOR J := 1 TO 13 DO BEGIN WRITE ('INGRESE NRO.'); READLN (V2[J]) END; I := 1; J := 1; K := 1; WHILE ( I<= 10 ) AND ( J <= 13 ) DO BEGIN IF V1[I] < V2[J] THEN BEGIN V3[K] := V1[I]; I := I + 1 END ELSE IF V1[I] = V2[J] THEN BEGIN V3[K] := V1[I]; I := I + 1; K := K + 1; V3[K] := V2[J]; J := J + 1 END ELSE BEGIN V3[K] := V2[J]; J := J + 1 END; K := K + 1 END; IF I > 10 THEN FOR L := J TO 13 DO BEGIN V3[K] := V2[L]; K := K + 1 END ELSE FOR L := I TO 10 DO BEGIN V3[K] := V1[L]; K := K + 1 END; WRITELN (' ARREGLO ORDENADO '); FOR I := 1 TO 23 DO WRITE (V3[I], ' ') Pgina - 5
END.
b) Multidimensionales: Ejercicio Resuelto: Se tiene las notas de 4 parciales tomados a 30 alumnos ordenados en forma creciente por NRO DE ALUMNO. El nro de alumno es un valor entero entre 1 y 12000. Se desea ingresar un NRO DE ALUMNO y buscarlo por medio de la bsqueda dicotmica dentro del arreglo. Si se encuentra, dar el nro de alumno junto con las notas de los 4 parciales; sino exhibir cartel aclaratorio.Chapn Ejer4 Para I = 1 A 30 Para J = 1 A 5 Leer( AL [I,J]) Leer( NRO ) INF 1 ; SUP 30 ; MED 15 Mientras INF <= SUP Y NRO <> AL[MED,1] NRO < AL [MED,1] V SUP MED - 1 MED (INF + SUP) DIV 2 NRO <> AL [MED,1]
V F
INF MED + 1
Para I= 1 A 5 Mostrar(AL[MED,I])
Programa Pascal. PROGRAM Ejer4 (INPUT, OUTPUT); VAR I, J, INF, SUP, MED, NRO : INTEGER; AL : ARRAY [1..30, 1..5] OF INTEGER; BEGIN WRITE ('INGRESE NRO Y 4 NOTAS DE LOS 30 ALUMNOS'); FOR I := 1 TO 30 DO BEGIN FOR J := 1 TO 5 DO READ (AL[I,J]); WRITELN Pgina - 6
END; WRITE ('INGRESE NRO. DEL ALUMNO A BUSCAR'); READLN (NRO); INF := 1; SUP := 30; MED := 15; WHILE INF <= SUP AND NRO <> AL[MED,1] DO BEGIN IF NRO < AL[MED,1] THEN SUP := MED - 1 ELSE INF := MED + 1; MED := (INF + SUP) DIV 2 END; IF NRO <> AL [MED,1] THEN WRITE (' ERROR EN EL NRO. DE ALUMNO') ELSE BEGIN WRITELN (' ALUMNO NOTA 1 NOTA 2 NOTA 3 NOTA 4'); FOR I := 1 TO 5 DO WRITE (AL[MED,I] END END.
Ejercicio Resuelto: A fin de ao se tiene la lista de alumnos de un curso (no ms de 40 alumnos), con la informacin de cada uno: - Nombre (hasta 20 caracteres) - Nota parcial 1 - Nota parcial 2 reales - Nota parcial 3 Se desea saber toda la informacin de los 4 mejores alumnos de dicha comisin. Exhibir adems, la lista de los nombres de los alumnos ordenada en forma decreciente de acuerdo a la ltima nota. OBSERVACION: SE utilizar el promedio de notas para determinar los 4 mejores alumnos
Chapn Ejer5
X 1 Y 1 Leer (car) Mientras car <> * And x<=40 Mientras y <20 and car <> . nom[x,y]car Yy+1 Leer (Car) Para z1 a 4 Leer (nota[x,z]) Nota[x,5]nota[x,5]+nota[x,z] Nota[x,5]nota[x,5]/4 X x+1 Leer (Car) Para y 1 a x -1 Para z y+1 a x Nota[z,5]<nota[y,5] Aux Nota[z] Nota[z] nota[y] nota[y]aux aux1nom[z] nom[z]nom[y] nom[y]aux1 para y1 a 4 para z1 a 20 mostrar (nom[y,z]) para m1 a 5 mostrar (nota[y,m] Para y 1 a x -1 Para z y+1 a x Nota[z,4]<nota[y,4] Aux Nota[z] Nota[z] nota[y] nota[y]aux aux1nom[z] nom[z]nom[y] nom[y]aux1 para y1 a x para z1 a 20 mostrar (nom[y,z])
Pgina - 8
Programa Pascal. PROGRAM Ejer5(INPUT, OUTPUT); VAR x,y, z: INTEGER; nom: ARRAY [1..40, 1..20] OF CHAR; nota : ARRAY [1..40, 1..5] OF real; aux : ARRAY [1..20] OF CHAR; aux1: ARRAY [1..5] OF real; BEGIN
For x:= 1 TO 40 DO BEGIN For y:= 1 TO 20 DO Nom[x,y] := ; For y:=1 TO 5 DO Nota[x,y] :=0 END; X:= 1; Y:= 1; Read (car); While car <> * And x<=40 DO BEGIN WHILE y <20 and car <> . DO BEGIN nom[x,y] :=car; Y:=y+1; Read (Car) END; For z:=1 TO 4 DO BEGIN Read (nota[x,z]); Nota[x,5] :=nota[x,5]+nota[x,z] END; Nota[x,5] :=nota[x,5]/4; X:= x+1; Read (Car) END; For y:=1 TO x 1 DO For z:= y+1 TO x DO IF Nota[z,5]<nota[y,5] THEN
Pgina - 9
BEGIN Aux:= Nota[z]; Nota[z] := nota[y]; nota[y] :=aux; aux1:=nom[z]; nom[z] :=nom[y]; nom[y] :=aux1 END; for y:=1 TO 4 DO BEGIN for z:=1 TO 20 DO write (nom[y,z]); for m:=1 TO 5 DO write (nota[y,m] END; For y:= 1 TO x 1 DO For z:= y+1 TO x DO IF Nota[z,4]<nota[y,4] THEN BEGIN Aux:=Nota[z]; Nota[z] := nota[y]; nota[y] :=aux; aux1:=nom[z]; nom[z] :=nom[y]; nom[y] :=aux1 END; for y:=1 TO x DO for z:=1 TO 20 DO write (nom[y,z])
END.
Pgina - 10