44
INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 41 CAPÍTULO VI PROGRAMAS EN TURBO PASCAL Para tener un mejor aprovechamiento de los programas se sugiere transcribirlos y ejecutarlos en Turbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros introducidos por teclado PROGRAM MAYOR; VAR A,B,C:INTEGER; BEGIN WRITE('A=');READLN(A); WRITE('B=');READLN(B); WRITE('C=');READLN(C); IF A>B THEN IF A>C THEN WRITELN('A ES MAYOR') ELSE WRITELN('C ES MAYOR') ELSE IF B>C THEN WRITELN('B ES MAYOR') ELSE WRITELN('C ES MAYOR'); READLN; END. 2 SEGUGRAD Programa que encuentra las raíces reales de una ecuación de segundo grado program segundogrado; var A,B,C,X1,X2,D:REAL;{DECLARA X, Y, Z COMO VARIABLES REALES} BEGIN WRITELN; INICIO si no C= A > B no A ES MAYOR FIN A,B,C si no C= A > C C ES MAYOR si no C= B > C C ES MAYOR B ES MAYOR

SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

  • Upload
    others

  • View
    12

  • Download
    1

Embed Size (px)

Citation preview

Page 1: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 41

CAPÍTULO VI

PROGRAMAS EN TURBO PASCAL

Para tener un mejor aprovechamiento de los programas se sugiere transcribirlos y ejecutarlos en

Turbo Pascal

6.1 PROGRAMAS BÁSICOS

1 MAYOR Programa que encuentra el mayor de tres números enteros introducidos por teclado

PROGRAM MAYOR;

VAR

A,B,C:INTEGER;

BEGIN

WRITE('A=');READLN(A);

WRITE('B=');READLN(B);

WRITE('C=');READLN(C);

IF A>B THEN IF A>C THEN WRITELN('A ES MAYOR')

ELSE WRITELN('C ES MAYOR')

ELSE IF B>C THEN WRITELN('B ES MAYOR')

ELSE WRITELN('C ES MAYOR');

READLN;

END.

2 SEGUGRAD Programa que encuentra las raíces reales de una ecuación de segundo grado

program segundogrado;

var

A,B,C,X1,X2,D:REAL;{DECLARA X, Y, Z COMO VARIABLES REALES}

BEGIN

WRITELN;

INICIO

si

no C=

A > B

no

A ES MAYOR

FIN

A,B,C

si

no C=

A > C

C ES MAYOR

si

no C=

B > C

C ES MAYOR

B ES MAYOR

Page 2: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 42

WRITE('INTRODUZCA LA VARIABLE A = ');READLN(A);

WRITE('INTRODUZCA LA VARIABLE B = ');READLN(B);

WRITE('INTRODUZCA LA VARIABLE C = ');READLN(C);

D:=(B*B)-(4*A*C);

IF D>=0 THEN BEGIN

X1:=(-B+SQRT(D))/(2*A);

X2:=(-B-SQRT(D))/(2*A);

WRITE('X1=',X1:3:7);

WRITE(' X2=',X2:3:4);

END

ELSE WRITE('RAICES IMAGINARIAS');

READLN;

END.

3 MAYOR2 Programa que permite hallar el mayor de tres números utilizando el operador AND

trabaja cuando los números introducidos son iguales, asignando la condición de mayor a todos los

mayores que son iguales

PROGRAM MAYOR2;

VAR

A,B,C:INTEGER;

BEGIN

WRITE('A='); READLN(A);

WRITE('B='); READLN(B);

WRITE('C='); READLN(C);

IF (A>=B) AND (A>=C) THEN WRITELN('A ES MAYOR');

IF (B>=A) AND (B>=C) THEN WRITELN('B ES MAYOR');

IF (C>=B) AND (C>=A) THEN WRITELN('C ES MAYOR');

READLN;

END.

INICIO

A,B,C

si

no C=

D >= 0

RAICES X1, X2

MAYOR

FIN

Raices Imaginarias

D = BB-4AC

X1 = (-B + SQRT(D))/2A

X2 = (-B – SQRT(D)/2A

Page 3: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 43

4 MEDIO Programa que permite encontrar el valor intermedio de tres números enteros

introducidos por teclado, este programa se resuelve de manera más elegante si no se utiliza el

operador AND.

PROGRAM MEDIO;

USES CRT;

VAR

A,B,C:INTEGER;

BEGIN

CLRSCR;

WRITELN('INTRODUZCA TRES ENTEROS DIFERENTES');

WRITE('A=');READLN(A);

WRITE('B=');READLN(B);

WRITE('C=');READLN(C);

IF (A>B) AND (B>C) THEN WRITELN('B ES EL INTERMEDIO');

IF (C>B) AND (B>A) THEN WRITELN('B ES EL INTERMEDIO');

IF (A>C) AND (C>B) THEN WRITELN('C ES EL INTERMEDIO');

IF (B>C) AND (C>A) THEN WRITELN('C ES EL INTERMEDIO');

IF (B>A) AND (A>C) THEN WRITELN('A ES EL INTERMEDIO');

IF (C>A) AND (A>B) THEN WRITELN('A ES EL INTERMEDIO');

READLN;

END.

INICIO

si

no

A>=B and A>=C

no

A ES MAYOR

FIN

A,B,C

si

no

B>=A and B>=C B ES MAYOR

si

no

C>=B and C>=A C ES MAYOR

Page 4: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 44

INICIO

I = 1 → N

I*M

I

FIN

S

N, M

S = S + M * I

6.2 PROGRAMAS CON SERIES

5 SERIE1 Permite sumar una serie de N términos, múltiplos de M

{SUMA N MULTIPLOS DE M}

PROGRAM SERIE1;

VAR

I,N,M:INTEGER;

S:LONGINT;

BEGIN

WRITE('INGRESE NUMERO DE TERMINOS=');READLN(N);

WRITE('INGRESE MULTIPLO=');READLN(M);

FOR I:=1 TO N DO

BEGIN

S:=S+I*M;

WRITE(I*M,'+');

si

no

C >A and A > B

INICIO

FIN

A,B,C

si

no

A > C and C > B

si

no

A>B and B< C

no

B ES INTERME

si

no

C >B and B > A B ES INTERME

C ES INTERME

si

no

B > C and C > A

no

C ES INTERME

si

no

B >A and A > C A ES INTERME

C ES MAYOR

Page 5: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 45

END;

WRITELN;

WRITELN('LA SUMA ES=',S);

READLN;

END.

6 SERIE2

{SUMA FRACCIONES DECIMALES ENTRE 0 Y 3}

PROGRAM SERIE2;

USES CRT;

VAR

I:INTEGER;

S,FD:REAL;

BEGIN

CLRSCR;

FOR I:=1 TO 30 DO

BEGIN

S:=S+I/10;

FD:=I/10;

WRITE(FD:1:1,'+');

END;

WRITELN;

WRITELN('LA SUMA ES=',S:3:3);

READLN;

END.

7 SERIE4 Permite sumar una serie de la forma

N.......45

97

34

98

23

99

12

100

{SUMA SERIE(100/2-1)-(99/3+2)+..}

PROGRAM SERIE4;

VAR

A,B,C,SIG,N,I:INTEGER;

S:REAL;

BEGIN

A:=100; B:=2; C:=1; SIG:=-1;

WRITE('CUANTOS TERMINOS DESEA SUMAR ');READLN(N);

FOR I:=1 TO N DO

BEGIN

IF I MOD 2 <> 0 THEN WRITE('(',A,'/',B,'-',C,')-')

ELSE WRITE('(',A,'/',B,'+',C,')+');

S:=S+(-1)*SIG*(A/B+SIG*C);

A:=A-1; B:=B+1; C:=C+1; SIG:=SIG*(-1);

END;

WRITELN;WRITELN('SUMA=',S:4:4);

READLN;

END.

INICIO

I = 1 → 30

FD

I

FIN

S

S = S + I/10

FD = I / 10

Page 6: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 46

8 SERIE5 Este programa permite determinar cuantos números de la siguiente serie

.........4

1

3

1

2

11

deben sumarse para que dicha suma sea menor o igual a cuatro

PROGRAM SERIE5;

VAR

I:INTEGER;

S:REAL;

BEGIN

I:=1;WRITE('1+');

WHILE S<=4 DO

BEGIN

S:=S+1/I;

IF S<=4 THEN WRITE('(1/',I,')+');

I:=I+1;

END;

WRITELN;WRITELN('S=',S-(1/I):2:4);

WRITELN('NUMERO DE TERMINOS=',I-1);

READLN;

END.

9 SERIE6 Este programa permite hallar la suma de n términos de la serie

N.........711

3

59

2

37

1 222

{SUMA LA SERIE (1/7-3)+(4/9+5)+..}

PROGRAM EXAMEN;

VAR

A,B,C,N,SIG:INTEGER;

S:REAL;

BEGIN

WRITE('NUMERO DE TERMINOS=');READLN(N);

B:=7;C:=3;SIG:=-1;

FOR A:=1 TO N DO

BEGIN

S:=S+(A*A)/(B+C*SIG);

IF SIG=-1 THEN WRITE(A*A,'/',B,SIG*C,' + ')

ELSE WRITE(A*A,'/',B,'+',C,' + ');

B:=B+2;C:=C+2;SIG:=SIG*(-1);

END;

WRITELN;

WRITELN('S=',S);

READLN;

END.

INICIO

‘1+’

I

FIN

no

si S >=4

S = S + 1/I

I = 1

I +

S, I

Page 7: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 47

10 SERIE7 Permite hallar la suma de N términos de la serie

N........4

!3

3

!2

2

!1

donde el numerador corresponde al factorial de cada uno de los números

PROGRAM SERIE7;

VAR

N,D,NT,SIG,I:INTEGER;

S:REAL;

BEGIN

N:=1;D:=2;SIG:=1;

WRITE('NUMERO DE TERMINOS=');READLN(NT);

FOR I:=1 TO NT DO

BEGIN

S:= S+(SIG)*N/D;

WRITE(I,'!/',D);

IF I<>NT THEN

IF I/2<>INT(I/2)THEN WRITE('-') ELSE WRITE('+');

N:=N*(I+1);

D:=D+1;

SIG:=SIG*(-1);

END;

WRITELN('=',S:4:5);

READLN;

END.

11 SERIE8 Suma una variante de la serie de Fibbonacci de N términos

1 1 1 3 5 9 17………N

La serie tiene los 3 primeros valores igual a 1 y cada término siguiente se forma por la suma de

los tres anteriores

{SUMA SERIE VARIANTE DE LA SERIE DE FIBBONACCI}

PROGRAM SERIE8;

VAR

A,B,C,N,S,I,AUX:INTEGER;

BEGIN

A:=1;B:=1;C:=1;S:=3;

WRITE('NUMERO DE TERMINOS>=3 ');READLN(N);

WRITE('1 1 1');

FOR I:=4 TO N DO

BEGIN

AUX:=C;

C:=A+B+C;

S:=S+C;

A:=B;

B:=AUX;

WRITE(C:3);

END;

WRITELN(' SUMA DE ',N,' TERMINOS= ',S);

READLN;

END.

Page 8: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 48

12 SERIE9 Suma la siguiente serie de N términos

N.......8

27

6

9

4

3

2

1

PROGRAM SERIE9;

VAR

I,N,D,NT:LONGINT;

S:REAL;

BEGIN

WRITE('NUMERO DE TERMINOS ');READLN(NT);

N:=1;D:=2;

FOR I :=1 TO NT DO

BEGIN

S:=S+(N/D);

WRITE (N,'/',D,' + ');

D:=D+2;

N:=N+N+N;

END;

WRITELN;WRITELN('SUMA=',S:5:4);

READLN;

END.

13 SERIEPRIMO Este programa muestra y cuenta los números primos menores a 10000, el

algoritmo ha sido mejorado, admitiendo que un número es primo si no admite división entera

hasta que es dividido por su raíz cuadrada, el programa, también elimina el análisis de todos los

números pares

PROGRAM SERIEPRIMO;

TYPE

VECTOR=ARRAY[1..5000]OF LONGINT;

VAR

A:VECTOR;

I,D,J,C,CP,DP:LONGINT;

BEGIN

FOR I:=1 TO 5000 DO

BEGIN

CP:=(I*2-1);

D:=TRUNC(SQRT(CP));

FOR J:=2 TO D DO

IF CP/J=INT(CP/J) THEN DP:=1;

IF DP=0 THEN BEGIN

C:=C+1;A[C]:=CP;WRITE(A[C]:6);

END

ELSE DP:=0;

END;

WRITELN;WRITELN(' EXISTEN ',C,' NUMEROS PRIMOS MENORES A 10000');

READLN;

END.

Page 9: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 49

14 SERIEFIBBONACCI Este programa suma e imprime N términos de la serie de Fibbonacci

{SUMA SERIE FIBBONACCI}

PROGRAM FIBBONACCI;

VAR

N,I,S,A,B,C:LONGINT;

BEGIN

WRITE('NUMERO DE TERMINOS ');READLN(N);

A:=1; B:=1;

FOR I:=1 TO N DO

BEGIN

IF I<>N THEN WRITE(A,'+')

ELSE WRITE(A);

S:=S+A;

C:=A+B; A:=B; B:=C;

END;

WRITELN('=',S);

READLN;

END.

La salida de este programa será:

NUMERO DE TERMINOS 8

1 + 1 + 2 + 3 + 5 + 6 + 11 + 13 = 42

15 SERIE10 Imprime y suma N términos de la serie

N.......6

10

5

8

4

6

3

4

PROGRAM SUMA3;

VAR

A,B,SIG,N,I:LONGINT;

S:REAL;

BEGIN

A:=4;B:=3;SIG:=1;

WRITE('NUMERO DE TERMINOS A SUMAR=');READLN(N);

FOR I:=1 TO N DO

BEGIN

S:=S+SIG*A/B;

IF SIG=1 THEN WRITE('+',A,'/',B)

ELSE WRITE('-',A,'/',B);

A:=A+2;

B:=B+1;

SIG:=SIG*-1;

END;

WRITELN;

WRITELN('SUMA=',S:3:4);

READLN;

END.

Page 10: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 50

6.3 PROGRAMAS CON CICLOS

16 ADIVIFOR Programa que permite al usuario adivinar un número aleatorio generado por el

computador comprendido entre 0 y 100, utiliza la sentencia for y el comando break

{permite adivinar un número en 6 oportunidades}

program adivine1;

uses crt; var c,i,n,k :integer;

begin

clrscr;

randomize;k:=random(100);

writeln (‘Adivine un entero entre 0 y 100, tienes 6 oportunidades’);

for i:= 1 to 6 do

begin

read (n);

if k<>n then begin

if k<n then writeln (‘muy grande’)

else writeln (‘muy chico’)

end

else begin c:=i; break end

end;

writeln;

si

no C=

k < >n

grande

no

si

k < n chico

I = 1 → 6

I

no

si

k = n fallaste

acertaste

FIN

INICIO

N

C=I

k=random(100))

Page 11: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 51

if k=n then writeln(‘Bien campeonazo, acertaste en ‘,c,’ intentos’)

else writeln (‘Fallaste cabezón, el número era ‘, k);

readln;readln; end.

17 ADIVIWHI Programa que permite al usuario adivinar un numero aleatorio generado por el

computador comprendido entre 0 y 100, utiliza la sentencia while

{permite adivinar un numero en 6 intentos}

program adivwhile;

uses crt;

var c,i,n,k :integer;

begin

clrscr;

randomize;k:=random(100);

writeln ('Adivine un entero entre 0 y 100, tienes 6 oportunidades');

WHILE I<6 DO

begin

I:=I+1;

read (n);

if k<>n then

begin

if k<n then writeln (' muy grande ',I,' INTENTO')

no

INICIO

K=random(100))

I

si

no C=

k < >n

grande

no

si

k < n chico

si k <> n fallaste

acertaste

FIN

N

no

si

I = 6

I = I + 1

I = 6

Page 12: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 52

else writeln (' muy chico ',I,' INTENTO')

end

else

BEGIN

writeln(' Bien campeonazo, acertaste en ',I,' intentos');

I:=6;

END;

end;

writeln;

if k<>n then writeln (' Fallaste cabezón, el número era ', k);

READKEY;{permite salir de la pantalla de ejecución presionando una tecla}

end.

18 DETERMINANTE Permite hallar el determinante de una matriz cargada con numeros

aleatorios de dimensión 3 por 3

{permite hallar el determinante de una matriz aleatoria 3*3}

PROGRAM DETERMINANTE;

USES CRT; TYPE

MATRIZ=ARRAY[1..3,1..3] OF REAL;

VAR

I,J,N : INTEGER;

A : MATRIZ;

DET : REAL;

BEGIN randomize;CLRSCR;

WRITELN (‘MATRIZ A’);

FOR I:=1 TO 3 DO

BEGIN

FOR J:=1 TO 3 DO

BEGIN A[I,J]:=RANDOM(5);WRITE(A[I,J]:4:0);END;

WRITELN;

END;

{CALCULO DEL DETERMINANTE}

DET:=A[1,1]*(A[2,2]*A[3,3]-A[2,3]*A[3,2])+A[1,2]* (A[2,3]*A[3,1]-A[2,1]*A[3,3]) + A[1,3]*

(A[2,1]*A[3,2]-A[2,2]*A[3,1]);

WRITELN(‘EL DETERMINANTE BUSCADO ES ‘,DET:8:2);

READLN;

END.

19 MULTIPLOS ENTRE A Y B Suma múltiplos de M comprendidos entre A y B sin

considerar los extremos del intervalo

PROGRAM MULTEAYB;

USES CRT;

VAR

IM,M,A,B,C:INTEGER;

S:LONGINT;

ÚLTI

CLRSCR;

Page 13: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 53

WRITE(‘SUMAREMOS MÚLTIPLOS DE: ‘);READLN(M);

WRITE(‘DESDE A=’);READLN(A);

WRITE(‘HASTA B=’);READLN(B);

IM:=(A DIV M)*M+M;WRITE(IM);WRITELN;

WHILE IM<B DO

BEGIN

S:=S+IM;

WRITE(IM,’+’);

IM:=IM+M;

END;

WRITELN;

WRITELN(‘LA SUMA ES=’,S);

READLN;

END.

6.4 PROGRAMAS SOBRE NÚMEROS PRIMOS

20 PRIMOS Este programa para encontrar un número primo procede a dividir el mismo entre

todos los enteros menores o iguales a él, el algoritmo considerado es lento comparado con el

del programa 13

{GENERA E IMPRIME N NUMEROS PRIMOS}

PROGRAM PRIMOS;

VAR

I,NP,P,N,DP:INTEGER;

BEGIN

INICIO

N = 1000

si

no

I

NINT

I

N

N > B

DP = DP + 1

I

I=1 → N

si

no

DP =2 CP = CP + 1

si

no N>2000

FIN

N = N + 1 ; DP = 0

CP

N

Page 14: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 54

WRITE(‘CUANTOS NUMEROS PRIMOS DESEA OBTENER ‘); READLN(N);

WRITE(‘ 1’); NP:=2; P:=1;

WHILE P<>N DO

BEGIN

FOR I:=1 TO NP DO

IF NP MOD I =0 THEN DP:=DP+1;

IF DP=2 THEN BEGIN WRITE(NP:6); P:=P+1; END;

DP:=0;

NP:=NP+1;

END;

READLN; WRITELN;

END.

21 CUENTA PRIMOS Cuenta y muestra los números primos que existen entre 10000 y 20000

PROGRAM PRIMOS;

VAR

I,BP,DP,CP: INTEGER;

BEGIN

BP:=10000;

REPEAT

DP:=0;

FOR I:=1 TO BP DO

IF BP MOD I =0 THEN DP:=DP+1;

IF DP=2 THEN BEGIN WRITE(BP:6); CP:=CP+1; END;

BP:=BP+1;

UNTIL BP=20000;

WRITELN; WRITE(‘EXISTEN ‘,CP,’ NUMEROS PRIMOS’);

END.

6.5 PROGRAMAS DE CAMBIOS DE BASE

22 EB10AB8 Transforma un entero de base 10 a base 8

PROGRAM B10AB8;

USES CRT;

VAR

B10,B8,C,N:LONGINT;

BEGIN

CLRSCR;

C:=1;

WRITE(‘INTRODUZCA UN ENTERO EN BASE 10 ‘);READLN(B10);

N:=B10;

WHILE B10>=1 DO

BEGIN

B8:=B8+(B10 MOD 8)*C;

B10:=B10 DIV 8;

C:=C*10;

Page 15: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 55

END;

WRITELN(N,’ EN BASE 10 ES IGUAL A ‘,B8,’ EN BASE 8’);

READLN;

END.

23 B10ABN Transforma un entero de base 10 a base N, menor a 10

PROGRAM B10ABN;

USES CRT;

VAR

B10,B8,C,N,NB:LONGINT;

BEGIN

CLRSCR;

C:=1;

WRITE(‘INTRODUZCA UN ENTERO EN BASE 10 ‘);READLN(B10);

WRITE(‘INTRODUZCA LA NUEVA BASE ‘);READLN(NB);

N:=B10;

WHILE B10>=1 DO

BEGIN

B8:=B8+(B10 MOD NB)*C;

B10:=B10 DIV NB;

C:=C*10;

END;

WRITELN(N,’ EN BASE 10 ES IGUAL A ‘,B8,’ EN BASE ‘,NB);

READLN;

END.

24 EB8AB10 Transforma un entero de base 8 a base 10

PROGRAM EB8AB10;

USES CRT;

VAR

B10,B8,C,N,RE:LONGINT;

BEGIN

CLRSCR;

C:=1;

WRITE('INTRODUZCA UN ENTERO EN BASE 8 ');READLN(B8);

N:=B8;

WHILE B8>=1 DO

BEGIN

RE:=B8 MOD 10;

B10:=B10+RE*C;

B8:=B8 DIV 10;

C:=C*8;

END;

WRITELN(N,' EN BASE 8 ES IGUAL A ',B10,' EN BASE 10');

READLN;

END.

Page 16: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 56

25 FRAC10A8 Permite transformar una fracción de base 10 a base 8

PROGRAM FRAC10A8;

VAR

N,F8,DEN:REAL;

I:INTEGER;

BEGIN

WRITE('FRACCION EN BASE 10 = ');READLN(N);

DEN:=10;

FOR I:= 1 TO 5 DO

BEGIN

F8:=F8+(INT(N*8))/DEN;

N:=FRAC(N*8);

DEN:=DEN*10;

END;

WRITELN('LA FRACCION EN BASE 8 ES = ',F8:1:5);

READLN;

END.

26 F8AF10 Este programa efectúa la transformación de una fracción de base 8 a base 10

{transforma una fracción de base 8 a base 10}

PROGRAM F8AF10;

USES CRT;

VAR

F10,F8,N:REAL;

C,CF,I,RE:LONGINT;

BEGIN

CLRSCR;

C:=8;

WRITE('LA FRACCION EN BASE 8 ES = ');READLN(F8);

N:=F8;

FOR I:=1 TO 3 DO

BEGIN

RE:=TRUNC(F8*10);

F10:=F10+RE/C;

F8:=FRAC(F8*10);

C:=C*8;

END;

WRITELN(N:1:5,' EN BASE 8 ES IGUAL A ',F10:1:5,' EN BASE 10');

READLN;

END.

Page 17: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 57

6.6 PROGRAMAS DIVERSOS

27 VALORPI Para estimar el valor de Pi consideremos

el área de un cuarto de círculo de radio 1 inscrito en

un cuadrado de lado 1, como el siguiente:

Si generamos miles de puntos y contamos los que

se encuentren dentro el cuarto de circulo, la totalidad

de los mismos en relación al total representarán el

área del cuarto de círculo, al multiplicar este valor

por cuatro se tiene el área del circulo de radio uno

que es igual a Pi

{permite aproximar el valor de pi}

{metodo de probabilidad}

PROGRAM CIRCULO;

VAR

C,N,I,j:LONGINT;

Y,X,Z,C1:REAL;

BEGIN

RANDOMIZE;

for j:=1 to 10 do

begin

FOR I:= 1 TO 100000 DO

BEGIN

X:=RANDOM(10000)/10000;

Y:=RANDOM(10000)/10000;

IF Y<=sqrt(1-X*X) THEN C:=C+1;

END;

C1:=C1+(4*C/100000);

WRITELN(4*C/100000:3:4);C:=0;

end;

WRITELN(‘PROMEDIO=’,C1/10:3:4); readln;

END.

28 IMPRESION

{imprime secuencia en forma de triangulo}

program impre1;

INICIO

I=1 → 10

4C/100000

J

C1/10

J=1 → 100000

X = random(10000)/10000

Y = random(10000)/10000

no

si Y>=√(1-x*x)

C1=C1+(4*C/1000)

C=C+1

C = 0

I FIN

Page 18: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 58

uses crt;

var

i,j,n:integer;

begin

clrscr; n:=10;

for j:=1 to n do

begin

for i:=1 to n do

write(i:3); writeln; n:=n-1; end;

readln; end.

Este programa muestra la siguiente salida o impresión

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7

1 2 3 4 5 6

1 2 3 4 5

1 2 3 4

1 2 3

1 2

1

29 IMPGOTOXY Ubica la impresión en el punto deseado mediante gotoxy lo cual permite

ubicar el cabezal de impresión en la columna X fila Y

program impre2; uses crt;

var

i,j,n,k,l:integer;

begin

clrscr; n:=20; k:=5; l:=10;

for j:=1 to n do

begin

for i:=1 to n do

begin

gotoxy(l,k);

write(i*2); l:=l+3;

end;

writeln; n:=n-1; k:=k+1; l:=10;

end;

readln;

end.

El programa muestra la siguiente salida

Page 19: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 59

6.7 APLICACIONES DE CASE

30 LEEDIG Dado un dígito cualquiera, escribe el mismo literalmente

PROGRAM LEEDIG;

VAR

N:CHAR;

BEGIN

READ(N);

CASE N OF

‘O’:WRITE(‘ CERO’);

‘1’:WRITE(‘ UNO’);

‘2’:WRITE(‘ DOS’);

‘3’:WRITE(‘ TRES’);

‘4’:WRITE(‘ CUATRO’);

‘5’:WRITE(‘ CINCO’);

‘6’:WRITE(‘ SEIS’);

‘7’:WRITE(‘ SIETE’);

‘8’:WRITE(‘ OCHO’);

‘9’:WRITE(‘ NUEVE’)

ELSE

WRITE(‘ES OTRO CARACTER’);

END;

READLN;READLN;

END.

Page 20: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 60

31 LEE99 Lee números menores a 100}

program lee99;

var

n,digito,n1:integer;

begin

readln(n);

if n=0 then write(‘cero’);

if (n<100) and (n>=20) then

begin

n1:=n div 10 ; n:=n mod 10;

case n1 of

2:write(‘veinte ‘);

3:write(‘treinta ‘);

4:write(‘cuarenta ‘);

5:write(‘cincuenta ‘);

6:write(‘sesenta ‘);

7:write(‘setenta ‘);

8:write(‘ochenta ‘);

9:write(‘noventa ‘);

end;

end;

if (n<>0) and (n1<>0) then write(‘y ‘);

if (n>=0) and (n<10) then

case n of

1:writeln(‘uno’);

INICIO

N

N

9 8 7 6 5 4 3 2 1 0 CERO

UNO

DOS

TRES

CUATRO

CINCO

SEIS

SIETE

OCHO

NUEVE

FIN

Page 21: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 61

2:writeln(‘dos’);

3:writeln(‘tres’);

4:writeln(‘cuatro’);

5:writeln(‘cinco’);

6:writeln(‘seis’);

7:writeln(‘siete’);

8:writeln(‘ocho’);

9:writeln(‘nueve’);

end;

if (n<20) and (n>=10) then

begin

n:=n mod 10;

case n of

0:writeln(‘diez’);

1:writeln(‘once’);

2:writeln(‘doce’);

3:writeln(‘trece’);

4:writeln(‘catorce’);

5:writeln(‘quince’);

6:writeln(‘diez y seis’);

7:writeln(‘diez y siete’);

8:writeln(‘diez y ocho’);

9:writeln(‘diez y nueve’);

end;

end;

readln;

end.

32 LEE999 Programa que lee números enteros menores a 1000

program lee999;

var

n,digito,n1,n2:integer;

begin

readln(n);

if n=0 then write(‘cero’);

if (n>=100) and (n<1000) then

begin

n2:=n div 100; n:=n mod 100;

case n2 of

0:write(‘cien ‘);

1:write(‘ciento ‘);

2:write(‘doscientos ‘);

3:write(‘trescientos ‘);

4:write(‘cuatrocientos ‘);

5:write(‘quinientos ‘);

6:write(‘seiscientos ‘);

7:write(‘setecientos ‘);

8:write(‘ochocientos ‘);

Page 22: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 62

9:write(‘novecientos ‘);

end;

end;

if (n<100) and (n>=20) then

begin

n1:=n div 10 ; n:=n mod 10;

case n1 of

2:write(‘veinte ‘);

3:write(‘treinta ‘);

4:write(‘cuarenta ‘);

5:write(‘cincuenta ‘);

6:write(‘sesenta ‘);

7:write(‘setenta ‘);

8:write(‘ochenta ‘);

9:write(‘noventa ‘);

end;

end;

if (n<>0) and (n1<>0) then write(‘y ‘);

if (n>=0) and (n<10) then

case n of

1:writeln(‘uno’);

2:writeln(‘dos’);

3:writeln(‘tres’);

4:writeln(‘cuatro’);

5:writeln(‘cinco’);

6:writeln(‘seis’);

7:writeln(‘siete’);

8:writeln(‘ocho’);

9:writeln(‘nueve’);

end;

if (n<20) and (n>=10) then

begin

n:=n mod 10;

case n of

0:writeln(‘diez’);

1:writeln(‘once’);

2:writeln(‘doce’);

3:writeln(‘trece’);

4:writeln(‘catorce’);

5:writeln(‘quince’);

6:writeln(‘diez y seis’);

7:writeln(‘diez y siete’);

8:writeln(‘diez y ocho’);

9:writeln(‘diez y nueve’);

end;

end;

readln;

end.

Page 23: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 63

5.8 PROGRAMAS DE ORDENACIÓN (VECTORES)

33 BURBUJA Ordena una lista en orden creciente (o decreciente) por el método de la burbuja

PROGRAM BURBUJA;

USES CRT;

TYPE

VECTOR=ARRAY[1..1000]OF INTEGER;

VAR

I,J,N,AUX:INTEGER;

A:VECTOR;

BEGIN

CLRSCR; RANDOMIZE;

WRITE(‘NUMERO DE TERMINOS A ORDENAR ‘);READLN(N);

WRITELN(‘LISTA ORIGINAL’);

FOR I:=1 TO N DO

BEGIN A[I]:=RANDOM(100); WRITE(A[I]:4); END;

{ORDENACION POR BURBUJA}

WRITELN;

FOR I:=1 TO N-1 DO

FOR J:=I+1 TO N DO

IF A[I]<A[J] THEN BEGIN AUX:=A[I]; A[I]:=A[J];

A[J]:=AUX; END;

WRITELN(‘LISTA ORDENADA’);

FOR I:=1 TO N DO

WRITE(A[I]:4);

READLN;

END.

34 SHELL Permite ordenar una lista aplicando el algoritmo de Shell

PROGRAM SHELL;

TYPE

VECTOR=ARRAY[1..1000]OF INTEGER;

VAR

I,J,AUX,N,F:INTEGER;

A:VECTOR;

BEGIN RANDOMIZE;

WRITE(‘CUANTOS TERMINOS DESEA ORDENAR ‘);READLN(N);

WRITELN (‘LISTA ORIGINAL’);

FOR I:= 1 TO N DO

BEGIN

A[I]:=RANDOM(100);WRITE(A[I]:4);

END;

{ORDENACION POR EL METODO DE SHELL}

F:=TRUNC(N/2);

WHILE F<>0 DO

BEGIN

FOR I:=1 TO N-F DO

Page 24: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 64

INICIO

I=1 → 5

A[I,J]

J

FIN

J=1 → 5

M = 4

A[I,J] = M

4

M = M + 1

J

IF A[I+F]<A[I] THEN BEGIN AUX:=A[I]; A[I]:=A[I+F]; A[I+F]:=AUX; END;

F:=F-1;

END;

WRITELN;WRITELN(‘LISTA ORDENADA’);

FOR I:= 1 TO N DO

WRITE(A[I]:4);

READLN;

END.

6.9 PROGRAMAS CON MATRICES

35 MATRIZ1 Carga e imprime una matriz 5 por 5 con los primeros múltiplos de cuatro por filas

{CARGA MATRIZ COM MULTIPLOS DE 4}

PROGRAM MATRIZ1;

TYPE

MATRIZ=ARRAY[1..100,1..100] OF INTEGER;

VAR

I,J,M:INTEGER;

A:MATRIZ;

BEGIN M:=4;

FOR I:=1 TO 5 DO

BEGIN

FOR J:=1 TO 5 DO

BEGIN

A[I,J]:=M; WRITE(A[I,J]:4); M:=M+4;

END;

WRITELN;

END;

READLN;

END.

Este programa genera la siguiente impresión

4 8 12 16 20

24 28 32 36 40

44 48 52 56 60

64 68 72 76 80

84 88 92 96 100

Page 25: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 65

36 MATONCOL Carga e imprime una matriz ondulada por columnas con números naturales

PROGRAM MATONDCOL;

TYPE

MATRIZ=ARRAY[1..20,1..20]OF INTEGER;

VAR

I,J,M:INTEGER;

A:MATRIZ;

BEGIN

{CARGADO DE LA MATRIZ} M:=1;

FOR J:=1 TO 5 DO

IF J MOD 2 = 0 THEN FOR I:=5 DOWNTO 1 DO

BEGIN

A[I,J]:=M;

M:=M+1;

END

ELSE FOR I:=1 TO 5 DO

BEGIN

A[I,J]:=M;

M:=M+1;

END;

{IMPRESION DE LA MATRIZ}

FOR I:=1 TO 5 DO

BEGIN

INICIO

J=1 → 5

FIN

M = 4

I

I=5 → 1

A[I,J] = M

4

M = M + 1

J

I

J=1 → 5

A[I,J] = M

4

M = M + 1

no si J mod 2=0

J=1 → 5

I=1 → 5

A[I,J] J

Page 26: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 66

FOR J:=1 TO 5 DO

WRITE(A[I,J]:4);

WRITELN;

END;

READLN;

END.

37 MATONDFIL Carga e imprime una matriz ondulada por filas

PROGRAM MATRIZ1;

TYPE

MATRIZ=ARRAY[1..20,1..20]OF INTEGER;

VAR

I,J,M:INTEGER;

A:MATRIZ;

BEGIN

{CARGADO DE LA MATRIZ} M:=1;

FOR I:=1 TO 5 DO

IF I MOD 2 = 0 THEN FOR J:=5 DOWNTO 1 DO

BEGIN

A[I,J]:=M;

M:=M+1;

END

ELSE FOR J:=1 TO 5 DO

BEGIN

A[I,J]:=M;

M:=M+1;

END;

{IMPRESION DE LA MATRIZ}

FOR I:=1 TO 5 DO

BEGIN

FOR J:=1 TO 5 DO

WRITE(A[I,J]:4);

WRITELN;

END;

READLN;

END.

38 MAONCOAL Carga una matriz ondulada por columnas alternadas empezando por el último

término.

PROGRAM MATRIZ4;

TYPE

MATRIZ=ARRAY[1..20,1..20] OF INTEGER;

VAR

I,J,K,C,V,SIG,N:INTEGER;

A:MATRIZ;

BEGIN

Page 27: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 67

WRITE('DIMENSION=');READLN(N);

J:=N; C:=1; V:=N-1; SIG:=-1;

FOR K:=1 TO N DO

BEGIN

IF K MOD 2 <> 0 THEN

FOR I:=N DOWNTO 1 DO

BEGIN

A[I,J]:=C;

C:=C+1;

END

ELSE

FOR I:=1 TO N DO

BEGIN

A[I,J]:=C;

C:=C+1;

END;

J:=J+SIG*V;

SIG:=SIG*(-1); V:=V-1;

END;

FOR I:=1 TO N DO BEGIN FOR J:=1 TO N DO WRITE (A[I,J]:3);WRITELN; END;

READLN;

END.

Este programa produce la siguiente salida

39 MATDIAPS Carga una matriz 8 por 8 con ceros en la diagonal principal y secundaria y unos

en las demás posiciones}

PROGRAM MATRIZEX;

TYPE

MATRIZ=ARRAY[1..100,1..100] OF INTEGER;

Page 28: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 68

VAR

I,J,M:INTEGER;

A:MATRIZ;

BEGIN

FOR I:=1 TO 8 DO

BEGIN

FOR J:=1 TO 8 DO

BEGIN

IF (I=J) OR (I+J=9) THEN A[I,J]:=0

ELSE A[I,J]:=1;

WRITE(A[I,J]:4);

END;

WRITELN;

END;

READLN;

END.

La matriz resultante es la siguiente

0 1 1 1 1 1 1 0

1 0 1 1 1 1 0 1

1 1 0 1 1 0 1 1

1 1 1 0 0 1 1 1

1 1 1 0 0 1 1 1

1 1 0 1 1 0 1 1

1 0 1 1 1 1 0 1

0 1 1 1 1 1 1 0

40 SUMMAT Suma dos matrices, la primera cargada con números fijos y la segunda cargada

con números aleatorios

PROGRAM SUMMAT;

TYPE

MATRIZ=ARRAY[1..100,1..100] OF INTEGER;

VAR

I,J:INTEGER;

A,B,S:MATRIZ;

BEGIN

RANDOMIZE;

WRITELN('MATRIZ A');

FOR I:=1 TO 3 DO

BEGIN

FOR J:=1 TO 4 DO

BEGIN

A[I,J]:=RANDOM(10);

WRITE(A[I,J]:4);

END;

WRITELN;

Page 29: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 69

END;

WRITELN('MATRIZ B');

B[1,1]:=4; B[1,2]:=0; B[1,3]:=-1; B[1,4]:=10;

B[2,1]:=-6; B[2,2]:=7; B[2,3]:=-2; B[2,4]:=12;

B[3,1]:=2; B[3,2]:=9; B[3,3]:=8; B[3,4]:=16;

FOR I:=1 TO 3 DO

BEGIN

FOR J:=1 TO 4 DO

BEGIN

WRITE(B[I,J]:4);

END;

WRITELN;

END;

WRITELN('MATRIZ SUMA');

FOR I:=1 TO 3 DO

BEGIN

FOR J:=1 TO 4 DO

BEGIN

S[I,J]:=A[I,J]+B[I,J];

WRITE(S[I,J]:4);

END;

WRITELN;

END;

READLN;

END.

41 MATONDIA Carga e imprime una matriz de dimensión N por N ondulando en dirección de

la diagonal secundaria, de acuerdo al siguiente formato.

