- Escribir un programa en Pascal que genera la inversa de una cadena
de caracteres.
La cadena original y la invertida deben almacenarse en arrays
independientes.
PROGRAM EJERC101;
USES CRT;
VAR original: ARRAY [1..4] of STRING;
VAR invertida:ARRAY [1..4] of STRING;
VAR cadena:STRING;
VAR i:INTEGER;
BEGIN
ClrScr;
cadena:='hola';
FOR i:=1 TO LENGTH(cadena) DO
BEGIN
original[i]:= cadena[i];
WRITE (original[i]);
END;
WRITELN ('');
FOR i:=LENGTH(cadena) DOWNTO 1 DO
BEGIN
invertida[i]:=cadena[i];
WRITE (invertida[i]);
END;
END.
PROGRAM EJERC101;
USES CRT;
CONST cad_orig:ARRAY[1..9] of CHAR='GUAYABITA';
VAR cad_copi:STRING;
VAR i,j:INTEGER;
BEGIN
ClrScr;
WRITELN(cad_orig);
j:=9;
FOR i:=1 TO 9 DO
BEGIN
cad_copi[j]:=cad_orig[i];
j:=j-1;
END;
FOR i:=1 TO 9 DO
BEGIN
WRITE(cad_copi[i]);
END;
END.
- Escribir un programa en Pascal que sume dos matrices bidimensionales.
Las matrices para que puedan sumarse deben tener las mismas dimensiones.
PROGRAM EJERC102;
USES CRT;
CONST m1:ARRAY [1..2,1..2] of INTEGER=( (3,1),(4,5) );
CONST m2:ARRAY [1..2,1..2] of INTEGER=( (1,3),(4,2) );
VAR m3: ARRAY [1..2,1..2] of INTEGER;
VAR f, c:INTEGER;
BEGIN
ClrScr;
FOR f:=1 TO 2 DO
FOR c:=1 TO 2 DO
BEGIN
m3[f,c]:=(m1[f,c] + m2[f,c]);
WRITE ('(',f,',',c,') '); {Muestra la posicion}
WRITELN (m3[f,c]);
END;
END.
PROGRAM EJERC102;
USES CRT;
CONST m_1:ARRAY[1..3,1..4] OF REAL= ( (12,13,14,10),
(15,16,17,10),
(18,19,20,10) );
CONST m_2:ARRAY[1..3,1..4] OF REAL= ( (1,1,1,1),
(1,1,1,1),
(1,1,1,1) );
VAR m_suma:ARRAY[1..3,1..4] OF REAL;
VAR i,j:INTEGER;
BEGIN
ClrScr;
FOR i:=1 TO 3 DO
FOR j:=1 TO 4 DO
m_suma[i,j]:=m_1[i,j]+m_2[i,j];
FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 4 DO
WRITE(m_1[i,j]:5:2,' ');
WRITELN(' ');
END;
WRITELN(' ');
FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 4 DO
WRITE(m_2[i,j]:5:2,' ');
WRITELN(' ');
END;
WRITELN(' ');
FOR i:=1 TO 3 DO
BEGIN
FOR j:=1 TO 4 DO
WRITE(m_suma[i,j]:5:2,' ');
WRITELN(' ');
END;
END.
- Escribir un programa en Pascal que elimine los blancos de una
cadena de caracteres.
La cadena original y la transformada deben almacenarse en arrays
independientes.
PROGRAM EJERC103;
USES CRT;
VAR cad_tra:ARRAY [1..20] of STRING;
CONST cad_ori:STRING='la casa es azul';
VAR i:INTEGER;
BEGIN
ClrScr;
FOR i:=1 TO LENGTH(cad_ori) DO
BEGIN
IF cad_ori[i]<>' ' THEN
BEGIN
cad_tra[i]:=cad_ori[i];
WRITE (cad_tra[i]);
END;
END;
END.
PROGRAM EJERC103;
USES crt;
CONST cad_orig:STRING='Archipielago de Cabo Verde';
VAR cad_tran:STRING;
VAR i,j,nc:INTEGER;
BEGIN
ClrScr;
i:=1;
nc:=LENGTH(cad_orig);
j:=1;
FOR i:=1 TO nc DO
BEGIN
IF cad_orig[i] <> ' ' THEN
BEGIN
cad_tran[j]:=cad_orig[i];
j:=j+1;
END
END;
WRITELN(cad_orig);
FOR i:=1 TO j-1 DO
BEGIN
WRITE(cad_tran[i]);
END;
END.
- Escribir un programa en Pascal que cuente las mayúsculas de
una cadena de caracteres.
PROGRAM EJERC104;
USES CRT;
CONST cadena:STRING=('EstO es PROGraMAcion');
VAR i, mayus:INTEGER;
BEGIN
ClrScr;
FOR i:=1 TO LENGTH(cadena) DO
BEGIN
IF cadena[i] = UPCASE(cadena[i]) THEN
mayus:=mayus + 1;
IF cadena[i]=' ' THEN
mayus:=mayus - 1;
END;
WRITELN ('El numero de mayusculas es: ', mayus);
END.
PROGRAM EJERC104;
USES CRT;
CONST cad_orig:STRING='Archipielago de Cabo Verde';
VAR i,nc,n_may:INTEGER;
BEGIN
ClrScr;
nc:=LENGTH(cad_orig);
n_may:=0;
FOR i:=1 TO nc DO
BEGIN
IF (ORD(cad_orig[i]) >= 65) AND (ORD(cad_orig[i])
<= 90) THEN
n_may:=n_may+1;
END;
WRITELN(cad_orig);
WRITELN('MAYUSCULAS: ',n_may);
END.
- Escribir un programa en Pascal que cambie las mayúsculas
de una cadena de caracteres a minúsculas y viceversa.
PROGRAM EJERC105;
USES CRT;
VAR cadena:STRING;
VAR v_ascii,i:INTEGER;
BEGIN
ClrScr;
{Este programa cambia las mayusculas a minusculas y viceversa}
cadena:='ViCtOr';
FOR i:=1 TO LENGTH(cadena) DO
BEGIN
IF cadena[i] = UPCASE (cadena[i]) THEN
BEGIN
v_ascii:=ORD(cadena[i]);
cadena[i]:=(CHR(v_ascii+32));
END
ELSE
BEGIN
cadena[i]:=UPCASE (cadena[i]);
END;
WRITE (cadena[i]);
END;
END.
PROGRAM EJERC105;
USES CRT;
CONST cad_orig:STRING='Archipielago de Cabo Verde';
VAR i,nc:INTEGER;
BEGIN
ClrScr;
WRITELN(cad_orig);
nc:=LENGTH(cad_orig);
FOR i:=1 TO nc DO
BEGIN
IF (ORD(cad_orig[i]) >= 65) AND (ORD(cad_orig[i]) <= 90)
THEN
cad_orig[i]:=CHR(ORD(cad_orig[i]) + 32)
ELSE IF (ORD(cad_orig[i]) >= 97) AND (ORD(cad_orig[i])
<= 122) THEN
cad_orig[i]:=CHR(ORD(cad_orig[i])-32);
END;
WRITELN(cad_orig);
END.
- Escribir un programa en Pascal que encripte una cadena de
caracteres sumando 2 al código ASCII de cada uno de sus caracteres.
PROGRAM EJERC106;
USES CRT;
VAR cadena:STRING;
VAR encrip:INTEGER;
VAR i:INTEGER;
BEGIN
ClrScr;
WRITE ('Introduzca una cadena para encriptarla: ');
READLN (cadena);
WRITELN('');
FOR i:=1 TO LENGTH(cadena) DO
BEGIN
encrip:=ORD(cadena[i]);
cadena[i]:=(CHR(encrip + 2));
WRITE(cadena[i]);
END;
END.
PROGRAM EJERC106;
USES CRT;
CONST cad_orig:STRING='Archipielago de Cabo Verde';
VAR i,nc:INTEGER;
BEGIN
ClrScr;
WRITELN(cad_orig);
nc:=LENGTH(cad_orig);
FOR i:=1 TO nc DO
cad_orig[i]:=CHR(ORD(cad_orig[i])+2);
WRITELN(cad_orig);
END.
- Escribir un programa en Pascal que encripte los caracteres de una
cadena sumando 2 a los que situados en posiciones pares y 3 a los
situados en posiciones impares.
PROGRAM EJERC107;
USES CRT;
VAR cadena:STRING;
VAR encrip, i:INTEGER;
BEGIN
ClrScr;
WRITE ('Introduzca una cadena para encriptarla: ');
READLN (cadena);
WRITELN ('');
FOR i:=1 TO LENGTH (cadena) DO
BEGIN
IF (i mod 2)=0 THEN
BEGIN
encrip:=ORD(cadena[i]);
cadena[i]:= (CHR(encrip + 2));
END
ELSE
BEGIN
encrip:=ORD(cadena[i]);
cadena[i]:= (CHR(encrip + 3));
END;
WRITE(cadena[i]);
END;
END.
Estos son todos los ejercicios y espero que os sean de gran ayuda.
Sólo os pediría una cosa si distribuís estos ejercicios entre
vuestros amigos o a través de Internet, por favor, dejar mi nombre,
me ha costado un gran trabajo.
Otra opción que tienen los que hayan adquirido estos ejercicios, es
mandar un mensaje de confirmación para saber que los poseéis, y os
incluiré en una lista para mandaros más ejercicios.
Por favor, escribir ante cualquier duda o comentario que sirva
para mejorar los ejercicios.
Autor: Víctor Sánchez Sánchez Email: [email protected]
Volver