Pascal/Turbo Pascal - cambio de filas en una matriz

 
Vista:
sin imagen de perfil

cambio de filas en una matriz

Publicado por Jose (3 intervenciones) el 11/01/2016 13:06:53
necesito un programa que me intercambie las filas de una matriz para realizar el método de Gauss para que el pivote al diagonalizar sea distinto de 0.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

cambio de filas en una matriz

Publicado por crack81 (58 intervenciones) el 11/01/2016 20:22:26
Hola te dejo esta funcion para intercambiar filas en pascal y unos ejemplos de como utilizara, seria bueno que intetaras practicar mas ya solo asi uno obtiene soltura para programar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
const
  TAMANO=2;//es una matriz de tamano 3 inicia del 0..al..2 son 3 posiciones
Type
  TMatriz=array [0..TAMANO,0..TAMANO]of integer;
 
 
//Intercambia las filas de una matriz si el numero de la fila es negativa o es mayor
// al tamano de la matriz toma su valor valido mas cercano
//ejemplo:
//si filaOringen o filaDestino es -1 toma el valor de cero
//si filaOringen o filaDestino  es mayor que el maximo de la matriz asigna el maximo valor valido
//
//
//Parametros:
// matriz: es donde contendra el arreglo de 2 dimensiones
//filaOringen: fila que se intercambiara
//filaDestino: es la fila por la cual sera intercambiada filaOrigen
//
//Retorno: la funcion retorna una matriz de tipo TMATRIZ con los cambios realizados despues del intercambio
function intercambiarFIlas(matriz:TMatriz; filaOrigen:LongInt; filaDestino:LongInt):TMatriz;
var
  matrizTemporal:TMatriz;
  i:integer;
begin
   matrizTemporal:=matriz;
   if(filaOrigen<0)then filaOrigen:=0;
   if(filaDestino<0) then filaDestino:=0;
 
   if(filaOrigen>TAMANO)then filaOrigen:=TAMANO;
   if(filaDestino>TAMANO) then filaDestino:=TAMANO;
 
   for i:=0 to TAMANO do
   begin
      matrizTemporal[filaOrigen,i]:=matriz[filaDestino,i];
      matrizTemporal[filaDestino,i]:=matriz[filaOrigen,i];
   end;
   Result:=matrizTemporal;
end;
 
//rellena la matriz con valores de cero a N la matriz es pasado por referencia
procedure rellenarMatriz(var matriz:TMatriz);
var
  i,j,cont:Integer;
begin
   cont:=1;
   for i:=Low(matriz) to High(matriz)do
   begin
     for j:=Low(matriz[0]) to High(matriz[0]) do
     begin
        matriz[i,j]:=cont;
        inc(cont);
     end;
   end;
end;
 
//funcion que imprime la matriz por la consola
procedure imprimirMatriz(matriz:TMatriz);
var
  i,j:Integer;
begin
   for i:=Low(matriz) to High(matriz)do
   begin
     for j:=Low(matriz[0]) to High(matriz[0]) do
     begin
        Write(matriz[i,j],' ');
     end;
     WriteLn;
   end;
   WriteLn;
end;
 
var
  matriz:TMatriz;
begin
    WriteLn('Matriz original');
    rellenarMatriz(matriz);
    imprimirMatriz(matriz);
 
    WriteLn('Intercambiamos la matriz la fila cero por la  fila 2');
    matriz:=intercambiarFIlas(matriz,0,2);
    imprimirMatriz(matriz);
 
    WriteLn('Intercambiamos la matriz la fila 2 por la  fila 1');
    matriz:=intercambiarFIlas(matriz,2,1);
    imprimirMatriz(matriz);
 
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar