Professional Documents
Culture Documents
41
CAPTULO VI
INICIO
A,B,C
C ES MAYOR
B ES MAYOR B>C
si
no
C=
C ES MAYOR FIN
no
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 races reales de una ecuacin de segundo grado
program segundogrado;
var
A,B,C,X1,X2,D:REAL;{DECLARA X, Y, Z COMO VARIABLES REALES}
BEGIN
WRITELN;
42 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
INICIO
A,B,C
D = BB-4AC
X1 = (-B + SQRT(D))/2A
D >= 0
si X2 = (-B SQRT(D)/2A
no
C=
FIN
3 MAYOR2 Programa que permite hallar el mayor de tres nmeros utilizando el operador AND
trabaja cuando los nmeros introducidos son iguales, asignando la condicin 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.
INTRODUCCIN A LA COMPUTACIN MAT 1104 . 43
INICIO
A,B,C
no
no
no
C>=B and C>=A C ES MAYOR
si
no
FIN
4 MEDIO Programa que permite encontrar el valor intermedio de tres nmeros enteros
introducidos por teclado, este programa se resuelve de manera ms 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.
44 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
INICIO
A,B,C
no
no
no
A > C and C > B C ES INTERME
si
no
no
no
no
C >A and A > B C ES MAYOR
si
no
FIN
END;
WRITELN;
WRITELN('LA SUMA ES=',S);
READLN;
END.
6 SERIE2
100 99 98 97
....... N
2 1 3 2 4 3 5 4
{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.
46 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
12 22 32
......... N
7 3 9 5 11 7
{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.
INTRODUCCIN A LA COMPUTACIN MAT 1104 . 47
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 nmeros primos menores a 10000, el
algoritmo ha sido mejorado, admitiendo que un nmero es primo si no admite divisin entera
hasta que es dividido por su raz cuadrada, el programa, tambin elimina el anlisis de todos los
nmeros 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.
INTRODUCCIN A LA COMPUTACIN MAT 1104 . 49
16 ADIVIFOR Programa que permite al usuario adivinar un nmero aleatorio generado por el
computador comprendido entre 0 y 100, utiliza la sentencia for y el comando break
INICIO
k=random(100))
I=16
no si
C=
C=I grande
k=n fallaste
no
si
acertaste
FIN
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
INICIO
K=random(100))
I=I+1
no si
C=
acertaste grande
I=6
I=6
no
si
si
k <> n fallaste FIN
no
{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')
52 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
PROGRAM MULTEAYB;
USES CRT;
VAR
IM,M,A,B,C:INTEGER;
S:LONGINT;
LTI
CLRSCR;
INTRODUCCIN A LA COMPUTACIN MAT 1104 . 53
INICIO
N = 1000
I=1 N
N N DP = DP + 1
INT
I I si
N>B
no
DP =2 CP = CP + 1
si
no N
N = N + 1 ; DP = 0
no
N>2000 CP
si FIN
21 CUENTA PRIMOS Cuenta y muestra los nmeros 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.
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;
INTRODUCCIN A LA COMPUTACIN MAT 1104 . 55
END;
WRITELN(N, EN BASE 10 ES IGUAL A ,B8, EN BASE 8);
READLN;
END.
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.
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.
56 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
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.
X = random(10000)/10000
Y = random(10000)/10000
Y>=(1-x*x) C=C+1
si
no
Si generamos miles de puntos y contamos los que
se encuentren dentro el cuarto de circulo, la totalidad J
de los mismos en relacin al total representarn el
rea del cuarto de crculo, al multiplicar este valor C1=C1+(4*C/1000)
por cuatro se tiene el rea del circulo de radio uno
que es igual a Pi 4C/100000
28 IMPRESION
{imprime secuencia en forma de triangulo}
program impre1;
58 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
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 impresin
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 impresin en el punto deseado mediante gotoxy lo cual permite
ubicar el cabezal de impresin en la columna X fila Y
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.
60 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
INICIO
9 8 7 6 5 4 3 2 1 0 CERO
UNO
DOS
TRES
CUATRO
FIN
CINCO
SEIS
SIETE
OCHO
NUEVE
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);
INTRODUCCIN A LA COMPUTACIN 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.
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 );
62 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
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.
INTRODUCCIN A LA COMPUTACIN MAT 1104 . 63
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.
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
64 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
35 MATRIZ1 Carga e imprime una matriz 5 por 5 con los primeros mltiplos de cuatro por filas
4 8 12 16 20 J
24 28 32 36 40
44 48 52 56 60 FIN
64 68 72 76 80
84 88 92 96 100
INTRODUCCIN A LA COMPUTACIN MAT 1104 . 65
36 MATONCOL Carga e imprime una matriz ondulada por columnas con nmeros naturales
INICIO
M=4
J=1 5
si no
J mod 2=0
I=5 1 J=1 5
A[I,J] = M A[I,J] = M
4 4
M=M+1 M=M+1
I I
I=1 5
J=1 5
A[I,J]
J J FIN
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
66 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
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
trmino.
PROGRAM MATRIZ4;
TYPE
MATRIZ=ARRAY[1..20,1..20] OF INTEGER;
VAR
I,J,K,C,V,SIG,N:INTEGER;
A:MATRIZ;
BEGIN
INTRODUCCIN A LA COMPUTACIN 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.
39 MATDIAPS Carga una matriz 8 por 8 con ceros en la diagonal principal y secundaria y unos
en las dems posiciones}
PROGRAM MATRIZEX;
TYPE
MATRIZ=ARRAY[1..100,1..100] OF INTEGER;
68 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
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.
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 nmeros fijos y la segunda cargada
con nmeros 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;
INTRODUCCIN A LA COMPUTACIN 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.
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
70 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
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;
42 MATESPIRAL Carga e imprime la matriz espiral de dimensin N por N con los primeros
nmeros 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;
INTRODUCCIN A LA COMPUTACIN 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.
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
72 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
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 nmeros aleatorios y aumenta la
matriz identidad duplicando el nmero 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
INTRODUCCIN A LA COMPUTACIN MAT 1104 . 73
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.
45 SISTECUA
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];
INTRODUCCIN A LA COMPUTACIN 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;
76 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
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
INTRODUCCIN A LA COMPUTACIN 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
78 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
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;
INTRODUCCIN A LA COMPUTACIN 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
50 SUMMATDI
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 nmeros aleatorios y
verifica el resultado mediante el producto de la matriz original por la inversa.
AUMENTAR
I=1 N
J=1 N
I=J A[I,J+N] = 0
no
si
A[I,J+N] = 1
FIN
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
PROCEDURE CERO;
BEGIN
I:=L;
FOR K:=L+1 TO N DO
BEGIN
B:=A[K,L]; CERO
I=L
K=L+1 N
INTRODUCCIN A LA COMPUTACIN MAT 1104 . 83
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 CEROSARRIBA
A[I,J]:=A[I,J]+(-B)*A[N1,J];
END;
N1:=N1-1 I=N1-1 1
END;
B=A[I,N1]
PROCEDURE INVERSA;
BEGIN J=1 2 N
FOR I:=1 TO N DO
FOR J:=1 TO N DO A[I,J]=A[I,J]*(-B)+A[N1,J]
Y[I,J]:=A[I,J+N];
END;
J
PROCEDURE VERIFICACION;
BEGIN
FOR K:=1 TO N DO NI = N1-1
FOR I:=1 TO N DO
FOR J:=1 TO N DO I
P[K,I]:= P[K,I]+M[K,J]*Y[J,I];
END; FIN
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;
84 INTRODUCCIN A LA COMPUTACIN MAT 1104 .
N1:=N;
FOR L:=1 TO N-1 DO
CEROSARRIBA;
WRITELN('MATRIZ INVERSA');INVERSA;IMP(Y);
WRITELN('VERIFICACION');VERIFICACION;IMP(P);
READLN; VERIFICACION
END.
K=1 N
INVERSA
I=1 N
I=1 N
J=1 N
J=1 N
P[K,I]:= P[K,I]+M[K,J]*Y[J,I];
Y[I,J] = A[I,J+N]
J
J INICIO
I
I N
K
FIN CARGAR
IMP FIN
AUMENTAR
L=1 N
PIVOTE
CERO
N1 = N
L=1 N-1
CEROSARRIBA
INVERSA;IMP
VERIFICACION; IMP FIN
L