$ perl -d:Cover=-coverage,statement matrixP.pl
Devel::Cover 0.53: Collecting coverage data for statement.
Selecting packages matching:
Ignoring packages matching:
/Devel/Cover[./]
Ignoring packages in:
.
/etc/perl
/usr/lib/perl/5.8.4
/usr/lib/perl5
/usr/local/lib/perl/5.8.4
/usr/local/share/perl/5.8.4
/usr/share/perl/5.8.4
/usr/share/perl5
Matriz A
1 2 3
2 4 6
3 6 9
Matriz B
1 2
2 4
3 6
Matriz C
14 28
28 56
42 84
Devel::Cover: Writing coverage database to /home/lhp/projects/perl/src/cover_db/runs/1114597775.12157.23925
--------------------------------------------------------------- ------ ------
File stmt total
--------------------------------------------------------------- ------ ------
matrixP.pl 97.9 97.9
Total 97.9 97.9
--------------------------------------------------------------- ------ ------
Esto genera un fichero de datos
cover_db. A partir del mismo es posible generar un informe utilizando
cover:
$ cover -report text
Reading database from /home/lhp/projects/perl/src/cover_db
--------------------------------------------------------------- ------ ------
File stmt total
--------------------------------------------------------------- ------ ------
matrixP.pl 97.9 97.9
Total 97.9 97.9
--------------------------------------------------------------- ------ ------
Run: matrixP.pl
Perl version: 5.8.4
OS: linux
Start: Wed Apr 27 10:29:35 2005
Finish: Wed Apr 27 10:29:35 2005
matrixP.pl
line err stmt code
1 #!/usr/bin/perl -w
2
3 sub matrixProd {
4 1 my ($matA, $matB) = @_;
5 1 my $i = 0;
6 1 my ($j, $k);
7 1 my $nRowsA = @{$matA};
1
8 1 my $nColsA = @{$matA->[0]};
1
9 1 my $nRowsB = @{$matB};
1
10 1 my $nColsB = @{$matB->[0]};
1
11 1 my $refMatC;
12
13 1 if ($nColsA != $nRowsB) {
14 *** 0 die ("Index of two matrices must be agree\n");
15 }
16 1 while ($i < $nRowsA) {
17 3 $j = 0;
18 3 while ($j < $nColsB) {
19 6 $k = 0;
20 6 $refMatC->[$i][$j] = 0;
21 6 while ($k < $nColsA) {
22 18 $refMatC->[$i][$j] += $matA->[$i][$k] * $matB->[$k][$j];
23 18 $k++;
24 }
25 6 $j++;
26 }
27 3 $i++;
28 }
29 1 return $refMatC;
30 }
31
32 sub printMat {
33 3 my $mat = shift;
34 3 my $nRows = @{$mat};
3
35 3 my $nCols = @{$mat->[0]};
3
36 3 my $i = 0;
37
38 3 while ($i < $nRows) {
39 9 $j = 0;
40 9 while ($j < $nCols) {
41 21 print $mat->[$i][$j], "\t";
42 21 $j++;
43 }
44 9 print "\n";
45 9 $i++;
46 }
47 }
48
49 #
50 # ---- Main ----
51 #
52
53 1 $matA = [[1,2,3],[2,4,6],[3,6,9]];
54 1 $matB = [[1,2],[2,4],[3,6]];
55 1 $matC = matrixProd($matA,$matB);
56
57 1 print "Matriz A \n";
58 1 printMat($matA);
59 1 print "\nMatriz B \n";
60 1 printMat($matB);
61 1 print "\nMatriz C \n";
62 1 printMat($matC);
Casiano Rodríguez León
