1. 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.
  2. 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.
  3. Escribir un programa en Pascal que sume dos matrices bidimensionales. Las matrices para que puedan sumarse deben tener las mismas dimensiones.
  4. 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.
  5. 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.
  6. 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.
  7. Escribir un programa en Pascal que cuente las mayúsculas de una cadena de caracteres.
  8. 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.
  9. Escribir un programa en Pascal que cambie las mayúsculas de una cadena de caracteres a minúsculas y viceversa.
  10. 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.
  11. Escribir un programa en Pascal que encripte una cadena de caracteres sumando 2 al código ASCII de cada uno de sus caracteres.
  12. 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.
  13. 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.
  14. 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