Problema Matriz
Publicado por Juan (11 intervenciones) el 23/06/2013 06:57:16
Hola, les comento:
Se me viene un parcial y practicando con un parcial de años anteriores se me complicó un poco. No sé donde está el eror, me compila y todo pero me tira error exitcode=201 al ejecutarlo. El problema es:
Desarrollar un programa Pascal, claro, eficiente, eficaz y modularizado que implemente la siguiente consigna:
Leer en la primera línea de un archivo de texto N y M, a continuación una matriz A entera de NxM y un B vector de N enteros. Cada línea tendrá una fila de la matriz y a continuación un elemento del vector paralelo a la fila.
Ejemplo del archivo
4 3
16 3 4 4
11 4 10 3
2 14 8 7
8 6 16 2
A partir de la matriz A y del arreglo B generar dos arreglos paralelos VProm y VFila.
VProm es el promedio con los elementos de la fila que sean divisibles por la componente del vector B en la misma posición. VFila es completado con el Nro de fila al cual corresponde el calculo. No generar elementos en ambos arreglos cuando:
 no hay múltiplos en la fila
 el promedio obtenido ya esta en VProm (para otra fila)
Desarrollar la función Promedio, que recibe como parámetros la matriz A, el arreglo B y un valor para la fila, y obtiene el promedio de dicha fila, cero si no hay elementos
Imprimir ambos arreglos.
(16+4)/2 14/1
N=4; M=3 VProm= 10 14
16 3 4 4
A= 11 4 10 B= 3 VFila= 1 3
2 14 8 7
8 6 16 2 (8+6+16)/3 =10 ya esta para la fila 1
Y acá esta el código que escribi:
La matriz junto con el vector las leo de archivo y las guardé así:
4 3
16 3 4 4
11 4 10 3
2 14 8 7
8 6 16 2
A ver si me pueden dar una mano. Gracias.
Se me viene un parcial y practicando con un parcial de años anteriores se me complicó un poco. No sé donde está el eror, me compila y todo pero me tira error exitcode=201 al ejecutarlo. El problema es:
Desarrollar un programa Pascal, claro, eficiente, eficaz y modularizado que implemente la siguiente consigna:
Leer en la primera línea de un archivo de texto N y M, a continuación una matriz A entera de NxM y un B vector de N enteros. Cada línea tendrá una fila de la matriz y a continuación un elemento del vector paralelo a la fila.
Ejemplo del archivo
4 3
16 3 4 4
11 4 10 3
2 14 8 7
8 6 16 2
A partir de la matriz A y del arreglo B generar dos arreglos paralelos VProm y VFila.
VProm es el promedio con los elementos de la fila que sean divisibles por la componente del vector B en la misma posición. VFila es completado con el Nro de fila al cual corresponde el calculo. No generar elementos en ambos arreglos cuando:
 no hay múltiplos en la fila
 el promedio obtenido ya esta en VProm (para otra fila)
Desarrollar la función Promedio, que recibe como parámetros la matriz A, el arreglo B y un valor para la fila, y obtiene el promedio de dicha fila, cero si no hay elementos
Imprimir ambos arreglos.
(16+4)/2 14/1
N=4; M=3 VProm= 10 14
16 3 4 4
A= 11 4 10 B= 3 VFila= 1 3
2 14 8 7
8 6 16 2 (8+6+16)/3 =10 ya esta para la fila 1
Y acá esta el código que escribi:
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
Program SegundoParcial1;
Uses
Crt;
Type
TM=Array [1..5,1..5] of integer;
TV=Array [1..7] of Integer;
Procedure LeeMatriz(Var Mat:TM; Var V:TV; Var N,M:Byte);
Var
i,j:Byte;
Arch:Text;
Begin
Assign(Arch,'DatosSegParcial1.txt'); Reset(Arch);
Readln(Arch,N,M);
For i:=1 to N do
Begin
For j:=1 to M do
Read(Arch,Mat[i,j]);
Readln(Arch);
end;
For i:=1 to N do
Begin
Read(Arch,V[i]);
Readln(Arch);
end;
Close(Arch);
end;
Function Promedio(Mat:TM;V:TV;i,M:Byte):Integer;
Var
j:Byte;
Prom:Integer;
Acum:Integer;
Begin
Acum:=0;
For j:=1 to M do
Begin
if (Mat[i,j] div V[i] =0) then
Begin
Acum:=Acum + Mat[i,j];
Prom:=Trunc(Acum / M);
end;
end;
Promedio:=Prom;
end;
Procedure FilaProm(Mat:TM;N,M:Byte;V:TV;Var A,Fila:TV; Var l:Byte);
Var
i,j:Byte;
Begin
l:=0;
For i:=1 to N do
Begin
Clrscr;
Fila[l]:=0;
For j:=1 to M do
Begin
l:=l+1;
Fila[l]:=i;
A[l]:=Promedio(Mat,V,i,M);
end;
end;
end;
Procedure MuestraVector(A:TV;l:Byte);
Var
i:Byte;
Begin
For i:=1 to l do
Write(A[i]:3);
Writeln;
end;
Var
Mat:TM;A,V,Fila:TV;
N,M,l,j:Byte;
Begin
Clrscr;
LeeMatriz(Mat,V,N,M);
FilaProm(Mat,N,M,V,A,Fila,l);
Writeln('Promedio: ');
MuestraVector(A,l);
Writeln('Fila: ');
MuestraVector(Fila,l);
Readln;
End.
La matriz junto con el vector las leo de archivo y las guardé así:
4 3
16 3 4 4
11 4 10 3
2 14 8 7
8 6 16 2
A ver si me pueden dar una mano. Gracias.
Valora esta pregunta


0