Soluciones lección 011
Página 1 de 1.
Soluciones lección 011
Soluciones selectas para los ejercicios propuestos en la lección 11:
Solución ejercicio 3:
Solución ejercicio 4:
Solución ejercicio 3:
- Código:
Descripcion:
Programa que carga un arreglo de enteros desde la entrada estandar y luego halla
el mayor valor del arreglo junto con el indice que le corresponde, ademas de
determinar si el arreglo se encuentra ordenado en forma ascendente. Por mayor
simplicidad de la solucion, se incluyen en un mismo programa los tres programas
solicitados en la letra del ejercicio.
-------
*)
program Arreglos (input,output);
(* Definicion del tipo de datos para el arreglo *)
const N = 7;
type RangoN = 1..N;
Tabla = Array [RangoN] of Integer;
var i, posMax: integer;
ascendente: boolean;
arreglo: Tabla;
begin
(* Cargo el arreglo desde teclado *)
for i:=1 to N do
begin
write ('Ingrese el ',i,'-esimo entero: ');
read(arreglo[i])
end;
(* hallo el maximo valor y el indice que le corresponde *)
posMax := 1;
for i:=2 to N do
if arreglo[i] > arreglo[posMax] then
posMax := i;
(* determino si el arreglo esta ordenado en forma ascendente *)
ascendente := false;
i := 1;
while (i < N) and (arreglo[i] < arreglo[i+1]) do
i := i+1;
if i = N then
ascendente := true;
(* muestro resultados *)
writeln ('Maximo valor del arreglo: ',arreglo[posMax]);
writeln ('Posicion correspondiente: ',posMax);
if ascendente then
writeln('El arreglo esta ordenado en forma ascendente')
else
writeln('El arreglo no esta ordenado en forma ascendente')
end.
Solución ejercicio 4:
- Código:
Descripcion:
Programa que determina si una cadena de caracteres es subcadena de otra cadena de
caracteres. La primera cadena tiene M caracteres de longitud, mientras que la
segunda cadena tiene N caracteres de longitud. Se asume que la primera cadena es
mas corta que la segunda cadena. Los caracteres de ambas cadenas son leidos desde
la entrada estandar.
-------
*)
(* Precondicion: M > N *)
program SubCadena (input,output);
(* Definicion de los tipos de datos para las cadenas *)
const M = 5;
N = 12;
type CadenaM = Array [1..M] of Char;
CadenaN = Array [1..N] of Char;
var i,j,k: integer;
CadA: CadenaM;
CadB: CadenaN;
esSubCadena: boolean;
begin
(* Ingreso la primera cadena por teclado *)
write('Ingrese ',M,' caracteres: ');
for i:=1 to M do
read(CadA[i]);
readln;
(* Ingreso la segunda cadena por teclado *)
write('Ingrese ',N,' caracteres: ');
for j:=1 to N do
read(CadB[j]);
k := 1;
esSubCadena := false;
(* verifico si la primera es subcadena de la segunda *)
repeat
i := 1;
j := k;
(* trato de encontrar dos caracteres distintos *)
while (i <= M) and (CadA[i] = CadB[j]) do
begin
i := i+1;
j := j+1
end;
(* si logre llegar al final de la primera cadena, puedo
afirmar que es subcadena de la segunda *)
if i=M+1 then
esSubCadena := true
else
k := k+1;
(* me detengo cuando son iguales o cuando ya no me
alcanzan los caracteres de la segunda cadena *)
until (esSubCadena) or (k > N-M+1);
(* mostrar resultados *)
if esSubCadena then
begin
write ('el texto ''');
write (CadA);
write (''' se encuentra dentro de ''');
write (CadB);
writeln('''.')
end else
begin
write ('el texto ''');
write (CadA);
write (''' no se encuentra dentro de ''');
write (CadB);
writeln('''.')
end
end.
Temas similares
» Soluciones lección 009
» Soluciones lección 005
» Soluciones lección 021
» Soluciones lección 006
» Soluciones lección 007
» Soluciones lección 005
» Soluciones lección 021
» Soluciones lección 006
» Soluciones lección 007
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.