1 2 6 7 15

3 5 8 14 16

4 9 13 17 22

10 12 18 21 23

11 19 20 24 25

PROGRAM MATONDIA;

USES CRT;

TYPE MATRIZ=ARRAY[1..20,1..20]OF INTEGER;

VAR I,J,B,C,D,E,F,N,S,H:INTEGER;

A:MATRIZ;

BEGIN

CLRSCR; WRITE('DIMENSION=');READLN(N);

A[1,1]:=1;A[N,N]:=N*N;B:=2;C:=2;D:=2;E:=2;F:=N;

WHILE C<TRUNC(N*N/2) DO

BEGIN

FOR I:=1 TO B DO

IF S MOD 2 = 0 THEN

BEGIN

Page 30: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 70

A[I,D]:=C;C:=C+1;D:=D-1;

END

ELSE

BEGIN

A[D,I]:=C;C:=C+1;D:=D-1;

END;

B:=B+1; D:=B; S:=S+1

END;

WHILE C<N*N DO

BEGIN

FOR I:=E TO N DO

IF S MOD 2 = 0 THEN

BEGIN

A[I,F]:=C;C:=C+1;F:=F-1;

END

ELSE

BEGIN

A[F,I]:=C;C:=C+1;F:=F-1;

END;

E:=E+1; F:=N; S:=S+1;

END;

{IMPRESION DE LA MATRIZ RESULTANTE}

FOR I:=1 TO N DO

BEGIN

FOR J:= 1 TO N DO

WRITE(A[I,J]:4);

WRITELN;

END;

READLN;

END.

6.10 PROGRAMAS CON PROCEDIMIENTOS

42 MATESPIRAL Carga e imprime la matriz espiral de dimensión N por N con los primeros

números naturales

PROGRAM ESPIRAL;

TYPE

MATRIZ=ARRAY[1..20,1..20]OF INTEGER;

VAR

A:MATRIZ;

I,J,B,C,D,E,F,G,H,K,L,FI,N:INTEGER;

PROCEDURE FILA;

BEGIN

I:=FI;FI:=FI+1;

FOR J:=B TO D DO

BEGIN C:=C+1;A[I,J]:=C;END;

Page 31: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 71

END;

PROCEDURE COLUMNA;

BEGIN

FOR I:=E TO F DO

BEGIN C:=C+1;A[I,J]:=C;END;

END;

PROCEDURE ALIF;

BEGIN

FOR J:=G DOWNTO H DO

BEGIN C:=C+1;A[I,J]:=C;END;

END;

PROCEDURE ANMULOC;

BEGIN

FOR I:=K DOWNTO L DO

BEGIN C:=C+1;A[I,J]:=C;END;

END;

PROCEDURE IMPRESION;

BEGIN FOR I:=1 TO N DO

BEGIN FOR J:=1 TO N DO

WRITE(A[I,J]:4);

WRITELN; END;

END;

BEGIN

WRITE('DIMENSION DE LA MATRIZ = ');READLN(N);

B:=1; D:=N; E:=2; F:=N; G:=N-1; H:=1; K:=N-1; L:=2; FI:=1;

WHILE C<(N*N) DO

BEGIN

FILA; COLUMNA; ALIF; ANMULOC;

B:=B+1; D:=D-1; E:=E+1; F:=F-1; G:=G-1; H:=H+1; K:=K-1; L:=L+1;

END;

IMPRESION; READLN;

END.

43 MATPROPA Multiplica matrices cargadas con números aleatorios, el programa utiliza

procedimientos con parámetros.

PROGRAM MATPROPA;

USES CRT;

TYPE

MATRIZ=ARRAY[1..20,1..20] OF INTEGER;

VAR

I,J,K,F,CF,C: INTEGER;

A,B,P : MATRIZ;

procedure matrizab(fil,col:INTEGER;var mat:MATRIZ);

begin

FOR I:=1 TO FIL DO

FOR J:=1 TO COL DO

Page 32: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 72

MAT[I,J]:=RANDOM(16)-8; end;

procedure producto;

begin

FOR K:=1 TO F DO

FOR I:=1 TO C DO

FOR J:=1 TO C DO

P[K,I] := P[K,I] + A[K,J]*B[J,I];

END;

procedure IMP (fila,columna:integer;mat:matriz);

begin

for I:= 1 to fila do

begin

for j:= 1 to columna do

write (mat[i,j]:6); writeln; end;

end;

begin

clrscr; randomize;

WRITE(‘FILAS DE A = ‘);READLN(F);

WRITE(‘COLUMNAS DE A = FILAS DE B = ‘);READLN(CF);

WRITE(‘COLUMNAS DE B = ‘);READLN©;

WRITELN(‘MATRIZ A’);MATRIZAB(F,CF,A);IMP(F,CF,A);

WRITELN(‘MATRIZ B’);MATRIZAB(CF,C,B);IMP(CF,C,B);

WRITELN(‘MATRIZ PRODUCTO’);PRODUCTO;IMP(F,C,P);

READLN;

END.

44 MATAUMEN Genera una matriz N por N cargada con números aleatorios y aumenta la

matriz identidad duplicando el número de columnas. Utiliza procedimientos.

PROGRAM MATAUMEN;

USES CRT;

TYPE

MATRIZ=ARRAY[1..100,1..100] OF REAL;

VAR

I,J,N: INTEGER;

A : MATRIZ;

procedure CARGAR;

begin

FOR I:=1 TO N DO

FOR J:=1 TO N DO

A[I,J]:=RANDOM(10);

end;

procedure AUMENTAR;

begin

FOR I:=1 TO N DO

FOR J:=1 TO N DO

Page 33: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 73

IF I=J THEN A[I,J+N]:=1

ELSE A[I,J+N]:=0;

END;

procedure IMP(F,C:INTEGER);

begin

for I:= 1 to F do

begin

for j:= 1 to C do

write (' ',A[i,j]:4:4);

writeln;

end;

end;

begin

clrscr; randomize;

WRITE('DIMENSION DE LA MATRIZ = ');READLN(N);

WRITELN('MATRIZ ORIGINAL');CARGAR;IMP(N,N);

WRITELN('MATRIZ AUMENTADA');AUMENTAR;IMP(N,2*N);

READLN;

END.

Este programa produce la siguiente salida

45 SISTECUA

{RESUELVE SISTEMAS DE 3 ECUACIONES CON 3 INCOGNITAS}

USES CRT;

TYPE MATRIZ=ARRAY[1..20,1..20] OF REAL;

VAR

I,J,K,M,L,U,N,COL,SOL : INTEGER;

A :MATRIZ ;

B,C,AUX,AUX1,X,Y,Z : REAL;

PROCEDURE CARGARIMPRIMIR;

BEGIN

Page 34: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 74

randomize;CLRSCR;

writeln (‘ Dimension de la matriz’);readln(n);

WRITELN (‘ MATRIZ A’);

FOR I:=1 TO N DO

BEGIN

FOR J:=1 TO N+1 DO

BEGIN

A[I,J]:=(RANDOM(10));WRITE(A[I,J]:4:0);

END;

WRITELN;

END;

END;

PROCEDURE PIVOTE;

BEGIN

WRITELN(‘PIVOTE’);

COL:=COL+1; SOL:=SOL+1;K:=K+1;

WHILE (A[K,COL]<>1) AND (SOL<>n+1) DO

BEGIN

IF A[K,COL]<>0 THEN BEGIN

{PIVOTE UNITARIO}

AUX:=A[COL,COL];

FOR J:=1 TO N+1 DO

A[COL,J]:=A[COL,J]/AUX;

END ELSE BEGIN {CAMBIO DE FILAS DE LA MATRIZ} SOL:=SOL+1;

FOR J:= 1 TO N+1 DO

BEGIN

AUX1:=A[COL,J];

A[COL,J]:=A[SOL+1,J];

A[SOL+1,J]:=AUX1;

END;

END;

END;

END;

PROCEDURE IMPRESION;

BEGIN

FOR I:=1 TO N DO

BEGIN

FOR J:=1 TO N+1 DO

WRITE(A[I,J]:3:2,’ ‘);

WRITELN;

END;

END;

PROCEDURE CEROS;

BEGIN

WRITELN(‘CEROS’);

L:=L+1;

FOR I:=L+1 TO N DO BEGIN C:=A[I,L];

FOR J:=1 TO N+1 DO A[I,J]:=A[L,J]*C-A[I,J];

Page 35: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 75

END;

END;

BEGIN

CARGARIMPRIMIR;

PIVOTE;CEROS;IMPRESION;

PIVOTE;CEROS;IMPRESION;

PIVOTE;CEROS;IMPRESION;

Z:=A[3,4]; WRITELN(‘Z=’,Z:4:2);

Y:=A[2,4]-Z*A[2,3];WRITELN(‘Y=’,Y:4:2);

X:=A[1,4]-Z*A[1,3]-Y*A[1,2]; WRITELN(‘X=’,X:4:2);

READLN;

END. end.

46 MATTRISUP

{CONVIERTE LA MATRIZ AUMENTADA EN TRIANGULAR SUPERIOR}

PROGRAM TRIANGULARSUPERIOR;

USES CRT;

TYPE

MATRIZ=ARRAY[1..100,1..100] OF REAL;

VAR

DI,I,J,N,K,C,L: INTEGER;

A : MATRIZ;

AUX,D,B:REAL;

procedure CARGAR;

begin

FOR I:=1 TO N DO

FOR J:=1 TO N DO

A[I,J]:=RANDOM(10); end;

procedure AUMENTAR;

begin

FOR I:=1 TO N DO

FOR J:=1 TO N DO

IF I=J THEN A[I,J+N]:=1

ELSE A[I,J+N]:=0;

END;

PROCEDURE PIVOTE(I:INTEGER);

{BUSCA EL PIVOTE UNITARIO}

BEGIN

DI:=0; C:=1;

WHILE DI<N DO

BEGIN

IF A[I,I]=0 THEN BEGIN {CAMBIO DE FILAS}

FOR J:=1 TO 2*N DO

BEGIN AUX:=A[I,J]; A[I,J]:=A[I+C,J];A[I+C,J]:=AUX; END;

C:=C+1;DI:=DI+1;

Page 36: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 76

END

ELSE BEGIN {FILA ENTRE A[I,I]}

D:=A[I,I];

FOR J:=1 TO 2*N DO A[I,J]:=A[I,J]/D;

DI:=N;

END;

END;

IF C>N THEN WRITELN(‘NO EXISTE INVERSA’);

END;

PROCEDURE CERO(I:INTEGER);

{HALLA CEROS DEBAJO DELPIVOTE}

BEGIN

FOR K:=I+1 TO N DO

BEGIN

B:=A[K,I];

FOR J:=1 TO 2*N DO

A[K,J]:=A[I,J]*(-B)+A[K,J];

END;

END;

procedure IMP;

{IMPRIME LA MATRIZ AUMENTADA}

begin

for I:= 1 to N do

begin

for j:= 1 to 2*N do

write (‘ ‘,A[i,j]:4:4); writeln; end;

end;

begin

clrscr; randomize;

WRITE(‘DIMENSION DE LA MATRIZ = ‘);READLN(N);

WRITELN(‘MATRIZ ORIGINAL’);CARGAR;{A[1,1]:=0;A[2,1]:=0;A[3,1]:=0};IMP;

WRITELN(‘MATRIZ AUMENTADA’);AUMENTAR;IMP;

FOR L:=1 TO N DO

BEGIN

WRITELN(‘PIVOTE’);PIVOTE(L);IMP;

WRITELN(‘CERO’);CERO(L);IMP;

END;

READLN;

END.

47 MATCEROS

{VUELVE CEROS LOS ELEMENTOS DE LA PRIMERA COLUMNA DE UNA MATRIZ}

{EL ELEMENTO PIVOTE SE CONVIERTE EN UNO} PROGRAM CEROS;

USES CRT;

TYPE

MATRIZ=ARRAY[1..100,1..100] OF REAL;

VAR

Page 37: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 77

DI,I,J,K,N,C: INTEGER;

A : MATRIZ;

AUX,D,B:REAL;

procedure CARGAR;

begin

FOR I:=1 TO N DO

FOR J:=1 TO N DO

A[I,J]:=RANDOM(10); end;

procedure AUMENTAR;

begin

FOR I:=1 TO N DO

FOR J:=1 TO N DO

IF I=J THEN A[I,J+N]:=1

ELSE A[I,J+N]:=0;

END;

PROCEDURE PIVOTE;

BEGIN

DI:=0; C:=1; I:=1;

WHILE DI<N DO

BEGIN

IF A[I,I]=0 THEN BEGIN {CAMBIO DE FILAS}

FOR J:=1 TO 2*N DO

BEGIN AUX:=A[I,J]; A[I,J]:=A[I+C,J];A[I+C,J]:=AUX; END;

C:=C+1;DI:=DI+1;

END

ELSE BEGIN {FILA ENTRE A[I,I]}

D:=A[I,I];

FOR J:=1 TO 2*N DO A[I,J]:=A[I,J]/D;

DI:=N;

END;

END;

IF C>N THEN WRITELN(‘NO EXISTE INVERSA’);

END;

PROCEDURE CERO;

BEGIN I:=1;

FOR K:=2 TO N DO

FOR J:=1 TO 2*N DO

BEGIN

B:=A[K,J];

A[K,J]:=A[I,J]*(-B)+A[K,J];

END;

END;

procedure IMP;

begin

for I:= 1 to N do

begin

for j:= 1 to 2*N do

Page 38: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 78

write (‘ ‘,A[i,j]:4:4); writeln; end;

end;

begin

clrscr; randomize;

WRITE(‘DIMENSION DE LA MATRIZ = ‘);READLN(N);

WRITELN(‘MATRIZ ORIGINAL’);CARGAR;{A[1,1]:=0;A[2,1]:=0;A[3,1]:=0};IMP;

WRITELN(‘MATRIZ AUMENTADA’);AUMENTAR;IMP;

WRITELN(‘PIVOTE’);PIVOTE;IMP;

WRITELN(‘CERO’);CERO;IMP;

READLN;

END.

48 MATPIVOTE Busca el pivote unitario en una matriz

PROGRAM PIVOTEAR;

USES CRT;

TYPE

MATRIZ=ARRAY[1..100,1..100] OF REAL;

VAR

DI,I,J,N,K,C,F: INTEGER;

A : MATRIZ;

AUX,D,B:REAL;

procedure CARGAR;

begin

FOR I:=1 TO N DO

FOR J:=1 TO N DO

A[I,J]:=RANDOM(10); end;

procedure AUMENTAR;

begin

FOR I:=1 TO N DO

FOR J:=1 TO N DO

IF I=J THEN A[I,J+N]:=1

ELSE A[I,J+N]:=0;

END;

PROCEDURE PIVOTE;

BEGIN

DI:=0; C:=1;

WHILE DI<N DO

BEGIN

IF A[F,F]=0 THEN BEGIN {CAMBIO DE FILAS}

FOR J:=1 TO 2*N DO

BEGIN AUX:=A[F,J]; A[F,J]:=A[F+C,J];A[F+C,J]:=AUX; END;

C:=C+1;DI:=DI+1;

END

ELSE BEGIN {FILA ENTRE A[F,F]}

D:=A[F,F];

FOR J:=1 TO 2*N DO A[F,J]:=A[F,J]/D;

Page 39: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 79

DI:=N;

END;

END;

IF C>N THEN WRITELN(‘NO EXISTE INVERSA’);

END;

PROCEDURE CERO;

BEGIN

FOR K:=F+1 TO N DO

BEGIN

B:=A[K,F];

FOR J:=1 TO 2*N DO

A[K,J]:=A[F,J]*(-B)+A[K,J];

END;

END;

procedure IMP;

