PROGRAM CONTAR_CARACTERES; TYPE TEXTO=STRING[100]; VAR

Anuncio
PROGRAM CONTAR_CARACTERES;
TYPE
TEXTO=STRING[100];
VAR
W:TEXTO;
X,R,CAR:LONGINT;
A:CHAR;
PROCEDURE LEER(VAR S:TEXTO);
VAR
T,L:LONGINT;
U:CHAR;
BEGIN
READ(U);T:=1;
WHILE U<>'.' DO
BEGIN
S[T]:=U;
READ(U);
T:=T+1;
END;
END;
PROCEDURE SALTB(S:TEXTO);
VAR
I:LONGINT;
BEGIN
WHILE (S[I]=' ') AND (S[I]<>'.')
BEGIN
I:=I+1;
END;
END;
DO
PROCEDURE SALTPAL(S:TEXTO);
VAR
I:LONGINT;
BEGIN
WHILE (S[I]<>' ') AND (S[I]<>'.') DO
BEGIN
I:=I+1;
END;
END;
FUNCTION CONTCAR(S:TEXTO;N:LONGINT):LONGINT;
VAR
P,I,Z:LONGINT;
BEGIN
I:=1;
SALTB(S);
P:=1;
WHILE (P<>N) AND (S[I]<>'.') DO
BEGIN
SALTPAL(S);
SALTB(S);
P:=P+1;
END;
Z:=1;
WHILE (S[I]<>' ') AND (S[I]<>'.') DO
BEGIN
I:=I+1;
Z:=Z+1;
END;
CONTCAR:=Z;
END;
BEGIN
REPEAT
car:=0;
WRITELN;
WRITELN;
WRITELN('
*****************************************');
WRITELN('
*
C O N T A R
C A R A C T E R E S
*
');
WRITELN('
*****************************************
');
WRITELN;
WRITELN('
INTRODUZCA UN TEXTO ACABADO EN PUNTO');
WRITELN;
LEER(W);
WRITELN;
WRITELN('
INTRODUZCA AHORA LA POSICION DE LA
PALABRA');
WRITELN('
CUYOS CARACTERES DESEA CONTAR');
READLN(R);
CAR:=CONTCAR(W,R);
WRITELN;
WRITELN('
LA PALABRA SITUADA EN DICHA POSICION
TIENE');
WRITELN('
UN NUMERO DE CARACTERES IGUAL A :');
WRITELN('
',CAR);
WRITELN;
WRITELN('
PRESIONA <ENTER>');
READLN;
WRITELN('
¨ DESEA SALIR ? -S o N-');
READLN(A);
UNTIL (A='S') OR (A='s');
END.
PROGRAM SUM_ESCU;
USES
CRT;
TYPE
TABLA=ARRAY[1..100] OF LONGINT;
VAR
T1,T2,T3:TABLA;
N,M:LONGINT;
R:CHAR;
PROCEDURE LEER(N:LONGINT; VAR T:TABLA);
VAR I,C:LONGINT;
BEGIN
I:=1;T[I]:=0;I:=I+1;READ(C);
{ INV: LEIDOS LOS I-1 PRIMEROS DIGITOS DE LA SECUENCIA Y TRAS SER
ALMACENADOS EN LOS CORRESPONDIENTES LUGARES I DE LA TABLA
^ PD(C)=Cx ELE. CURSO }
{ COTA: (N+2) -I }
{ NOTA: LA POSICION 1¦ DE CADA TABLA CONTIENE UN CERO Y DICHA POSICION ES RESERVADA PARA UNA POSIBLE LLEVADA }
WHILE I<>N+2 DO
BEGIN
T[I]:=C;
READ(C);
I:=I+1;
END;
END;
PROCEDURE SUMAR(T1,T2:TABLA;N,M:LONGINT; VAR T3:TABLA);
BEGIN
N:=N+1;M:=M+1;
{ INV: T3 CONTIENE LAS SUMAS DE LOS N-1 ULTIMOS LUGARES DE LAS
TABLAS
EN SUS N-1 ULTIMAS POSICIONES ^ T2[M] Y T1[N] ELE. CURSO ^
1<=N<=MAXIMA LONG. DE LAS TABLAS }
{ COTA: N }
WHILE N<>0 DO
BEGIN
IF T2[M]+T1[N]< 10 THEN T3[N]:=T1[N]+T2[M]
ELSE BEGIN T3[N]:=(T2[M]+T1[N])-10;T1[N-1]:=T1[N-1] +1; END;
N:=N-1;M:=M-1;
END;
IF T3[1]<>1 THEN T3[1]:=0 ELSE BEGIN END;
END;
BEGIN
REPEAT
CLRSCR;
WRITELN;
WRITELN;
WRITELN('
******************************************************************');
WRITELN(' ** PROGRAMA QUE CALCULA LA SUMA DE DOS NUMEROS COMO EN EL
COLE. **');
WRITELN('
******************************************************************');
WRITELN;
WRITELN(' DEME EL NUMERO DE DIGITOS DE SU PRIMER NUMERO ');
READ(N);
WRITELN(' INTRODUZCA DICHO NUMERO');
LEER(N,T1);
WRITELN(' DEME EL NUMERO DE DIGITOS DE SU SEGUNDO NUMERO ');
READ(M);
WRITELN(' INTRODUZCA SU SEGUNDO NUMERO ');
LEER(M,T2);
IF
N<=M THEN
BEGIN
SUMAR(T1,T2,M,N,T3);
WRITELN(' LA SOLUCION ES :');
{ INV: ESCRITOS LOS N-1 1§ ELE. DE LA TABLA SUMA (T3) ^
T3[N] ES EL ELE. CURSO ^ 1<=N<=M+1 }
FOR N:=1 TO M+1 DO WRITE('
END
ELSE
BEGIN
SUMAR(T1,T2,N,M,T3);
WRITELN(' LA SOLUCION ES:');
',T3[N]);
{ INV: ESCRITOS LOS M-1 1§ LUGARES DE LA TABLA SUMA (T3)
^
T3[M] ES EL ELE. CURSO ^ 1<=M<=N+1 }
FOR M:=1 TO N+1 DO WRITE('
END;
READLN;
WRITELN;
WRITELN;
WRITELN( ' ¨ DESEA CONTINUAR ?
READ(R);
UNTIL (R='N') OR (R='n');
END.
',T3[M]);
TECLEE -S o N- ');
program giro_de_matrices;
uses
crt;
type
matriz = array [1..15,1..15] of longint;
var
W,P:matriz;
X,K,R:longint;
S:char;
U,O:boolean;
procedure leer(n:longint;var a:matriz);
var
d,i,j:longint;
begin
{ INV: LEIDOS LOS N*(I-1)+(J-1) PRIMEROS ELEMENTOS DE LA
SECUENCIA
HAN SIDO GUARDADOS COMO LAS (I-1) PRIMERAS FILAS DE LA MATRIZ
Y LOS (J-1) PRIMEROS ELEMENTOS DE LA FILA I-ESIMA}
for i:=1 to n do
begin
{ INV: EL ELEMENTO N*(I-1)+J (ELEMENTO EN CURSO) ES
ALMACENADO
EN LA POSICION J DE LA FILA I-ESIMA}
for j:=1 to n do
begin
read(d);
a[i,j]:=d;
end;
end;
end;
procedure giro(n,z:longint;var m:matriz);
var
i,j,x:longint;
t:matriz;
begin
{ INV: GIRADAS LA MATRIZ X-1 VECES ^ M: MATRIZ EN CURSO}
for x:=1 to z do
begin
{ INV: TRATADAS LAS I-1 PRIMERAS FILAS Y LOS J-1 1§ ELEMENTOS
DE LA FILA I-ESIMA ^ EL ELEMENTO (I,J) ES EL ELEMENTO EN CURSO
^ T[N+1-J,I]=M[I,J].}
for i:=1 to n do
begin
{ INV: TRATADOS LOS (J-1) PRIMEROS ELEMENTOS DE LA FILA I-ESIMA
^
EL ELEMENTO (I,J) ES EL ELEMENTO EN CURSO ^ t[N+1-J,I]=m[I,J].}
for j:=1 to n do
begin
t[n+1-j,i]:=m[i,j];
end;
end;
{ INV: RETORNADAS LAS (I-1) PRIMERAS FILAS Y LOS J-1 ELE. DE
LA
FILA I A LA MATRIZ DE ORIGEN ^ (I,J)= ELE. CURSO}
for i:=1 to n do
begin
{ INV: RETORNADOS LOS J-1 PRIMEROS ELEMENTOS DE LA FILA I A LA
MATRIZ INICIAL ^ ELEMENTO (I,J) = ELE. CURSO}
for j:=1 to n do
begin
m[i,j]:=t[i,j];
end;
end;
end;
end;
procedure escribir(n:longint; m:matriz);
var
i,j,d:longint;
begin
{INV: ESCRITAS LAS I-1 1¦ FILAS Y LOS J-1 ELE. DE FILA I ^
(I,J)
ELE. CURSO}
for i:=1 to n do
begin
write('
');
{INV: ESCRITOS LOS J-1 1§ ELE. DE LA FILA I ^ (I,J) ELE.CURSO}
for j:=1 to n do
begin
d:=m[i,j];
write('
',d);
write('
');
end;
writeln;
end;
end;
BEGIN
REPEAT
CLRSCR;
WRITELN;
WRITELN;
WRITELN;
WRITELN('
ÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞ');
WRITELN('
ÞÞÞ
G I R O
D E
U N A
M A T R I Z
ÞÞÞ');
WRITELN('
ÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞ');
WRITELN;
WRITELN;
WRITELN('
TECLEA EL RANGO DE LA MATRIZ');
WRITELN;
WRITE('
');
READ(X);
WRITELN;
WRITELN('
TECLEA LOS NUMEROS QUE LA COMPONEN ');
WRITELN;
WRITE('
');
LEER(X,W);
WRITELN;
WRITELN('
WRITELN;
ESCRIBIR(X,W);
WRITELN;
WRITELN('
WRITELN('
WRITELN('
WRITELN('
WRITELN('
WRITELN('
WRITELN;
WRITE('
READLN(R);
GIRO(X,R,W);
WRITELN('
WRITELN;
ESCRIBIR(X,W);
WRITELN;
WRITELN('
WRITELN;
READLN;
WRITELN('
WRITE('
READ(S);
UNTIL (S='s') OR (S='S');
END.
ESTA ES LA MATRIZ QUE HAS INTRODUCIDO :');
TECLEA UNO DE ESTOS NUMEROS SEGUN ');
CUANTO QUIERAS GIRAR LA MATRIZ ');
EN SENTIDO ANTIHORARIO :');
<1> - 90§');
<2> - 180§');
<3> - 270§');
');
ESTA ES SU MATRIZ UNA VEZ GIRADA :');
PRESIONA <ENTER>');
¨ DESEA SALIR ?
');
-S o N- ');
program matrices_triangulares;
uses
crt;
type
matriz = array [1..15,1..15] of longint;
var
W:matriz;
X,K:longint;
S:char;
U,O:boolean;
procedure leer(n:longint;var a:matriz);
var
d,i,j:longint;
begin
{
INV: LEIDAS LAS (I-1)*N + J-1 1§ ELE. DE LA SECUENCIA
HAN SIDO ALMACENADOS EN LAS I-1 1¦ FILAS Y LOS J-1
1§ LUGARES DE LA FILA I ^ PD(S)=Dx ELE. CURSO }
for i:=1 to n do
begin
{ INV: EL ELE. (I-1)*N+J (ELE. CURSO) SE ALMACENA EN EL LUGAR
(I,J) DE LA MATRIZ }
for j:=1 to n do
begin
read(d);
a[i,j]:=d;
end;
end;
end;
procedure escribir(n:longint; m:matriz);
var
i,j,d:longint;
begin
{ INV: ESCRITAS LAS I-1 1¦ FILAS Y LOS J-1 1§ ELE. DE LA FILA
I ^ T[I,J] ES EL ELE. CURSO }
for i:=1 to n do
begin
write('
');
{ INV: ESCRITOS LOS J-1 1§ ELE. DE LA FILA I ^ T[I,J] ES EL
ELE. CURSO }
for j:=1 to n do
begin
d:=m[i,j];
write('
',d);
write('
');
end;
writeln;
end;
end;
function triansup(n:longint; m:matriz):boolean;
var
i,j:longint;f:boolean;
begin
i:=1;
j:=i+1;
{ INV: M[I,J]=0 PARA TODO 1<=I<J<=N ^ M[I,J] E.CURSO }
{ COTA: N-I}
while i<>n+1 do
begin
{ INV: M[I,J]=0 PARA TODO I<J<=N ^ M[I,J] E.CURSO }
{ COTA: N-J}
while (j<>n+1) do
begin
if m[i,j]=0 then f:=true;
if m[i,j]<>0 then begin f:=false;j:=n;i:=n;end;
j:=j+1;
end;
i:=i+1;
j:=i+1;
end;
triansup:=f;
end;
function trianinf(n:longint;m:matriz):boolean;
var
i,j:longint;g:boolean ;
begin
j:=1;
i:=j+1;
{ INV: M[I,J]=0 PARA TODO 1<=J<I<=N ^ M[I,J] E.CURSO }
{ COTA: N-J }
while j<>n+1 do
begin
{ INV: M[I,J]=0 PARA TODO J<I<=N ^ M[I,J] E.CURSO }
{ COTA: N-I }
while (i<>n+1) do
begin
if m[i,j]=0 then g:=true;
if m[i,j]<>0 then begin g:=false;i:=n;j:=n;end;
i:=i+1;
end;
j:=j+1;
i:=j+1;
end;
trianinf:=g;
end;
BEGIN
REPEAT
CLRSCR;
WRITELN;
WRITELN;
WRITELN;
WRITELN('
***************************************************');
WRITELN('
**
M A T R I C E S
T R I A N G U L A R E S
**');
WRITELN('
***************************************************');
WRITELN;
WRITELN;
WRITELN('
TECLEA EL RANGO DE LA MATRIZ');
WRITELN;
WRITE('
');
READ(X);
WRITELN;
WRITELN('
TECLEA LOS NUMEROS QUE LA COMPONEN ');
WRITELN;
WRITE('
');
LEER(X,W);
WRITELN;
WRITELN('
ESTA ES SU MATRIZ :');
WRITELN;
ESCRIBIR(X,W);
WRITELN;
U:=TRIANSUP(X,W);
O:=TRIANINF(X,W);
IF (U=FALSE) AND (O=FALSE) THEN
BEGIN
WRITELN('
LA MATRIZ NO ES TRIANGULAR');
END;
IF (U=TRUE) AND (O=FALSE) THEN
BEGIN
WRITELN('
LA MATRIZ ES TRIANGULAR SUPERIOR');
END;
IF (U=FALSE) AND (O=TRUE) THEN
BEGIN
WRITELN('
LA MATRIZ ES TRIANGULAR INFERIOR');
END;
IF (U=TRUE) AND (O=TRUE) THEN
BEGIN
WRITELN('
LA MATRIZ ES TRIANGULAR -SUPERIOR E INFERIOR');
END;
WRITELN;
READLN;
WRITELN('
¨ DESEA SALIR ? -S o N- ');
WRITE('
');
READ(S);
UNTIL (S='s') OR (S='S');
END.
PROGRAM ORDENACION_DE_UNA_MATRIZ;
USES
CRT;
TYPE
MATRIZ=ARRAY [1..20,1..20] OF LONGINT;
LINEA=ARRAY [1..400] OF LONGINT;
VAR
W,P:MATRIZ;
X:LONGINT;
A:CHAR;
E:LINEA;
PROCEDURE PASLIN(N:LONGINT; T:MATRIZ ;VAR L:LINEA);
VAR
I,J,C:LONGINT;
BEGIN
{ INV: LEIDAS LAS I-1 PRIMERAS FILAS Y LOS J-1 1§ ELE. DE LA FILA I
Y GUARDADOS COMO LOS N*(I-1)+(J-1) PRIMEROS ELEMENTOS DE UNA
TABLA UNIDIMENSIONAL ^ T[I,J] ES EL ELEMENTO EN CURSO }
FOR I:=1 TO N DO
BEGIN
{ INV: EL ELEMENTO T[I,J] (E.CURSO) SE GUARDA COMO EL ELEMENTO
N*(I-1)+J DE LA TABLA LINEAL }
FOR J:=1 TO N DO
BEGIN
C:=N*(I-1)+J;
L[C]:= T[I,J];
END;
END;
END;
PROCEDURE PASMAT(N:LONGINT; L:LINEA; VAR T:MATRIZ);
VAR
I,J,C,S,K,Z:LONGINT;
BEGIN
Z:=N*N;
I:=1;
{ INV: LEIDOS LOS (I-1)*N+(J-1) PRIMEROS ELEMENDOS DE UNA
TABLA LINEAL Y GUARDADOS EN LAS (I-1) 1¦ FILAS Y
(J-1) 1§ LUGARES DE UNA MATRIZ ^ L[N*(I-1)+J] ES EL
ELEMENTO EN CURSO }
FOR S:=0 TO Z DO
BEGIN
J:=1;
{ INV: EL ELEMENTO L[N*(I-1)+J] (E.CURSO) SE GUARDA EN T[I,J] }
FOR K:=S+1 TO Z-S DO
BEGIN
C:=(I-1)*N+J;
T[I,J]:=L[C];
J:=J+1;
END;
I:=I+1;
END;
END;
PROCEDURE ORDENAR(N:LONGINT; VAR L:LINEA);
VAR
I,J,R,S,Z:LONGINT;
BEGIN
I:=1;
Z:=N*N;
{ INV: PARA TODO k : 1=<k<I-1 : ( t[k]=<t[k+1] ^ PARA TODO L :
I=<L=<Z : t[L]>=t[k]) ^ 1=<I=<N
COTA: N-I }
WHILE I<>Z DO
BEGIN
R:=I;
J:=I+1;
{ INV: PARA TODO K: I=<K<J: T[R]=<T[K] ^ I+1=<J=<N+1 }
{ COTA: N-J }
WHILE J<>(Z+1) DO
BEGIN
IF L[R]>L[J] THEN R:=J;
J:=J+1;
END;
S:=L[R];
L[R]:=L[I];
L[I]:=S;
I:=I+1;
END;
END;
PROCEDURE LEER(N:LONGINT;VAR T:MATRIZ);
VAR
I,J,C:LONGINT;
BEGIN
{ INV: LEIDOS LOS N*(I-1)+(J-1) 1§ ELEMENTOS DE LA SECUENCIA Y
GUARDADOS EN LAS I-1 1¦ FILAS Y EN LOS J-1 1§ PUESTOS DE
LA FILA I ^ pd(S)=cà E.CURSO }
FOR I:=1 TO N DO
BEGIN
{ INV: EL ELEMENTO (I-1)*N+J (E.CURSO) SE ALMACENA EN EL
LUGAR (I,J) DE LA MATRIZ }
FOR J:=1 TO N DO
BEGIN
READ(C);
T[I,J]:=C;
END;
END;
END;
PROCEDURE ESCRIBIR(N:LONGINT;T:MATRIZ);
VAR
I,J,D:LONGINT;
BEGIN
{ INV: ESCRITAS LAS I-1 1¦ FILAS Y LOS J-1 1§ EL. DE LA FILA I ^
T[I,J] ES EL ELEMENTO EN CURSO }
FOR I:=1 TO N DO
BEGIN
WRITE('
');
{ INV : ESCRITOS LOS J-1 1§ ELEMENTOS DE LA FILA I ^ T[I,J] ES
EL ELEMENTO EN CURSO }
FOR J:=1 TO N DO
BEGIN
D:=T[I,J];
WRITE('
',D);
WRITE('
');
END;
WRITELN;
END;
END;
BEGIN
REPEAT
CLRSCR;
WRITELN;
WRITELN;
WRITELN;
WRITELN('
WRITELN('
');
WRITELN('
WRITELN;
WRITELN;
WRITELN('
WRITELN;
WRITE('
READLN(X);
WRITELN;
WRITELN('
WRITELN;
WRITE('
LEER(X,W);
WRITELN;
WRITELN('
WRITELN;
ESCRIBIR(X,W);
');
PROGRAMA PARA LA ORDENACION
DE
UNA
MATRIZ
');
TECLEE EL RANGO DE SU MATRIZ');
');
ESCRIBA LOS NUMEROS QUE LA COMPONEN');
');
ESTA ES LA MATRIZ QUE HA INTRODUCIDO:');
WRITELN;
PASLIN(X,W,E);
ORDENAR(X,E);
PASMAT(X,E,P);
WRITELN('
WRITELN('
WRITELN;
ESCRIBIR(X,P);
WRITELN;
READLN;
WRITELN('
WRITE('
READLN(A);
UNTIL (A='S') OR (A='s');
END.
ESTA ES SU MATRIZ PUESTA EN ORDEN');
Y ESCRITA DE MENOR A MAYOR:');
¨ DESEA SALIR ?
');
-S o N-
');
PROGRAM SUMA_DE_LOS_ANTERIORES;
USES
CRT;
TYPE
MATRIZ=ARRAY[1..100] OF LONGINT;
VAR
W:MATRIZ;
X:LONGINT;
A:CHAR;
F:BOOLEAN;
PROCEDURE LEER(N:LONGINT;VAR T:MATRIZ);
VAR
S,C:LONGINT;
BEGIN
{ INV: LEIDOS LOS S-1 1§ ELE.DE LA SECUENCIA Y GUARDADOS EN SUS
CORRESPONDIENTES LUGARES EN LA TABLA ^ PD(S)=CX ELE. CURSO }
FOR S:=1 TO N DO
BEGIN
READ(C);
T[S]:=C;
END;
END;
FUNCTION SUMAN(T:MATRIZ;N:LONGINT):BOOLEAN;
VAR
S,C,L:LONGINT;
G:BOOLEAN;
BEGIN
S:=1;
C:=T[1];
WRITE('
',C);
S:=S+1;
{ INV: TRATADOS LOS S-1 1§ ELE. DE LA TABLA ^ G TOMA EL VALOR DE
C=L ^ C= SUMA DE LOS S-1 1§ ELE. ^ L= ELE. CURSO
COTA: N+1 -S }
WHILE S<>N+1 DO
BEGIN
L:=T[S];
IF C=L THEN BEGIN G:=TRUE;S:=N;WRITE(' ',L);END;
IF C<>L THEN BEGIN G:=FALSE;WRITE(' ',L);END;
C:=C+L;
S:=S+1;
END;
SUMAN:=G;
END;
BEGIN
REPEAT
CLRSCR;
WRITELN;
WRITELN;
WRITELN;
WRITELN;
WRITELN('
***************************************************');
WRITELN('
** S U M A
D E
L O S
A N T E R I O R E S
**');
WRITELN('
***************************************************');
WRITELN;
WRITELN;
WRITELN;
WRITELN('
INTRODUZCA LA LONGITUD DESEADA PARA ');
WRITELN('
LA TABLA DE ENTEROS ');
WRITELN;
WRITE('
');
READLN(X);
WRITELN;
WRITELN('
INTRODUZCA A CONTINUACION LOS ENTEROS
');
WRITELN('
PARA LA TABLA ');
WRITELN;
WRITE('
');
LEER(X,W);
WRITELN;
WRITELN;
F:=SUMAN(W,X);
WRITELN;
WRITELN;
IF F=TRUE THEN
BEGIN
WRITELN('
AL MENOS UNO DE LOS NUMEROS DADOS ES IGUAL
A LA ');
WRITELN('
SUMA DE LOS DADOS CON
ANTERIORIDAD.');
WRITELN('
ES EL ULTIMO DE LOS TERMINOS QUE SE
MUESTRAN.');
END;
IF F=FALSE THEN
BEGIN
WRITELN('
LA SECUENCIA SE HA ESCRITO EN
PANTALLA.');
WRITELN('
NINGUNO DE LOS NUMEROS DADOS ES SUMA DE LOS
ANTERIORES.');
END;
WRITELN;
READLN;
WRITELN('
¨ DESEA SALIR ? -S o N-');
WRITE('
');
READLN(A);
UNTIL (A='S') OR (A='s');
END.
PROGRAM SUMA_DEL_RESTO;
USES
CRT;
TYPE
MATRIZ=ARRAY[1..100] OF LONGINT;
VAR
W:MATRIZ;
X,PEPE:LONGINT;
A:CHAR;
F,PEPA:BOOLEAN;
PROCEDURE LEER(N:LONGINT;VAR T:MATRIZ);
VAR
I,C:LONGINT;
BEGIN
{ INV: LEIDOS LOS I-1 PRIMEROS ELEMENTOS Y GUARDADOS EN LOS
I-1 PRIMEROS LUGARES DE LA TABLA ^ pd(S)=cà (E.CURSO) }
FOR I:=1 TO N DO
BEGIN
READ(C);
T[I]:=C;
END;
END;
FUNCTION SUMATOTAL(T:MATRIZ;N:LONGINT):LONGINT;
VAR
I,ST:LONGINT;
BEGIN
ST:=0;
{ INV: ST ES LA SUMA DE LOS I-1 PRIMEROS ELEMENTOS DE LA TABLA ^
T[I] ES EL E.CURSO }
FOR I:=1 TO N DO
BEGIN
ST:=ST+T[I];
END;
SUMATOTAL:=ST;
END;
FUNCTION SUMREST(T:MATRIZ;N:LONGINT):BOOLEAN;
VAR
I,SO:LONGINT;
J:BOOLEAN;
BEGIN
J:=FALSE;
SO:=SUMATOTAL(T,N);
{ INV: J INDICA SI ALGUN ELEMENTO DE ENTRE LOS I-1 PRIMEROS
ES IGUAL A LA SUMA DE LOS DEMAS ^ T[I]=E.CURSO }
FOR I:=1 TO N DO
BEGIN
IF T[I]=(SO-T[I]) THEN BEGIN J:=TRUE;WRITELN('
',T[I]); END
ELSE BEGIN END;
END;
SUMREST:=J;
END;
FUNCTION SUMAN(T:MATRIZ;N:LONGINT):BOOLEAN;
VAR
S,C,L:LONGINT;
G:BOOLEAN;
BEGIN
S:=1;
C:=T[1];
WRITE('
',C);
S:=S+1;
{ INV: G INDICA SI ALGUN ELEMENTO ES IGUAL A LA SUMA DE LOS
QUE LE PRECEDEN ^T[S]=E.CURSO
COTA: N+1-S }
WHILE S<>N+1 DO
BEGIN
L:=T[S];
IF C=L THEN BEGIN G:=TRUE;S:=N;WRITE(' ',L);END;
IF C<>L THEN BEGIN G:=FALSE;WRITE(' ',L);END;
C:=C+L;
S:=S+1;
END;
SUMAN:=G;
END;
BEGIN
REPEAT
CLRSCR;
WRITELN;
WRITELN;
WRITELN;
WRITELN;
WRITELN('
ÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞ');
WRITELN('
ÞÞÞ
S U M A
D E L
R E S T O
ÞÞÞ');
WRITELN('
ÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞ');
WRITELN;
WRITELN;
WRITELN('
INTRODUZCA LA LONGITUD DESEADA PARA ');
WRITELN('
LA TABLA DE ENTEROS ');
WRITE('
');
READLN(X);
WRITELN;
WRITELN('
INTRODUZCA A CONTINUACION LOS ENTEROS
');
WRITELN('
PARA LA TABLA ');
WRITE('
');
LEER(X,W);
WRITELN;
WRITELN;
PEPA:=SUMREST(W,X);
IF PEPA=TRUE THEN
BEGIN
WRITELN;
WRITELN('
COMO MINIMO UNO DE LOS NUMEROS DADOS ES
IGUAL');
WRITELN('
A LA SUMA DE TODOS LOS DEMAS');
WRITELN('
EL NUMERO EN CUESTION ESTA ESCRITO SOBRE ESTAS
LINEAS');
END
ELSE BEGIN
WRITELN;
WRITELN('
NINGUNO DE LOS NUMEROS DADOS COINCIDE
CON');
WRITELN('
LA SUMA DE LOS DEMAS DADOS');
END;
WRITELN;
WRITELN;
F:=SUMAN(W,X);
WRITELN;
WRITELN;
IF F=TRUE THEN
BEGIN
WRITELN('
AL MENOS UNO DE LOS NUMEROS DADOS ES IGUAL
A LA ');
WRITELN('
SUMA DE LOS DADOS CON
ANTERIORIDAD.');
WRITELN('
ES EL ULTIMO DE LOS TERMINOS QUE SE
MUESTRAN.');
END;
IF F=FALSE THEN
BEGIN
WRITELN('
LA SECUENCIA SE HA ESCRITO EN
PANTALLA.');
WRITELN('
NINGUNO DE LOS NUMEROS DADOS ES SUMA DE LOS
ANTERIORES.');
END;
WRITELN;
READLN;
WRITELN('
¨ DESEA SALIR ? -S o N-');
WRITE('
');
READLN(A);
UNTIL (A='S') OR (A='s');
END.
Descargar