Pascal/Turbo Pascal - Generar matrices

 
Vista:
sin imagen de perfil

Generar matrices

Publicado por Hector (2 intervenciones) el 19/04/2014 19:58:04
Buenas, tengo que realizar un proyecto en el cual llevara incluido el uso de estas matrices, el programa debe de generar 3 matrices de diferentes columnas pero misma cantidad de filas, y deben de llevar los siguientes datos:

matriz demanda de 2 filas y 11 columnas:
fila 1 : 0 10 20 30 40 50 60 70 80 90 100
fila 2 : 25 26 27 28 29 30 31 32 33 34 35

matriz entrega de 2 filas y 5 columnas:
fila 1: 0 25 50 75 100
fila 2: 1 2 3 4 5

matriz espera de 2 filas y 6 columnas:
fila 1: 0 20 40 60 80 100
fila 2: 0 1 2 3 4 5

El programa se debe de hacer con subprogramas.

Hice el codigo aunque queria saber si existe un mejor metodo para que obtenga el mismo resultado con un menor
uso de lineas de codigo, ya que el proyecto completo debe llevar una cantidad estimada de codigo. Gracias de antemano.

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
program creador_de_matrices;
uses crt;
const
   casillas_demanda=11;
   casillas_entrega=5;
   casillas_espera=6;
   casillas_fila=2;
var
   m_crea_matriz:array[1..casillas_fila,1..casillas_demanda]of integer;
   m_demanda:array[1..casillas_fila,1..casillas_demanda]of integer;
   m_entrega:array[1..casillas_fila,1..casillas_entrega]of integer;
   m_espera:array[1..casillas_fila,1..casillas_espera]of integer;
   i,j:integer;
function llena_matriz(f_sumador,f_prob,f_valor,f_sumador_valor:integer):integer;
begin
     for i:=1 to casillas_fila do
     begin
          for j:=1 to casillas_demanda do
          begin
               if(i=1)then
               begin
                    m_crea_matriz[i,j]:=f_prob;
                    f_prob:=f_prob+f_sumador;
               end
               else
               begin
                    m_crea_matriz[i,j]:=f_valor;
                    f_valor:=f_valor+f_sumador_valor;
               end;
          end;
     end;
end;
begin
     llena_matriz(10,0,25,1); // llena la matriz con las variables que asignamos
     for i:=1 to casillas_fila do  // luego lo asigna
     begin
          for j:=1 to casillas_demanda do
          begin
               m_demanda[i,j]:=m_crea_matriz[i,j];
          end;
     end;
     llena_matriz(25,0,1,1); // ahora para entrega
     for i:=1 to casillas_fila do
     begin
          for j:=1 to casillas_entrega do
          begin
               m_entrega[i,j]:=m_crea_matriz[i,j];
          end;
     end;
     llena_matriz(20,0,0,1);    // ahora para espera
     for i:=1 to casillas_fila do
     begin
          for j:=1 to casillas_espera do
          begin
               m_espera[i,j]:=m_crea_matriz[i,j];
          end;
     end;
end.
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

Generar matrices

Publicado por ramon (2158 intervenciones) el 21/04/2014 10:39:13
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
{Mira esto a ver si sirve}
 
program creamatriz;
   uses
     crt;
   type
     matriz4 = array[1..4,1..2,1..11] of integer;
 
   var
     matri : matriz4;
     t, i, j : integer;
 
   function llena_matriz(f_sumador,f_prob,f_valor,f_sumador_valor : integer) : integer;
   begin
      i := 1;
      j := 1;
    repeat
    repeat
     if i = 1 then
     begin
      matri[1,i,j] := f_prob;
      f_prob := f_prob + f_sumador;
     end
   else
      begin
        matri[1,i,j] := f_valor;
        f_valor := f_valor + f_sumador_valor;
      end;
      j := j + 1;
      until j > 11;
      j := 1;
      i := i + 1;
    until i > 2;
   end;
 
   procedure pondatos_matrizes(cual : integer);
   var
     xe : integer;
   begin
       case cual of
   2 : xe := 11;
   3 : xe := 5;
   4 : xe := 6;
     end;
        for i := 1 to 2 do
        begin
          for j := 1 to xe do
           begin
             matri[cual,i,j] := matri[1,i,j];
          end;
        end;
   end;
 
 
   begin
       clrscr;
       llena_matriz(10,0,25,1);
       pondatos_matrizes(2);
       llena_matriz(25,0,1,1);
       pondatos_matrizes(3);
       llena_matriz(20,0,0,1);
       pondatos_matrizes(4);
     for t := 1 to 4 do
       for i := 1 to 2 do
       begin
        for j := 1 to 11 do
        begin
        if (matri[t,i,j] = 0) and (j = 1) then
        write('  ',matri[t,i,j]);
        if (matri[t,i,j] <> 0) and (j >= 1) then
        write('  ',matri[t,i,j]);
        end;
          writeln;
      end;
        readkey;
    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
sin imagen de perfil

Generar matrices

Publicado por Hector (2 intervenciones) el 21/04/2014 22:40:19
La verdad jamas pensé en utilizar una matriz de tres dimensiones, esto resuelve otras dudas que tenia en el proyecto, muchas gracias.
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