Autor: Víctor Sánchez Sánchez 131
Email:
[email protected] http://usuarios.tripod.es/VictorSanchez2
ClrScr;
{Pedimos el nombre del fichero donde se encuentran los datos}
Write('Introduzca el nombre del archivo con su ruta adecuada: ');
Readln(nombre);
Assign(fich,nombre); {Asignamos el nombre del fichero a fich}
errores; {Chequeamos las matrices en busca de errores}
resp := ' '; {Inicializamos la respuesta}
If error Then {Si hay algun error se lo comunicamos al usuario y terminamos}
Repeat
Writeln('Los datos suministrados son incorrectos.');
Writeln('Asegurese de que el archivo contiene las matrices adecuadas.');
Write('Por favor, pulse F/f para terminar: ');
Readln(resp);
Until (resp = 'F') Or (resp = 'f');
Reset(fich);
{Si no hay errores continuamos con el programa}
If (resp <> 'F') And (resp <> 'f') Then
Begin
LeerMatriz(A); {Leemos la primera matriz}
LeerMatriz(B); {Leemos la segunda matriz}
traspuesta(A,TrasA); {Traspuesta de la matriz A}
traspuesta(B,TrasB); {Traspuesta de la matriz B}
multiplica(A,B,C); { (A.B) -> Lo acumulamos en C}
traspuesta(C,TrasC); { (A.B)' -> Lo acumulamos en TrasC}
multiplica(TrasB,TrasA,C); { B'.A' -> Lo acumulamos en C}
ClrScr;
{Empezamos a mostrar por pantalla las matrices obtenidas}
Writeln('Estas son las matrices leidas del archivo ',nombre,':');
MuestraMatriz(A,B);
Writeln;
Writeln('Y estas sus traspuestas: ');
MuestraMatriz(TrasA,TrasB);
Writeln;
{Mensaje al usuario para continuar con la siguiente pantalla}
Writeln('Continuamos con las propiedades de las matrices...');
Writeln('Pulse "enter" por favor.');
Readln(resp);
ClrScr;
{Vamos a comprobar si: (A.B)' = B'.A' }
iguales := True; {Inicializamos la variable iguales}
For i := 1 To MaxDim Do
For j := 1 To MaxDim Do
If TrasC[i,j] <> C[i,j] Then
iguales := False; {Si las matrices son distintas iguales := false}
If iguales Then
Begin
{Se cumple la propiedad. Lo mostramos acompañado de las matrices}
Writeln('Se cumple que: (A.B)',T,' = B',T,'.A',T); {(A.B)' = B'.A'}
Writeln;
Writeln('(A.B)':11,T,'B':15,T,'.A',T); {(A.B)' = B'.A'}
MuestraMatriz(TrasC,C);
End
Else {No se cumple (A.B)' = B'.A'}
Writeln('No se cumple: (A.B)',T,' = B',T,'.A',T);
Writeln;
Writeln('Pasemos a ver si la matriz es antisimetrica.');
Writeln('Vuelva a pulsar "enter" por favor.');
Read(resp);
{Vemos si es antisimetrica: A' = -A }
iguales := True;
For i := 1 To MaxDim Do
For j := 1 To MaxDim Do
If TrasA[i,j] <> -A[i,j] Then
iguales := False
{Si las matrices son distintas toma el valor false}
Else
C[i,j] := -A[i,j]; {Usamos C para acumular -A}
If iguales Then
Begin {A' = -A}
{Se cumple la propiedad antisimetrica. Mostramos las matrices}
Writeln('La matriz A posee la propiedad antisimetrica: A',T,' = -A');
Writeln;
Writeln('A':9,T,'-A':19); {A' = -A}