Saludos acá les dejo varios ejercicios tipo examen para que los desarrollen, practiquen y tomen fortalezas, adelante muchachos les invito a que los hagan todos y cada uno de ellos
- Desarrolle una función que devuelva una cadena con un caracter repetido n veces.
- Implemente una función que elimine los caracteres en blanco a la izquierda de una cadena y retorne esta sin los espacios en blanco a la izquierda.
- Realice una función que elimine los caracteres en blanco a la derecha de una cadena y retorne ésta sin los blancos a la derecha.
- Escriba una función que determine si una cadena esta vacia o no.
- Desarrolle una función que elimine los espacios en blanco a ambos extremos de la cadena.
- Implemente una función que devuelva una cadena invertida.
- Un palíndromo es una palabra que se lee igual hacia adelante que hacia atras. Desarrolle una función que determine si una palabra es palíndrome o no.
- Un número capicúo se refiere a cualquier número que se lee igual de izquierda a derecha y de derecha a izquierda. Escriba una función que determine si un número es capicúo o no.
- Escriba una función que determine la cantidad de minusculas en una cadena.
- Escriba una función que determine la cantidad de mayusculas en una cadena.
- Desarrolle una función que calcule la cantidad de veces que se repite un caracter dado en una cadena.
- Escriba una función que remplace un caracter por otro en una cadena.
- desarrolle una función que lea caracter a caracter, mostrandolo por pantalla, mediante el teclado y que valide que el caracter pertenezca a un conjunto valido de caracteres devolviendo la cadena resultante.
- Realice una función que compare dos cadenas y que devuelva 0 si cad1
es mayor que cad2, 1 si cad1 es igaul a cad2, y 2 si cad1 es mayor que cad2. - Desarrolle una función que devuelva una cadena en minusculas.
- Elabore el conjunto de funciones necesarias para convertir de una base númerica a otra base. Es decir, decimal a binario, decimal a octal, decimal a hexadecimal, octal a binario, octal a hexadecimal, octal a decimal, hexadecimal a binario, hexadecimal a octal, hexadecimal a decimal, binario a decimal, binario a octal y binario a hexadecimal.
Aquí les dejo la solución del primero
ResponderEliminarfunction rellenar_car(cual : char; cuantos : byte) : string;
var
cad : string;
i : byte;
begin
cad := ''; (* cadena nula no tiene ningún caracter*)
for i := 1 to cuantos do
begin
cad := cad + cual;
end;
rellenar_car := cad;
end;
2. Implemente una función que elimine los caracteres en blanco a la izquierda de una cadena y retorne esta sin los espacios en blanco a la izquierda.
ResponderEliminarfunction limpiar_blancos_izq(cad : string) string;
Begin
if (pos(' ',cad) = 1)
then while (pos(' ',cad) = 1) do
delete(cad, 1, 1)
else (* nada que hacer *);
limpiar_blancos_izq := cad;
End;
una pregunta a que se refiere al decir que if (pos(' ',cad) = 1)
Eliminarel =1 ? y en el delete(cad, 1, 1) . muchas gracias .
3. Realice una función que elimine los caracteres en blanco a la derecha de una cadena y retorne ésta sin los blancos a la derecha.
ResponderEliminarfunction limpiar_blancos_der(cad : string) string;
Begin
if (cad[ length(cad) ] = ' ')
then while (cad[ length(cad) ] = ' ') do
delete(cad, length(cad), 1)
else (* nada que hacer *);
limpiar_blancos_der := cad;
End;
4. Escriba una función que determine si una cadena esta vacia o no.
ResponderEliminarFunction cadena_vacia(cad : string) : boolean;
Begin
cadena_vacia := (ord(cad[0]) = 0);
(* otra forma valida cadena_vacia := (length(cad) = 0); *)
End;
Fé de erratas;
ResponderEliminarEn los ejercicios 2 y 3, en la declaración de cabecera de las funciones se omitio accidentalmente el signo ":" para establecer el tipo de la función
Así fué como quedaron declaradas, pero al emplearlas les daria un error de comiplación donde se les indicaria que se esperaba el signo ":"
function limpiar_blancos_izq(cad : string) string;
begin
...
end;
function limpiar_blancos_der(cad : string) string;
begin
...
end;
Estas deben quedar realmente así:
function limpiar_blancos_izq(cad : string) : string;
begin
...
end;
function limpiar_blancos_der(cad : string) : string;
begin
...
end;
5. Desarrolle una función que elimine los espacios en blanco a ambos extremos de la cadena.
ResponderEliminarfunction limpiar_blancos_extremos( cad : string) : string;
begin
if (pos(' ',cad) = 1)
then while (pos(' ',cad) = 1) do
delete(cad,1,1)
else (* Nada que hacer *);
if (cad[length(cad)] = ' ')
then while (cad[length(cad)] = ' ') do
delete(cad,length(cad),1)
else (* Nada que hacer*);
limpiar_blancos_extremos := cad;
end;
6. Implemente una función que devuelva una cadena invertida.
ResponderEliminarfunction invertir_cadena( s : string) : string;
var
c : string;
i : byte;
begin
c := ''; (*se inicializa cadena nula *)
for i := length(s) downto 1 do
c := c + s[i];
invertir_cadena := c;
end;
7. Un palíndromo es una palabra que se lee igual hacia adelante que hacia atras. Desarrolle una función que determine si una palabra es palíndrome o no.
ResponderEliminarfunction espalindrome(s : string) : boolean;
var
inv : string;
i : byte;
begin
inv := ''; (* inicializar cadena nula*)
for i := length(s) downto 1 do
inv := inv + s[i];
espalindrome := (s = inv);
end;
8. Un número capicúo se refiere a cualquier número que se lee igual de izquierda a derecha y de derecha a izquierda. Escriba una función que determine si un número es capicúo o no.
ResponderEliminarfunction escapicuo(n : longint) : boolean;
var
s : string;
inv : string;
i : byte;
begin
inv := ''; (*inicializar en cadena nula*)
str(n,s);
for i := length(s) downto 1 do
inv := inv + s[i];
escapicuo := (s=inv);
end;
Carlos Prado exp 22405
ResponderEliminarLas cadenas de caracteres o string Consiste en una serie de secuencias de caracteres cuyo numero de longitud (longinth) puede estar entre 0 y 255 caracteres.
Se puede definir un longitud de cadena poniéndoles string[n] donde n esta entre 0 y 255.
Su longitud pueder ser tanto física como lógica, la fsica corresponde al máximo numero de carcteres que pueda almacenar y la lógica al numero de caracteres que tiene en un instante determinado.
Concatenar
Operador para concatenar es: (+) , el cual se utiliza para unir varias cadenas en una sola
Ejemplo:
Cade1:=(‘esto es un ejemplo’);
Cade2:=(‘de concatenación de cadenas’);
cadR:=cad1+ cad2;
la función concat realiza la misma función que el operador
Ejemplo
Funtion concat(cad1,cad2…,):string;
cadena en ingles la llamamos (string) el concepto que tenemos hacerca de ella es una secuencia de conjuntamente ordenadas de una longitud arbitraria, la cual la conforman elementos que pertenecen a un lenguaje o un alfabeto y esta esta conformada por letras, signos, simbolos u otros signos
ResponderEliminarString: Turbo Pascal tiene el tipo de dato string que almacena información de texto. Este dato se puede almacenar en constantes y en variables de cadena. Una variable de cadena está declarada para la palabra string seguida de la longitud máxima de la cadena encerrada entre corchetes.
ResponderEliminarlos string son como archivo de carcteres cuya
ResponderEliminarfuncion ,son diversa o puede ser conbinada con otro tipo de herramienta, en pascal
ejemplo
funtion nombre(cad:=string):strg;
var
m:byte;nomb:string
begin
nomb:=''.
for n:=length(caddown 1do
nomb:=concat(inv,cad[n];
nomb:=nomb
end;
begin
clrcr;
write('cadena:');
readln(n);
write('nombre:',nombre(n));
readkay;
end:
Algunos Tips de interes...
ResponderEliminarPara definir un conjunto de char podemos hacer la siguiente declaración:
Type
Tconjunto_ch = set of char;
Para declarar una variable del tipo conjunto de char
var
conjuntovalido : Tconjunto_ch;
Asignar un conjunto de char a la variable del tipo conjunto:
conjuntovalido := ['a'..'z'];
Verificar que un caracter leido este dentro de un conjunto valido
ch := readkey;
if ch in conjuntovalido then begin
...(* Hacer lo necesario ya que se cumple *)
end
else begin
...(* Hacer lo necesario si no se cumple *)
end;
validar que se mantenga en un ciclo mientras la tecla no este en un conjunto valido de salida
var
conjunto_salida : Tconjunto_ch;
ch : char;
begin
conjunto_salida := [#13,#27]; (* Tecla Enter y Tecla escape respectivamente *)
repeat
ch := readkey;
... (* Aqui va el codigo necesario ara hacer lo que tenga que hacerse *)
until ch in conjunto_salida;
end.
Estos son los codigo de algunas teclas importantes
Const
Especial = #0;
Enter = #13;
Escape = #27;
ArrowLeft = #75;
ArrowRigh = #77;
ArrowUpper = #72;
ArrowDown = #80;
Inicio = #71;
Fin = #79;
Insertar = #82;
Suprimir = #83;
Retroceso = #8;
F1 = #59;
F2 = #60;
Las teclas especiales como las de dirección arriba, abajo, izquierda, derecha, F1, F2 entre otras se leen en dos partes la primera debe ser al hacer un readkey #0 que indica que es una tecla especial, luego se hace otro readkey para leer la segunda parte de la tecla, vean arriba unas constantes definidas para ello.
para borrar un caracter en la pantallay dejar el curso en esa posición en espera de una tecla se puede hacer así:
write(#8#32#8); (* retroceso o backspace, barra espaciadora o espacio en blanco, backspace o retroceso, respectivamente *)
Habla AMIGO y se te abriran las puertas
Una interesante función para hayar la potecia de un número:
ResponderEliminarfunction potencia(base, exp : integer) : longint;
var
p : longint;
i : integer;
begin
if (exponente=0)
then p := 1
else begin
p := base;
for i := 2 to exponente do
p := p*base;
end;
potencia := p;
end;
Una manera de llevar un numero decimal a base binaria
ResponderEliminar...
if (n=0)
then cbin := '0'
else while (n>0) do
begin
resto := n mod 2;
(* se determina el resto de la divición entera entre 2*)
str(resto,nb);
(* obtengo el digito binario *)
cbin := concat(nb, cbin);
(* construyo el numero binario*)
n := n div 2;
(* realizo la divición entera*)
end;
dec2bin := cbin; (* retorna la cadena con el numero binario *)
...
Para las otras conversiones de decimal a otra base es de forma análoga, la variación esta de decimal a hexadecimal dado que los números 10, 11, 12, 13, 14, 15 y 16 son en base hexadecimal A, B, C, D, E y F respectivamente
ResponderEliminarse debe agregar una comprobación luego de haber obtenido el resto de la división entera por 16, parecida a esta:
...
case resto of
0..9 : str(resto,nh);
10..15 : nh := chr(55+resto); (* Ord('A')=65,...Ord('F')=70 *)
end;
...
la variable nh se le asigna el dígito de la cadena hexadecimal resultante del resto de la división entera por 16
una manera de llevar de binario a decimal
ResponderEliminar...
acum := 0;
p := length(nbin);
(* longitud de la cadena binaria*)
for i := p downto 1 do
begin
b := ord(nbin[i])-48;
(* Ord('0')=48 y Ord('1')=49 *)
if b=1 then acum := acum + (b*potencia(2,p-i))
else; (*
nada que hacer *)
end;
bin2dec := acum;
...
De manera análoga se haría para la conversión de otra base a decimal, considerando los casos particulares como por ejemplo de base hexdecimal a decimal
ResponderEliminarDeseo que les sirvan todos estos tips de ayuda, y sobre todo que sus comentarios hagan crecer este blog....
habla AMIGO y se te abrirán las puertas...
estoy haciendo un programa que tengo que por ejemplo introducir un nombre completo y de ahi que salga en ascii despues el primer nombre en binario el segundo en octal el primer apellido en decimal y el segundo apellido en hexadecimal ya tengo los primeros dos me falta el de octal,decimal,hexadecimal alguna idea o alguien que me ayude
ResponderEliminarHola, debes obterner el codigo ascci de cada caracter que conforma el nombre. el codigo ASCII de la letra "A" es 65, al tener este numero lo conviertes a la base numerica que necesistes, tomando en cuenta que debes concatenar los carecteres resuktante si fuera el caso.
EliminarHola alguien me puede ayudar con algunos ejercicios en diagrama de flujo
ResponderEliminarque necesita?
Eliminarhola oye me podrias ayudar con un programa de cadenas con caracteres?
ResponderEliminarHola me podrian ayudar en como realizar una funcion que muestra la palabra mas larga de una cedena?
ResponderEliminarNecesito ayuda por favor
ResponderEliminar