begin

for I:= 1 to N do

begin

for j:= 1 to 2*N do

write (‘ ‘,A[i,j]:4:4); writeln; end;

end;

begin

clrscr; randomize;

WRITE(‘DIMENSION DE LA MATRIZ = ‘);READLN(N);

WRITELN(‘MATRIZ ORIGINAL’);CARGAR;{A[1,1]:=0;A[2,1]:=0;A[3,1]:=0};IMP;

WRITELN(‘MATRIZ AUMENTADA’);AUMENTAR;IMP;

FOR F:=1 TO N-1 DO

BEGIN

WRITELN(‘PIVOTE’);PIVOTE;IMP;

WRITELN(‘CERO’);CERO;IMP;

END;

{F:=F+1;

WRITELN} READLN;

END.

49 MATINTERIOR Posibilita imprimir una matriz cuyos valores se incrementan hacia la parte

interna de la matriz

{imprime matriz con valores crecientes hacia el centro}

program matcrein;

uses crt;

type

matriz=array[1..20,1..20]of integer;

var

i,j,n,c:integer;

a:matriz;

begin

clrscr;

Page 40: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 80

write('dimension menor a 7 = ');readln(n);

for i:=1 to n do

begin

for j:=1 to n do

begin

if (i=1)or(i=n)or(j=1)or(j=n)

then begin

a[i,j]:=1;write(a[i,j]:3)

end

else

if(i=2)or(i=n-1)or(j=2)or(j=n-1)

then begin

a[i,j]:=2;write(a[i,j]:3);

end

else

begin

a[i,j]:=3;write(a[i,j]:3);

end;

end;

writeln;

end;

readln;

end.

50 SUMMATDI

{CARGA Y SUMA MATRICES DIAGONALES}

PROGRAM SUMADIAG;

TYPE

MATRIZ=ARRAY[1..20,1..20] OF INTEGER;

VAR

I,J,N:INTEGER;

A,B,S:MATRIZ;

PROCEDURE CARGAR;

BEGIN

FOR I:=1 TO N DO

FOR J:=1 TO N DO

BEGIN

IF I=J THEN A[I,J]:=1

ELSE A[I,J]:=0;

IF I+J=N+1 THEN B[I,J]:=1

ELSE B[I,J]:=0;

END;

END;

PROCEDURE IMPRIMIR(MAT:MATRIZ);

BEGIN

FOR I:=1 TO N DO

BEGIN

FOR J:=1 TO N DO

Page 41: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 81

WRITE(MAT[I,J]:2);

WRITELN;

END;

END;

PROCEDURE SUMA;

BEGIN

FOR I:=1 TO N DO

FOR J:=1 TO N DO

S[I,J]:=A[I,J]+B[I,J];

END;

BEGIN

WRITE(‘DIMENSION DE LA MATRIZ=’);READLN(N);

CARGAR;

IMPRIMIR(A);WRITELN;

IMPRIMIR(B);WRITELN;

SUMA;IMPRIMIR(S);

READLN;

END.

51 MATRIZ INVERSA Halla la inversa de una matriz cargada con números aleatorios y

verifica el resultado mediante el producto de la matriz original por la inversa.

{ENCUENTRA LA MATRIZ INVERSA}

PROGRAM INVERSA;

USES CRT;

TYPE

MATRIZ=ARRAY[1..20,1..20] OF REAL;

VAR

DI,I,J,K,N,C,L,N1: INTEGER;

A,Y,P,M:MATRIZ;

AUX,D,B:REAL;

procedure CARGAR;

begin

FOR I:=1 TO N DO

FOR J:=1 TO N DO

BEGIN

A[I,J]:=RANDOM(10);M[I,J]:=A[I,J];

END;

end;

procedure AUMENTAR;

begin

FOR I:=1 TO N DO

FOR J:=1 TO N DO

IF I=J THEN A[I,J+N]:=1

ELSE A[I,J+N]:=0;

END;

CARGAR

R

I=1 → N

J

FIN

J=1 → N

A[I,J] = RANDOM(10)

M[I,J] = A[I,J]

I

PIVOTE

DI=L ; C=1 ; I=L

Page 42: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 82

PROCEDURE PIVOTE;

BEGIN

DI:=L-1; C:=1; I:=L;

WHILE DI<N DO

BEGIN

IF A[I,I]=0 THEN BEGIN {CAMBIO DE FILAS}

FOR J:=1 TO 2*N DO

BEGIN AUX:=A[I,J];

A[I,J]:=A[I+C,J];

A[I+C,J]:=AUX;

END;

C:=C+1; DI:=DI+1;

END

ELSE BEGIN {FILA ENTRE A[I,I]}

D:=A[I,I];

FOR J:=1 TO 2*N DO

A[I,J]:=A[I,J]/D;

DI:=N;

END;

END;

IF DI>N THEN WRITELN('NO EXISTE INVERSA');

END;

PROCEDURE CERO;

BEGIN

I:=L;

FOR K:=L+1 TO N DO

BEGIN

B:=A[K,L];

AUMENTAR

I=1 → N

J

FIN

J=1 → N

A[I,J+N] = 1

I

no

si

I = J A[I,J+N] = 0

CERO

K=L+1 → N

I = L

Page 43: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 83

FOR J:=1 TO 2*N DO

A[K,J]:=A[I,J]*(-B)+A[K,J];

END;

END;

procedure IMP(MAT:MATRIZ);

begin

for I:= 1 to N do

begin

for j:= 1 to N do

write (' ',MAT[i,j]:4:3);

writeln;

end;

end;

PROCEDURE CEROSARRIBA;

BEGIN

FOR I:=N1-1 DOWNTO 1 DO

BEGIN

B:=A[I,N1];

FOR J:=1 TO 2*N DO

A[I,J]:=A[I,J]+(-B)*A[N1,J];

END;

N1:=N1-1

END;

PROCEDURE INVERSA;

BEGIN

FOR I:=1 TO N DO

FOR J:=1 TO N DO

Y[I,J]:=A[I,J+N];

END;

PROCEDURE VERIFICACION;

BEGIN

FOR K:=1 TO N DO

FOR I:=1 TO N DO

FOR J:=1 TO N DO

P[K,I]:= P[K,I]+M[K,J]*Y[J,I];

END;

begin

clrscr; randomize;

WRITE('DIMENSION DE LA MATRIZ = ');READLN(N);

WRITELN('MATRIZ ORIGINAL');CARGAR;IMP(A);{A[1,1]:=0;A[2,1]:=0;A[3,1]:=0;}

AUMENTAR;

FOR L:=1 TO N DO

BEGIN

PIVOTE;

CERO;

END;

CEROSARRIBA

I=N1-1 → 1

J

FIN

J=1 → 2 N

B=A[I,N1]

I

NI = N1-1

A[I,J]=A[I,J]*(-B)+A[N1,J]

Page 44: SENTENCIAS EN TURBO PASCALdocentes.uto.edu.bo/.../wp-content/uploads/6program.pdfTurbo Pascal 6.1 PROGRAMAS BÁSICOS 1 MAYOR Programa que encuentra el mayor de tres números enteros

INTRODUCCIÓN A LA COMPUTACIÓN MAT 1104 . 84

N1:=N;

FOR L:=1 TO N-1 DO

CEROSARRIBA;

WRITELN('MATRIZ INVERSA');INVERSA;IMP(Y);

WRITELN('VERIFICACION');VERIFICACION;IMP(P);

READLN;

END.

INVERSA

I=1 → N

J

FIN

J=1 → N

Y[I,J] = A[I,J+N]

I

VERIFICACION

I=1 → N

J

FIN

J=1 → N

P[K,I]:= P[K,I]+M[K,J]*Y[J,I];

I

K=1 → N

K

FIN

L=1 → N-1

INICIO

L=1 → N

L

CARGAR

IMP

AUMENTAR

L

N

PIVOTE

CERO

N1 = N

CEROSARRIBA INVERSA;IMP

VERIFICACION; IMP