Pascal/Turbo Pascal - Ejercicio Pascal

 
Vista:
sin imagen de perfil

Ejercicio Pascal

Publicado por patricio (2 intervenciones) el 29/09/2014 03:25:15
Gente, como andan ?
Ando buscando ayuda en la creación de un programa en pascal que necesitaria ayuda ya que es un ejercicio de la facultad.

Es un ejercicio de matrices que me pide:

1. Leer el valor de N
2. Leer el valor de M
3. Leer una matriz de NxM
4. Leer un vector de longitud M
5. Informar el vector de longitud N que se obtiene al multiplicar la matriz
le da en el punto 3 por el vector del punto 4.

Yo pense algo asi:

1) Declaro variables
2) Procedimiento Columnas_de_matriz
Donde le ingreso los valores de cada componente de las diferentes columnas de la matriz
3) Procedimiento filas_de_matriz
Le ingreso los valores de cada componente de las filas de la matriz
4) Procedimiento vector
Le ingreso los valores del vector
5) programa principal con:
a. se le ingresa la cantidad de columnas
b. se le ingresa la cantidad de filas
c. un FOR que vaya de 1 hasta el numero final de filas que adentro tenga primero otro for que utilice desde el 1 hasta el final de las columnas el procedimiento de columnas de matriz y despues el procedimiento de filas de matriz.
d. que muestre la matriz entera.
e. que haga el procedimiento vector
f. que muestre el vector.
g. que haga la multiplicacion vectorial
h. que muestre la matriz resultado.


Y en codigo tengo algo asi:
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
program matriz;
uses crt;
var
 N,M:real;
 tfilas:array[1..N] of real;
 tcolumnas:array[1..M]of real;
 
begin
  Procedure columnas_de_matriz (var M:real; N:real)
   var
    i:byte;
	comp_columnas:tcolumnas;
  begin
    i:=0;
	i:=i+1;
	writeln('ingrese el componente ', i,N, 'de su matriz: ');
	readln(comp_columnas[i]);
  end;
 
  Procedure filas_de_matriz (var M:real; N:real);
	var
	j:byte;
	comp_filas:tfilas;
   begin
    j:=0;
	j:=j+1;
	writeln('ingrese el componente ', i,M, 'de su matriz: ');
	readln(comp_filas[j]);
   end;
 
   writeln('ingrese la cantidad de filas de su matriz: ');
   readln(N);
   writeln('ingrese la cantidad de columnas de su matriz: ');
   readln(M);
   for 1 to N do
    begin
     for 1 to M do columnas_de_matriz;
	 filas_de_matriz;
	end;


Me ayudan a seguir que me queda ahi?

Gracias
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

Ejercicio Pascal

Publicado por ramon (2158 intervenciones) el 29/09/2014 14:13:35
Después de examinar tu programa te esplico esto.
Antes de nada pedirte disculpas por lo que te pongo pero no puedo dejar de informar.
1 . los arrays no permiten dimensionar los durante la ejecución del programa tienen que realizarse antes.
2 : la longitud del array deve de ser un numero entero o sea integer nunca real.
3 : intentare ayudarte pero con un ejemplo que te encamine al no saber en realidad tu nivel lo are lomas sencillo
posible.
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

Ejercicio Pascal

Publicado por patricio (2 intervenciones) el 29/09/2014 15:48:42
Gracias Ramon por tu rapida respuesta.
Te comento que me piden hacer el ejercicio solo con procedures y functions.
Nada muy complejo.
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

Ejercicio Pascal

Publicado por ramon (2158 intervenciones) el 29/09/2014 23:19:21
Intentare realizarte un ejemplo que te oriente en el tema.
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

Ejercicio Pascal

Publicado por ramon (2158 intervenciones) el 30/09/2014 22:24:37
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
{Mira a ver si esto te sirve de ayuda }
 
program manejarmatriz;
 uses
   crt;
 const
    n = 10;
    m = 10;
 type
    matriz = array[1..n,1..m] of integer;
    vector = array[1..n * m] of integer;
 
  var
     vector_mm, matri : matriz;
     vecto : vector;
     a, z, k : integer;
 
  procedure rellena_el_vector(var lr : vector);
  var
    bl, t, c : integer;
    toma : boolean;
  begin
     randomize;
     c := 1;
   repeat
       toma := true;
       bl := random((n * m) + 10) + 1;
       for t := 1 to c - 1 do
       begin
       if lr[t] = bl then
       toma := false;
       end;
       if toma = true then
       begin
          lr[c] := bl;
          c := c + 1;
       end;
   until c > n * m;
  end;
 
  procedure rellenamos_la_matriz(var lm : matriz);
  var
    t, v, s : integer;
  begin
     t := 1;
     v := 0;
     repeat
        v := v + 1;
        for s := 1 to n do
        begin
        lm[s,v] := vecto[t];
        t := t + 1;
        end;
     until t > (n * m);
  end;
 
  procedure presentamos_el_vector(v : vector);
  var
    p1, p2 : integer;
   begin
      writeln('  El contenido del Vector Es ');
      writeln;
      p2 := 1;
      for p1 := 1 to (n * m) do
      begin
        write('  ',v[p1]);
        p2 := p2 + 1;
        if p2 > m then
        begin
        writeln;
        writeln;
        p2 := 1;
       end;
     end;
   end;
 
   procedure presenta_matriz(mm : matriz);
   var
     d, l : integer;
   begin
      for d := 1 to n do
      begin
       for l := 1 to m do
       write('  ',mm[l,d]);
       writeln;
       writeln;
      end;
   end;
 
   procedure multiplicar_matriz_por_vector(mm : matriz; bb : vector);
   var
     dd, rr, yy, xx : integer;
    begin
       yy := 1;
       xx := 1;
       rr := 0;
       for dd := 1 to (n * m) do
       begin
          rr := mm[yy,xx] * bb[dd];
          vector_mm[yy,xx] := rr;
          yy := yy + 1;
          if yy > n then
          begin
             yy := 1;
             xx := xx + 1;
          end;
       end;
    end;
 
 
 
  begin
     clrscr;
     writeln('   El Valor De N Es = ',n,'  El Valor de M Es = ',m);
     writeln;
     rellena_el_vector(vecto);
     presentamos_el_vector(vecto);
     writeln;
     writeln('   El contenido de la matriz es ');
     writeln;
     rellenamos_la_matriz(matri);
     presenta_matriz(matri);
     writeln;
     writeln('   Pulse Una Tecla');
     readkey;
     multiplicar_matriz_por_vector(matri, vecto);
     clrscr;
     writeln('   Resultado Multiplicacion vertor matriz ');
     writeln;
     for a := 1 to n do
     begin
       for z := 1 to m do
       begin
          write('  ',vector_mm[a,z]);
       end;
       writeln;
       writeln;
     end;
     writeln('   Pulse Una Tecla');
     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