Hoy, perleando, no es necesario ningun champiñon alucinogeno ni mota, yo les dire cuando los necesitemos:

#!usr/bin/perl

#PROGAMA PARA SUMA, RESTA Y MULTIPLICACION DE MATRICES
#AUTOR: FREE BIRD
##FECHA: 10 JULIO 2005

use strict;

my @matrix0=([1,2,3],[1,0,1],[1,1,1]);
my @matrix1=([1,1,1],[1,0,1],[0,1,1]);


maximo_m0();
suma();
resta();
multiplicacion();


####### FUNCION MAXIMO_M0#####################
# Saca el tamaño del miembro de la matriz que tiene mas miembros (what???)
# es decir la ecuacion con más miembros en este caso. Aunque puede ser usada
# con otros fines malevolos.
#
############################################
sub maximo_m0
{
my $maximulito=0;
for(my $i=0;$i<=$#matrix0;$i++)
{
if($#{$matrix0[$i]}>$maximulito)
{
$maximulito=$#{$matrix0[$i]};
}
}
print "El valor mayor es ";
print $maximulito+1;
print "\n";
}

################ FUNCION SUMA #######################
# Por si no es obvio, realiza la suma de las matrices, pero no solo eso
# sino que compara los tamaños para saber si son "sumables" o conformables
# con la suma como nos enseñaron en albegra lineal
#
################################################
sub suma{
if(($#matrix0== $#matrix1)and($#{$matrix0[0]}==$#{$matrix1[0]}))
{
#IMPRIMIENDO MATRIX0
for(my $i=0; $i<=$#matrix0;$i++)
{
for(my $j=0;$j<=$#{$matrix0[$i]};$j++)
{
print "$matrix0[$i][$j] ";
}
print "\n";
}

print "\n";

#IMPRIMIENDO MATRIX1
for(my $i=0; $i<=$#matrix1;$i++)
{
for(my $j=0;$j<=$#{$matrix1[$i]};$j++)
{
print "$matrix1[$i][$j] ";
}
print "\n";
}

print "\n";

#IMPRIMIENDO SUMA
for(my $i=0; $i<=$#matrix0;$i++)
{
for(my $j=0;$j<=$#{$matrix0[$i]};$j++)
{
print $matrix0[$i][$j]+$matrix1[$i][$j]." ";
}
print "\n";
}
print "\n";
}

else
{
print "Matrices no Conformables con la suma\n";
}
}#fin funcion suma

################## FUNCION RESTA #################
# Lo mismo que la funcion suma, pero esta vez, restamos.
#
################################################

sub resta{
if(($#matrix0==$#matrix1)and($#{$matrix0[0]}==$#{$matrix1[0]}))
{
#IMPRIMIENDO MATRIX0
for(my $i=0; $i<=$#matrix0;$i++)
{
for(my $j=0;$j<=$#{$matrix0[$i]};$j++)
{
print "$matrix0[$i][$j] ";
}
print "\n";
}

print "\n";

#IMPRIMIENDO MATRIX1
for(my $i=0; $i<=$#matrix1;$i++)
{
for(my $j=0;$j<=$#{$matrix1[$i]};$j++)
{
print "$matrix1[$i][$j] ";
}
print "\n";
}

print "\n";

#IMPRIMIENDO RESTA
for(my $i=0; $i<=$#matrix0;$i++)
{
for(my $j=0;$j<=$#{$matrix0[$i]};$j++)
{
print $matrix0[$i][$j]-$matrix1[$i][$j]." ";
}
print "\n";
}
print "\n"
}

else
{
print "Matrices no Conformables con la resta\n";
}
}#fin funcion resta

################## FUNCION MULTIPLICACION ################
# Se multiplican las matrices si la condicion se cumple: la columna de
# la primera matriz sea del mismo tamaño que los renglones de la segunda
# matriz.
#
# $#matrix0 = me devuelve el numero de renglones
# $#{$matrix1[0]}= me devuelve el numero de columnas
#
################################################

sub multiplicacion
{
my $total;
my $subtotal;
my $subtotality;

if($#matrix0==$#{$matrix1[0]})
{
for(my $i=0;$i<=$#matrix0;$i++)
{
for(my $j=0;$j<=$#{$matrix1[0]};$j++)
{

$total=0;
$subtotal=0;
$subtotality=0;

for(my $k=0;$k<=$#matrix1;$k++)
{
$subtotal = $matrix0[$i][$k]*$matrix1[$k][$j];
$total=$subtotal + $subtotality;
$subtotality = $total;
}
print $total." ";
}
print "\n";
}
}

else
{
print "Matrices imposibles de multiplicar\n";
}
}#fin funcion multiplicacion
exit(0);

No hay comentarios.: