You are on page 1of 28

MATRICES 2 - 151 -

14. 14. MATRICES 2 MATRICES 2


Habiendo estudiado las operaciones ms frecuentes con matrices as! como
la reutili"aci#n de c#di$o en este tema se profundi"an dic%os conceptos &
se introduce el ambiente de desarrollo 'Eclipse()
14.1. 14.1. BREVE INTRODUCCIN A ECLIPSE BREVE INTRODUCCIN A ECLIPSE
Si bien los pro$ramas *ue se elaboran en la materia son pe*ue+os & pueden
ser creados & mantenidos sin problema desde la l!nea de comando a medida
*ue incrementan en tama+o & comple,idad el mantenimiento se %ace cada -e"
ms dif!cil & en aplicaciones reales .con decenas centenas o miles de ar-
c%i-os/ es casi imposible)
0or eso en el desarrollo de aplicaciones reales se recurre casi siem-
pre a los ambientes de desarrollo & uno de dic%os ambientes es Eclipse el
cual adems de ser mu& completo es libre)
0ara escribir c#di$o C11 en Eclipse primero se in$resa a eclipse .%a-
ciendo doble clic en el arc%i-o 'eclipse-C11)e2e( dentro de la carpeta de
'eclipse)c11( .carpeta es la carpeta de,ada en el centro de estudiantes/)
3a primera -e" *ue se in$resa a Eclipse aparece la -entana de bien-enida
para comen"ar a traba,ar con eclipse se debe %acer clic en el icono4
5na -e" en el ambiente de desarrollo de eclipse se crea un nue-o pro&ec-
to4
Se da un nombre al pro&ecto4
6 se selecciona el tipo de pro&ecto) Sobre todo en los primeros pro&ectos
se recomienda seleccionar como tipo de pro&ecto 'Hello 7orld C11 0ro,ect(4
Se %ace clic en el bot#n finis% .en realidad se puede a+adir informaci#n
adicional sobre el pro&ecto %aciendo clic8 en 'ne2t( pero dic%a informa-
- 152 - Hernn 0e+aranda 9)
ci#n no es rele-ante por el momento/4
Con ello eclipse crea el si$uiente c#di$o4
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:: <ame 4 funcion1)cpp
:: Aut%or 4
:: 9ersion 4
:: Cop&ri$%t 4 6our cop&ri$%t notice
:: =escription 4 Hello 7orld in C11 Ansi-st&le
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include >iostream?
usin n!"es#!ce std@
in$ "!in./ A
cout >> BCCCHello 7orldCCCB >> endl@ :: prints CCCHello 7orldCCC
%e$u%n D@
E
3as primeras l!neas .en -erde/ son comentarios *ue como se sabe no for-
man parte del e,ecutable por lo *ue incluso pueden ser suprimidas) Como se
puede -er 'eclipse( crea el c#di$o de un pro$rama *ue imprime en pantalla
el mensa,e 'Hola Mundo( en in$lFs donde &a est incluida la librer!a 'ios-
tream( & el espacio de nombres 'namespace()
3a diferencia ob-ia como normalmente ocurre con los ambientes de desa-
rrollo es *ue los diferentes componentes del pro$rama estn claramente
identificados con diferentes colores & estilos)
0ara crear pro$ramas simplemente se borran las partes *ue no son de uti-
lidad & se escribe &:o a+ade c#di$o propio) 0or e,emplo se puede ambiar el
pro$rama para *ue muestre el mensa,e en espa+ol4
#include >iostream?
usin n!"es#!ce std@
in$ "!in./A
cout >> BGGGHola MundoCCCB >> endl@
%e$u%n D@
E
5na -e" escrito el pro$rama se debe $uardar el mismo4 Ctrl1S o Hile
-?Sa-e o clic en el bot#n $uardar4
3ue$o se compila & constru&e el e,ecutable4 0ro,ect -?Iuild pro,ect o
clic en el bot#n construir4
Esta es por supuesto la diferencia ms notable con relaci#n a la elabo-
raci#n de pro$ramas en la l!nea de comando4 el pro$rama se compila & se
crea el e,ecutable con un solo clic)
MATRICES 2 - 15J -
3os resultados del proceso de compilaci#n & creaci#n del e,ecutable se
presentan en la consola .en la -entana inferior central de Eclipse/ & en el
mismo se informa si la compilaci#n %a tenido F2ito o si %a ocurrido al$Kn
error) Isicamente se muestran los mismos mensa,es de error *ue aparecen en
la l!nea de comando cuando se compilan & crean e,ecutables)
Si e2iste al$Kn error el c#di$o debe ser corre$ido en el lu$ar corres-
pondiente) Esta es otra de las diferencias notables4 los mensa,es de error
& el c#di$o se encuentran en la misma -entana & basta %acer doble clic en
el mensa,e de error para saltar al lu$ar donde se produ,o el mismo o sim-
plemente ec%ar un -ista"o al c#di$o pues en el mismo los errores tambiFn
estn resaltados)
Hinalmente una -e" corre$idos todos los errores se %ace correr el pro-
$rama .se e,ecutar el pro$rama/4 Ctrl1H11 o Run-?Run o clic en el icono
E,ecutar4
Con lo *ue se obtiene la salida en la consola de la computadora .Gtodo en
el mismo lu$arC/
En realidad en un ambiente de desarrollo como Eclipse los tres pasos4
la compilaci#n creaci#n del e,ecutable & la e,ecuci#n del pro$rama puede
ser lle-ada a cabo en uno solo4 %aciendo clic en el bot#n e,ecutar)
Ltra de las -enta,as de los ambientes de desarrollo es la *ue proporcio-
nan a&uda continua a medida *ue se escribe un pro$rama) 0or e,emplo al es-
cribir la si$uiente instrucci#n4
Eclipse nos informa de -arias cosas4 a/ Mue %a reconocido el comando
'printf( pues se encuentra resaltado como una instrucci#n@ b/ Mue el te2to
.entre comillas/ %a sido reconocido como tal pues se encuentra tambiFn en
un color diferente@ c/ Mue el parFntesis *ue acaba de cerrarse corresponde
al parFntesis abierto en 'printf( .dic%o parFntesis aparece remarcado/ & d/
Mue e2iste un error de sinta2is %asta donde se %a escrito el c#di$o por
eso aparece un si$no de interro$aci#n en la parte i"*uierda & un recuadro
en la parte derec%a) El error detectado puede ser -isto colocando el punte-
ro sobre el si$no de interro$aci#n .o sobre el recuadro/4
Como se puede -er en este caso Eclipse informa *ue falta el punto & coma
al final de la instrucci#n)
Eclipse adems permite completar c#di$o automticamente .lo *ue no siem-
pre es bueno sobre todo cuando realmente se *uiere aprender un len$ua,e/)
0or e,emplo para escribir c#di$o utili"ando la estructura 'sNitc%( se
puede comen"ar escribiendo las letras 'sN(4
=onde el bic%ito *ue aparece en el lado i"*uierdo .& el recuadro ro,o en
- 15O - Hernn 0e+aranda 9)
el derec%o/ informan *ue e2iste al$Kn problema con el c#di$o) El problema
detectado puede ser -isto colocando el puntero sobre el bic%ito .o en el
recuadro ro,o/4
En este caso Eclipse informa *ue no %a reconocido como comando o -ariable
'sN( .por*ue no lo es/ & adems no %a encontrado el punto & coma al final
de la sentencia) 0or supuesto en este caso se sabe *ue e2isten dic%os
errores por*ue el c#di$o est aKn incompleto)
Si a%ora estando el cursor despuFs de 'sN( se mantiene pulsa la tecla
'ctrl( & se pulsa la tecla 'espacio( aparece la -entana4
=onde Eclipse muestra las instrucciones *ue comien"an con 'sN() Como se
puede -er e2iste para 'sNitc%( dos opciones) 3a primera es simplemente la
palabra) Si se selecciona & %ace enter la misma es escrita en el c#di$o4
3a se$unda es la estructura completa al seleccionarla aparece una nue-a
-entana *ue nos muestra la estructura4
MATRICES 2 - 155 -
6 al pulsar la tecla 'enter( esta estructura es insertada en el c#di$o4
Este c#di$o tambiFn se inserta .sin *ue apare"can las -entanas/ si se es-
cribe la palabra 'sNitc%( & se pulsan las teclas 'ctrl1espacio()
Lbser-e tambiFn *ue Eclipse identa automticamente el c#di$o por lo *ue
en este ambiente es ms dif!cil escribir un pro$rama no identado *ue uno
identado .recuerde *ue desde el tema P los pro$ramas tienen *ue estar iden-
tados/
Eclipse tiene adems muc%as otras caracter!sticas & funciones al$unas de
las cuales sern introducidas a medida *ue se elaboren pro$ramas en el mis-
mo)
A partir de este tema los pro$ramas pueden ser desarrollados indistinta-
mente &a sea en Eclipse o desde la l!nea de comando si se prefiere traba-
,ando desde la l!nea de comando se recomienda el uso de un editor ms a-an-
"ado como notepad11 .el mismo *ue cuenta con resaltado de te2to identaci#n
automtica autocompleatado & otras %erramientas ms/)
14.2. 14.2. BIBLIOTECAS & ARC'IVOS DE CABECERA DE USO (RECUENTE BIBLIOTECAS & ARC'IVOS DE CABECERA DE USO (RECUENTE
En el anterior tema las bibliotecas & los arc%i-os de cabecera %an sido
creados & utili"ados dentro del mismo directorio) <o obstante las biblio-
tecas & arc%i-os de cabecera de uso frecuente deben estar disponibles para
los pro$ramas *ue as! lo re*uieran por lo *ue es con-eniente *ue se en-
cuentren dentro de un mismo directorio)
En lo sucesi-o se asumir *ue dic%os arc%i-os se encuentran dentro del
directorio 'include()
En concordancia con los e,emplos desarrollados %asta el momento este di-
rectorio se encontrar dentro de 'C4QH09Qpro$ramasQc11Q2-2D12Q( sin embar-
$o este es s#lo un directorio de referencia por lo *ue se puede emplear
cual*uier otro .siempre & cuando dentro del mismo estF el directorio 'in-
clude( as! como los directorios creados para cada tema/)
Inicialmente este directorio contendr el arc%i-o de cabecera 'matri-
ces)%( con las plantillas de uso $eneral elaboradas %asta el momento es
decir4
#i)nde) MATRICESRHR
#de)ine MATRICESRHR
#include >iostream?
#include >iomanip?
#include >cstdlib?
usin n!"es#!ce std@
n!"es#!ce matricesA
::Tipo de dato $enerado en el error
$*#ede) in$ ERRLR@
- 15S - Hernn 0e+aranda 9)
::Constantes correspondientes a los errores
::3!mites err#neos en le $eneraci#n de elementos
c+ns$ ERRLR ERRLRR3IMITES;1@
::=!$itos de redondeo mu& $rande
c+ns$ ERRLR ERRLRRRE=L<=EL;2@
::0lantilla para mostrar BnB elementos del -ector B2B mostrando
::por defecto desde el primer elemento .pe;D/) 3os elementos se
::muestran por defecto con un anc%o de P caracteres .ae/ &
::T2 caracteres por l!nea .al/
$e"#l!$e >cl!ss T?
,+id "+s$%!%Vec$+%.T U2 unsined n unsined pe;D unsined ae;P
unsined al;T2/ $-%+../
A
unsined c;D@
)+% .unsined i;D@i>n@i11/A
cout>>setN.ae/>>2ViW@
c1;ae@
i) .c?;al/ Acout>>endl@ c;D@E
E
i) .cC;al/ cout>>endl>>endl@ else cout>>endl@
E
::0lantilla para $enerar un -ector con BnB elementos aleatorios
::comprendidos entre los l!mites BliB .inferior/ & BlsB .superior/
$e"#l!$e >cl!ss T?
T Uene%!%Vec$+%.unsined n T li T ls/ $-%+..ERRLR/
A
i) .ls>;li/ $-%+. ERRLRR3IMITES@
T d;ls-li U2;ne. TVnW@
)+% .unsined i;D@i>n@i11/
2ViW;.T/rand./Ud:RA<=RMAX1li@
%e$u%n 2@
E
::0lantilla para leer desde teclado BnB elementos en el -ector B2B
$e"#l!$e >cl!ss T?
,+id lee%Vec$+%.TU Y2 unsined n/ $-%+../
A
2;ne. TVnW@
)+% .unsined i;D@i>n@i11/ A
cout>>B2VB>>i>>BWZ B@
cin??2ViW@
E
E
::0lantilla para de-ol-er un -ector con una copia de BnB elementos
::del -ector B2B) 0or defecto los elemento se copian comen"ando con
::el primer elemento el elemento D .pe/)
$e"#l!$e >cl!ss T?
T Uc+#i!%Vec$+%.T U2 unsined n unsined pe;D/ $-%+../
A
T U&;ne. TVnW@ n1;pe@
)+% .unsined i;pe@i>n@i11/
&ViW;2ViW@
%e$u%n 2@
E
MATRICES 2 - 15T -
#endi)
Como &a se -io en el anterior tema las plantillas no pueden ser compila-
das por lo *ue por el momento no se re*uiere la biblioteca respecti-a)
Lbser-e *ue en la plantilla 'leer9ector( se recibe la -ariable donde se
lee el -ector la -ariable '2( como un puntero por referencia) Se procede
as! para *ue la direcci#n de memoria *ue se reser-a dentro del m#dulo *uede
$uardada en la -ariable ori$inal .la -ariable e2terna/) Si no se recibiera
la -ariable por referencia la memoria ser!a reser-ada & los datos le!dos
pero la direcci#n de memoria de dic%os datos se perder!a definiti-amente)
En lu$ar de recibir la -ariable por referencia se podr!a pensar en reci-
bir s#lo el nKmero de elementos & de-ol-er un puntero .como se %ace con la
plantilla '$enerar9ector(/ sin embar$o eso no es posible en este caso
por*ue cuando se traba,a con plantillas al menos uno de los parmetros
debe ser del tipo .o tipos/ definido para la plantilla) 3a otra alternati-
-a *ue s! funcionar!a ser!a el crear funciones sobrecar$adas eso s! te-
niendo el cuidado de sobrecar$ar la funci#n para todos los posibles tipos
de datos)
Como &a se di,o para emplear este arc%i-o de cabecera es suficiente por
el momento *ue sea incluido en el pro$rama .con '[include(/ sin embar$o
puesto *ue este arc%i-o se encuentra en el directorio 'include( & no en el
directorio donde se escribe el pro$rama es necesario informar de ello al
compilador) Con ese fin se pueden se$uir -arios caminos el ms sencillo
consiste en escribir el camino relati-o o completo en la directi-a '[inclu-
de( por e,emplo en el si$uiente pro$rama se le da la locali"aci#n relati-
-a .empleando s#lo como e,emplo notepad11/4
3ue$o se procede a la compilaci#n & enla"ado en la forma %abitual4
- 15P - Hernn 0e+aranda 9)
6 %aciendo correr el pro$rama se obtiene4
Alternati-amente se puede incluir el arc%i-o en la forma %abitual es
decir4
6 al momento de compilar se le instru&e al compilador con la opci#n '-
I( *ue bus*ue los arc%i-os de cabecera en el directorio indicado .en este
caso en 'include(/4
=onde al i$ual *ue en el anterior e,emplo los dos puntos '))( represen-
tan al directorio padre .recuerde tambiFn *ue un punto ')( representa al
directorio actual/) Lbser-e *ue se %a empleado como separador de directo-
rios ':( & no 'Q( esto por*ue el compilador .\<5/ pro-iene de los sistemas
operati-os 3inu2 & en dic%os sistemas se emplea ':( para separar los direc-
torios .sin embar$o se puede emplear tambiFn 'Q(/)
<ote tambiFn *ue en este pro$rama no s#lo se inclu&e el arc%i-o 'matri-
ces)%( sino tambiFn el espacio de nombres 'matrices( por*ue es en espacio
donde se %an declarado las plantillas & constantes de esta librer!a por lo
tanto no es suficiente incluir el arc%i-o sino *ue tambiFn se debe usar el
espacio de nombres respecti-o)
MATRICES 2 - 15] -
Supon$a a%ora *ue se *uieren crear cuatro funciones4 1/ para $enerar un
nKmero entero aleatorio 2/ para $enera un nKmero real aleatorio J/ para
redondear un nKmero real a un determinado nKmero de d!$itos despuFs del
punto & O/ para redondear los primeros 'n( elementos de un -ector de nKme-
ros reales a un determinado nKmero de d!$itos despuFs del punto)
3as dos primeras funciones podr!an ser implementadas mediante una planti-
lla sin embar$o dado *ue s#lo se debe considerar dos tipos de datos es
ms eficiente implementarlos a tra-Fs de funciones sobrecar$adas) 0ara las
dos Kltimas las plantillas no constitu&en una buena opci#n pues s#lo tie-
ne sentido redondear nKmeros reales .no enteros caracteres cadenas
etc)/ por lo *ue la forma ms eficiente de implementarlas es tambiFn con
funciones sobrecar$adas)
0rimero se a+aden los prototipos de estas funciones .las declaraciones de
estas funciones/ en el arc%i-o de cabecera 'include)%(4
::\enera un nKmeo entero comprendido entre los l!mites BliB & BlsB
in$ ene%!%Nu"e%+.in$ li in$ ls/ $-%+..ERRLR/@
::\enera un nKmero real comprendido entre los l!mites BliB & BlsB
d+u/le ene%!%Nu"e%+.d+u/le li d+u/le ls/ $-%+..ERRLR/@
::Redondea el nKmero real B2B a BnB d!$itos depuFs del punto siendo
::el nKmero de d!$itos por defecto D
,+id %ed+nde!%.d+u/le Y2 unsined n;D/ $-%+..ERRLR/@
::Redondea los primeros BnB elementos del -ector B2B a BmB d!$itos
::despuFs del punto
,+id %ed+nde!%.d+u/le U2 unsined n unsined m;D/ $-%+..ERRLR/@
Estas declaraciones deben ser a+adidas despuFs de la Kltima plantilla
.'copiar9ector(/ & antes de cerrar el blo*ue correspondiente al espacio de
nombres 'matrices() Lbser-e *ue al i$ual *ue en las plantillas en los
prototipos se informa con relaci#n a los parmetros por defecto & al tipo
de error $enerado de esa manera el usuario de las funciones sabe no s#lo
*uF datos mandar sino *uF tipos de errores tratar)
3ue$o se escribe el c#di$o de estas funciones en otro arc%i-o4 'matri-
ces)cpp( .dentro del directorio 'include(/4
#include >cmat%?
#include Bmatrices)%B
n!"es#!ce matricesA
in$ ene%!%Nu"e%+.in$ li in$ ls/ $-%+..ERRLR/
A
i) .li?;ls/ $-%+. ERRLRR3IMITES@
%e$u%n rand./U.ls-li/:RA<=RMAX1li@
E
d+u/le ene%!%Nu"e%+.d+u/le li d+u/le ls/ $-%+..ERRLR/
A
i) .li?;ls/ $-%+. ERRLRR3IMITES@
%e$u%n rand./U1)D:RA<=RMAXU.ls-li/1li@
E
,+id %ed+nde!%.d+u/le Y2 unsined n/ $-%+..ERRLR/
- 1SD - Hernn 0e+aranda 9)
A
i) .n?15/ $-%+. ERRLRRRE=L<=EL@
i) .n;;D/
2;round.2/@
else A
d+u/le d;1@
)+% .unsined i;D@i>n@i11/
dU;1D@
2;round.2Ud/:d@
E
E
,+id %ed+nde!%.d+u/le U2 unsined n unsined m/ $-%+..ERRLR/
A
i) .m?15/ $-%+. ERRLRRRE=L<=EL@
i) .n;;D/
)+% .unsined i;D@i>n@i11/
2ViW;round.2ViW/@
else A
d+u/le d;1@
)+% .unsined i;D@i>m@i11/
dU;1D@
)+% .unsined i;D@i>n@i11/
2ViW;round.2ViWUd/:d@
E
E
E
Se compila el arc%i-o en la forma %abitual4
Con lo *ue se crea el arc%i-o ob,eto 'matrices)o( *ue puede ser enla"ado
a cual*uier pro$rama)
Como se di,o pre-iamente en realidad en C:C11 las bibliotecas estn con-
formadas por 2 o ms arc%i-os compilados & aun cuando en este caso s#lo se
tiene un arc%i-o es posible crear la librer!a correspondiente4
Con lo *ue se crea la biblioteca 'libmatrices)a() Como se puede obser-ar
para crear una biblioteca se emplea el comando 'ar( .'arc%i-er(/ normal-
mente con la opci#n '-r( *ue instru&e reempla"ar los arc%i-os e2istentes
por los nue-os) Lbser-e *ue el nombre de la librer!a inica con 'lib( & ter-
mina con la e2tensi#n ')a()
5na -e" creada la librear!a se crea el !ndice de los s!mbolos e2istentes
en la misma .funciones -ariables & otras declaraciones/ de manera *ue el
enla"ado de la librer!a sea muc%o ms rpido ello se consi$ue con el co-
mando 'ranlib(4
En el caso de 7indoNs el comando 'ranlib( no es realmente necesario
pues el !ndice es creado automticamente con el comando 'ar()
5na -e" *ue se tiene el arc%i-o ob,eto .'matrices)o(/ &:o la biblioteca
.'libmatrices)a(/ se enla"an en los pro$ramas *ue as! lo re*uieran)
MATRICES 2 - 1S1 -
0ara enla"ar el arc%i-o ob,eto .matrices)o/ se procede en la forma %abi-
tual s#lo *ue como no est en el mismo directorio *ue el pro$rama se le
debe dar el camino para encontrarlo por e,emplo para enla"ar esta biblio-
teca con el si$uiente pro$rama4
#include >iostream?
#include >cstdlib?
usin n!"es#!ce std@
#include Bmatrices)%B
usin n!"es#!ce matrices@
in$ "!in./A
in$ a;$enerar<umero.1DDJDD/@
cout>>B<umero entero $enerado4 B>>a>>endl@
d+u/le r;$enerar<umero.1D)D1DD)D/@
cout>>B<umero real $enerado4 B>>r>>endl@
redondear.r2/@
cout>>B<umero real redondeado4 B>>r>>endl@
d+u/le U2@
2;$enerar9ector.1D1)D2D)D/@
cout>>B9ector $enerado4 B>>endl@
mostrar9ector.21D/@
redondear.21DJ/@
cout>>B9ector redondeado4 B>>endl@
mostrar9ector.21D/@
dele$e.2/@
}
0rimero se compila para crear el arc%i-o ob,eto .'prue2)o(/4
El cual puede ser enla"ado con 'matrices)o( .no ol-idando especificar el
el directorio en el *ue se encuentra/4
Mue al ser e,ecutado de-uel-e4

Alternati-amente se puede enla"ar empleando la biblioteca4
=onde '-3( se emplea para indicarle al compilador el lu$ar donde debe
buscar las bibliotecas) Como se puede obser-ar el nombre de la librer!a se
precede con '-l( & no se escribe ni 'lib( ni la e2tensi#n ')a()
0or supuesto ambos mFtodos $eneran el mismo resultado sin embar$o si
en lu$ar de un s#lo arc%i-o ob,eto se tienen -arios es ms eficiente em-
plear bibliotecas)
- 1S2 - Hernn 0e+aranda 9)
14.0. 14.0. E1EMPLOS E1EMPLOS
1. A2!d! ! 3"!$%ices4 un! )unci5n 6ue %eci/! un ,ec$+% de n7"e%+s en$e%+s +
%e!les * de,uel,! l! #+sici5n 8el 9ndice: del ele"en$+ c+n el "!*+% ,!;
l+% !/s+lu$+. P%ue/e l! )unci5n enc+n$%!nd+ el "!*+% de < n7"e%+s en$e;
%+s le9d+s #+% $ecl!d+ * l! #+sici5n del "!*+% n7"e%+ %e!l de un ,ec$+%
c+n 4= n7"e%+s %e!les ene%!d+s !l !>!% * c+"#%endid+s en$%e ;<= * <=.
0uesto *ue los nKmeros pueden ser enteros o reales se crea dos funcione
sobrecar$adas cu&as cabeceras .a+adidas a 'matrices)%(/ son4
::=e-uel-e el !ndice del elemento con el ma&or -alor absoluto
unsined "!*+%.in$ U2 unsined n/@
unsigned mayor(double *x, unsigned n);
El c#di$o respecti-o a+adido a 'matrices)cpp( es4
unsined "!*+%.in$ U2 unsined n/A
unsined 8;D@
)+% .unsined i;1@i>n@i11/
i) .abs.2ViW/?abs.2V8W// 8;i@
%e$u%n 8@
E
unsined "!*+%.d+u/le U2 unsined n/A
unsined 8;D@
)+% .unsined i;1@i>n@i11/
i) .abs.2ViW/?abs.2V8W// 8;i@
%e$u%n 8@
E
Con estas modificaciones se -uel-en a crear el arc%i-o ob,eto 'matri-
ces)o( & la librer!a 'libmatrices)a(4
Entonces se crea el pro$rama de prueba .en este e,emplo en el directorio
tema1O/4
#include >iostream?
usin n!"es#!ce std@
#include Bmatrices)%B
usin n!"es#!ce matrices@
in$ "!in./A
in$ U-@
unsined m@
cout>>endl>>BIntrodu"ca 5 nKmeros enteros4B>>endl@
leer9ector.-5/@
m;ma&or.-5/@
cout>>endl>>BEl ma&or -alor en el -ector es4 B>>-VmW>>endl@
d+u/le U2@
2;$enerar9ector.OD-5D)D5D)D/@
cout>>endl>>BEl -ector con los -alores $enerados es4B>>endl@
mostrar9ector.2ODD12/@
m;ma&or.2OD/@
cout>>BEl ma&or -alor en el -ector es4 B>>2VmW>>endl@
MATRICES 2 - 1SJ -
dele$e.-/@
dele$e.2/@
%e$u%n D@
E
Mue se compila & se crea el e,ecutable4
6 %aciendo correr el pro$rama se obtiene4
Mue como se puede -er de-uel-e los resultados esperados)
2. A2!d! ! 3"!$%ices4 un! )unci5n 6ue %eci/! un ,ec$+% de n7"e%+s en$e%+s +
%e!les * de,uel,! l! su"!$+%i! de sus ele"en$+s. P%ue/e l! )unci5n c!l;
cul!nd+ el #%+"edi+ de 1= n7"e%+s en$e%+s ene%!d+s !le!$+%i!"en$e *
c+"#%endid+s en$%e 1 * 1= * c+n el #%+"edi+ de < n7"e%+s %e!les in$%+du;
cid+s #+% $ecl!d+.
En este caso el problema ser resuelto empleando Eclipse) 0uesto *ue
Eclipse traba,a con pro&ectos & cada pro&ecto corresponde a un directorio
para la modificar & mantener la librer!a 'matrices( se crea un nue-o pro-
&ecto4
El nombre del pro&ecto deber ser 'include( .*ue corresponde al nombre
del directorio &a creado para la librer!a 'matrices(/ & *ue deber estar
ubicado en el mismo directorio donde se cre# la misma *ue en los e,emplos
elaborados corresponde a 'C4QH09Qpro$ramasQc11Q2-2D12()
3a -entana de creaci#n de nue-os pro&ectos deber *uedar apro2imadamente
como se muestra en la fi$ura de la si$uiente p$ina & como se puede -er en
la misma aparece una ad-ertencia indicando *ue &a e2iste un directorio con
el nombre especificado .'include(/) En este caso se est creando el pro&ec-
to a prop#sito en el directorio e2istente .para se$uir traba,ando con los
arc%i-os &a creados/ por lo *ue dic%a ad-ertencia puede ser i$norada)
- 1SO - Hernn 0e+aranda 9)
Se crea un pro&ecto de tipo biblioteca esttica por*ue ese es el tipo de
biblioteca *ue se est empleando en la soluci#n de los problemas) Entonces
en la -entana del e2plorador de pro&ectos aparecer al$o similar a lo si-
$uiente4
=onde como se puede -er estn los arc%i-os creados desde la l!nea de
comando adems de una serie de directorios 'Include( *ue corresponde a los
directorios donde se encuentran los arc%i-os de cabecera proporcionados
con,untamente el compilador)
En Eclipse los arc%i-os compilados se $uardan por defecto en el directo-
rio '=ebu$( .por*ue por defecto se compila en el modo de depuraci#n/ & en
el directorio 'Release( si se %a compilado en el modo de distribuci#n .el
modo normal/) El modo de depuraci#n e*ui-ale a la depuraci#n con la opci#n
'-$( desde la l!nea de comando & es el modo por defecto por*ue mientras se
elabora un pro$rama es frecuente emplear las %erramientas de depuraci#n)
0ara compilar en el modo de distribuci#n .el modo normal/ simplemente se
eli$e dic%a opci#n4
Se debe compilar en este modo una -e" *ue el pro$rama %a sido depurado &
probado)
MATRICES 2 - 1S5 -
0ara abrir cual*uiera de los arc%i-os de este pro&ecto simplemente se
%ace doble clic en el mismo) 0rocediendo de esta manera se a+aden los si-
$uientes prototipos al arc%i-o de cabecera 'matrices)%(4
::=e-uel-e la sumatoria de los BnB elementos del -ector B2B
l+n l+n in$ su".in$ U2 unsined n/@
d+u/le su".d+u/le U2 unsined n/@
6 el c#di$o respecti-o al arc%i-o fuente 'matrices)cpp(4
l+n l+n in$ su".in$ U2 unsined n/A
l+n l+n in$ s;D@
)+% .unsined i;D@i>n@i11/ s1;2ViW@
%e$u%n s@
E
d+u/le su".d+u/le U2 unsined n/A
d+u/le s;D@
)+% .unsined i;D@i>n@i11/ s1;2ViW@
%e$u%n s@
E
6 se compila la librer!a4
Entonces en el e2plorador del pro&ecto aparece el directorio '=ebu$( &
dentro del mismo el arc%i-o ob,eto 'matrices)o( & la librer!a 'libinclu-
de)a( .Eclipse nombra a la biblioteca i$ual *ue al pro&ecto/4
Si se compila en el modo de distribuci#n .'release(/4
Se crea el directorio 'Release( & dentro del mismo aparecen i$ualmente el
arc%i-o ob,eto 'matrices)o( & la librer!a 'libinclude)a( pero en un modo
ms compacto pues en los mismos no se $uarda la informaci#n re*uerida para
la depuraci#n .J)PO^b comparados con 12T^b en el modo =ebu$/)
A%ora se crea un nue-o pro&ecto para el pro$rama de prueba4
- 1SS - Hernn 0e+aranda 9)
Mue como todos los pro&ectos Eclipse crea el directorio respecti-o
.'t1ORe,em1(/ inicialmente -ac!o) Entonces se a+ade el pro$rama de prueba
'pro$prue)cpp(4
En el cual se escribe el c#di$o de prueba4
#include >iostream?
usin n!"es#!ce std@
#include Bmatrices)%B
usin n!"es#!ce matrices@
in$ "!in./A
in$ Ua@
l+n l+n in$ s1@
d+u/le U2s2@
a;$enerar9ector.1D11D/@
cout>>endl>>BElementos a sumar4B>>endl@
mostrar9ector.a1D/@
s1;sum.a1D/@
cout>>BSumatoria4 B>>s1>>endl@
cout>>endl>>B<Kmeros reales a sumar4B>>endl@
leer9ector.25/@
s2;sum.25/@
cout>>endl>>Bsumatoria4 B>>s2>>endl>>endl@
%e$u%n D@
E
MATRICES 2 - 1ST -
Mue reporta muc%os errores por*ue no puede encontrar el arc%i-o de cabe-
cera Bmatrices)%B debido a *ue se encuentra en otro pro&ecto) 0ara *ue
bus*ue Eclipse sepa donde buscar estos arc%i-os se modifican las propieda-
des del pro&ecto4
6 dentro del mismo modificar las opciones de B0at% and S&mbolsB4
En esta p$ina se eli$e la pesta+a 'References( & en la misma se selec-
ciona la referencia '=ebu$( dentro de 'include(4
Con lo *ue la referencia respecti-a se a+ade en las pesta+as 'Includes(
'3ibraries( & '3ibrar& 0at%s() 0or e,emplo a la pesta+a '3ibraries( se a+a-
de4
- 1SP - Hernn 0e+aranda 9)
A%ora con esta modificaci#n puede compilar el pro$rama4
Con lo *ue el pro$rama compila correctamente & en la consola se puede -er
una informaci#n similar a la si$uiente4
Mue con e2cepci#n de las opciones -LD -$J -7all & -fmessa$e-len$t%;D
son las mismas instrucciones empleadas desde la l!nea de comando para com-
pilar & enla"ar el pro$rama)
Haciendo correr el pro$rama se obtiene4
Elementos a sumar4
1 S 2 P S 5 O ] P
T
Sumatoria4 5S
<Kmeros reales a sumar4
2VDWZ 2)1
2V1WZ J)5
2V2WZ O)J
2VJWZ J)]
2VOWZ 5)J
sumatoria4 1])1
Mue son los resultados correctos)
0. A2!d! ! 3"!$%ices4 un! )unci5n 6ue %eci/! d+s ,ec$+% de n7"e%+s en$e%+s
+ %e!les? l+s su"e ele"en$+ ! ele"en$+ * de,uel,! el ,ec$+% %esul$!n$e.
L! )unci5n de/e ene%!% un e%%+% si l+s d+s ,ec$+%es n+ $ienen el "is"+
n7"e%+ de ele"en$+s. P%ue/e l! )unci5n su"!nd+ d+s ,ec$+%es de @ n7"e%+s
en$e%+s le9d+s #+% $ecl!d+ * d+s ,ec$+%es de 0== n7"e%+s %e!les ene%!;
d+s !l !>!% * c+"#%endid+s en$%e = * 1==? #%ue/e $!"/iAn l! )unci5n
"ul$i#lic!nd+ d+s ,ec$+%es c+n < * @ n7"e%+s en$e%+s ene%!d+s !l !>!% *
c+"#%endid+s en$%e 1 * 1=.
Este problema se resuel-e tambiFn en Eclipse & para ello se si$ue el mis-
mo procedimiento *ue en el anterior e,emplo)
MATRICES 2 - 1S] -
3a constante de error a+adida a la cabecera 'matrices)%( .despuFs de la
Kltima constante de error/ es4
::Matrices o -ectores con dimensiones no compatibles
c+ns$ ERRLR ERRLRR=IME<SIL<ES;J@
6 los prototipos de las funciones .a+adidos al final del arc%i-o/ son4
::Suma los BnB elementos de los -ectores B2B & B&B
in$ Usu".in$ U2 unsined n2 in$ U& unsined n&/ $-%+..ERRLR/@
d+u/le Usu".d+u/le U2 unsined n2 d+u/le U& unsined n&/ $-%+..ERRLR/@
El c#di$o respecti-o a+adido al final del arc%i-o 'matrices)cpp( es4
in$ Usu".in$ U2 unsined n2 in$ U& unsined n&/ $-%+..ERRLR/
A
i) .n2C;n&/ $-%+. ERRLRR=IME<SIL<ES@
in$ U" ; ne. in$Vn2W@
)+% .unsined i;D@i>n2@i11/
"ViW;2ViW1&ViW@
%e$u%n "@
E
d+u/le Usu".d+u/le U2 unsined n2 d+u/le U& unsined n&/ $-%+..ERRLR/
A
i) .n2C;n&/ $-%+. ERRLRR=IME<SIL<ES@
d+u/le U" ; ne. d+u/leVn2W@
)+% .unsined i;D@i>n2@i11/
"ViW;2ViW1&ViW@
%e$u%n "@
E
Se $uardan estas modificaciones & se constru&e la librer!a .con Iuild/)
Entonces se crea el pro$rama de prueba .un nue-o pro&ecto/ con el nombre
t1ORe,em2 & se a+ade al mismo el arc%i-o 'pro$prue)cpp( no ol-idando modi-
ficar las propiedades del pro&ecto para incluir la referencia a 'include(
.i$ual *ue se %i"o en el anterior e,emplo/)
El c#di$o escrito en el arc%i-o 'pro$prue)cpp( es4
#include Bmatrices)%B
usin n!"es#!ce matrices@
#include >iostream?
usin n!"es#!ce std@
in$ "!in./A
in$ UaUbUcUdUeUferr@
d+u/le U2U&U"@
$%*A
cout>>endl>>BElementos del primer -ector4 B>>endl@
leer9ector.aT/@
cout>>endl>>BElementos del se$undo -ector4 B>>endl@
leer9ector.bT/@
c;sum.aTbT/@
cout>>endl>>B9ector resultante4 B>>endl@
mostrar9ector.cT/@
2;$enerar9ector.JDDD)D1DD)D/@
cout>>BElementos del primer -ector de nKmeros reales4 B>>endl@
mostrar9ector.2JDDD12/@
&;$enerar9ector.JDDD)D1DD)D/@
cout>>BElementos del se$undo -ector de nKmeros reales4 B>>endl@
mostrar9ector.&JDDD12/@
- 1TD - Hernn 0e+aranda 9)
";sum.2JDD&JDD/@
cout>>BElementos del -ector resultante4 B>>endl@
mostrar9ector."JDDD12/@
d;$enerar9ector.511D/@
cout>>BElementos del primer -ector de nKmeros enteros4 B>>endl@
mostrar9ector.d5/@
e;$enerar9ector.T11D/@
cout>>BElementos del se$undo -ector de n_meros enteros4 B>>endl@
mostrar9ector.eT/@
f;sum.d5eT/@
cout>>BElementos del -ector resultante4 B>>endl@
mostrar9ector.fT/@
E c!$c-.ERRLR er/A
i) .er;;ERRLRR=IME<SIL<ES/ A
cout>>BError4 9ectores no compatibles)B>>endl@
err;1@
E
E
dele$e.a/@
dele$e.b/@
dele$e.c/@
dele$e.d/@
dele$e.e/@
dele$e.2/@
dele$e.&/@
dele$e."/@
i) .Cerr/ dele$e.f/@
%e$u%n D@
E
\uardando constru&endo & %aciendo correr el pro$rama se obtiene4
Elementos del primer -ector4
2VDWZ 1
2V1WZ 2
2V2WZ J
2VJWZ O
2VOWZ 5
2V5WZ S
2VSWZ T
Elementos del se$undo -ector4
2VDWZ 2
2V1WZ J
2V2WZ O
2VJWZ 5
2VOWZ S
2V5WZ T
2VSWZ P
9ector resultante4
J 5 T ] 11 1J 15
Elementos del primer -ector de nKmeros reales4
D)12512S 5S)J5P5 1])JJDO PD)PTO1 5P)5DD] OT)]PTJ
J5)D2]1 P])5]S2 P2)2PO TO)SSD5 1T)O1DP P5)P]OJ
T1)D5D1 51)J5J5 JD)J]]5 1)O]POS ])1OD2] JS)OO52
1O)TJ1J 1S)5P]] ]P)P525 OO)5S]2 11)]DPJ D)OSS]JJ
D)P]11O JT)TPP 5J)1SSJ 5T)11PO SD)1TSO SD)T1SS
MATRICES 2 - 1T1 -
1S)S2JO SS)JDO5 O5)DTP] J5)212J 5)TDJ]1 SD)TSP5
TP)JJ1] PD)2SDS 51)]PPJ JD)1]5 PT)5]TJ T2)SSTS
]5)5]D1 ]2)5T1P 5J)]J5O 1O)2JJP OS)2DP1 2J)5J2P
PS)22J] 2D)]SD1 TT)]S5S PO)JS5O ]])ST]S ]])]S]5
S1)1O]] J])2OJP 2S)S21J 2])T2P1 PO)D1OO 2)JTOJO
JT)5PSS ])2S2JT ST)T2DS 5)S2151 D)PTP]JJ ]1)PT]
2T)5PPT 2T)2P]T 5P)T]D] S])11PJ PJ)TS11 T2)SO]J
OP)O]J] 2D)5J5] TO)JTJS OS)PO5] O5)T]S1 ]O)]15S
TO)OOJP 1D)P2P 5])]DOP JP)52J5 TJ)5DDP SD)P]SS
5T)2OD5 JS)1JJ] 15)1555 22)51D5 O2)515J PD)2PP1
51)T1DS ]P)]]] T5)15O] JO)55S1 1S)P]P1 S5)TJDP
O])1P]T S)J5J]5 S])]T5] 5D)OPDT 1O)TO]S ]O)]5PJ
1O)15T5 ]D)511P S])2P]2 JD)JDO] O2)S55T T)DJT5T
]S)SS1J SP)J1PT 15)J2JJ PT)T255 P2)1SP 5P)2DO]
1])1J51 1T)TP]2 P1)T1]O OT)52S5 15)555J 5D)J]22
TJ)2D1T OD)55]1 2T)]5P 5S)PTOJ SP)22O1 T5)5P52
T2)1]15 OT)52]5 12)JD2 JS)TPD] PJ)OSP1 J)5D]SJ
51)TD1O SS)2]PO O2)S222 1D)OSTP ]O)]JJ] ]2)1JPO
5O)]5OT JO)5]PP OT)1T25 JT)O]P1 PO)S]P J1)SPTO
O5)SD]] 2T)1PP] ]P)2]T1 2])TP TJ)]1P] 5S)T2TP
1])5]] TS)1J15 PJ)]OO2 J])TS5S 5D)D] P])D1SO
2)TOSST ]])OS2] 5T)25PP 5)D5DP1 5J)1J2T 1])ODST
PO)JDOJ S2)ST5] S5)TS1J 1])TP51 PO)215P 12)JJ25
1D)]]2P TO)J12S J1)ODSS ]O)1DS] 2P)SDP1 JJ)SJ1O
1O)D2SJ TJ)JDP5 PJ)OS2 TD)T]]] SD)D2JP TO)T215
25)2T2O 1O)OOT5 D)1S1TOP S)1DDS5 PD)S2JP P5)2S2S
21)D5TP 11)5SDO 55)J2D] 1)O2521 11)JTTJ O5)O512
T5)222 SP)S1OP 5O)JOOJ T)JPP5J OJ)ST2 2D)1]O1
S])S21] 2])DJ5J OJ)SSP] 2J)2O2] 5T)TPSP 5J)25T]
S2)PSP1 1S)D1]2 5D)O1J5 ]S)JDO2 S])5TS1 ]2)OPD2
1P)]]OT JJ)5]OP 1T)PJ5 ]])51TP O5)TOO2 ]])PD1S
])T5DSS S2)51T2 ])OJ]JT OJ)TT2T ]J)151S O)POJ2]
P])OS2 2])DD1T 22)TJD2 TS)]DSS O1)DT1P 2D)1]T1
S2)PDT1 SD)O1OO O5)1S1J OS)SJ5J 5])TP2T SJ)OT2O
P5)OT]J P2)PT]1 S2)OTT5 T2)D]DP 5S)5T52 JT)51JO
1P)O2T1 TJ)T]DT 55)51J2 ]D)5DPT 2O)2PSS 1P)P]O
SD)OT2O S])P5DP 5P)OS1J J5)12]] O])OOS1 P)DJP5P
TO)DTO5 S1)2DO] S2)DJP S])1122 PD)O52] 1O)]11J
5T)SDJT PS)TTJJ ]1)155T S1)OTDO T2)TSPJ O)J21O2
SS)TTTS ]T)S5J1 J1)5D12 5S)]2D1 JD)5P2S 1T)J]25
1D)P55O PS)]DO5 P5)1222 TO)OJ1S 15)OPP1 J2)S]1O
T)]JOP1 T)SSD15 SO)D]P P2)DDD2 5O)5D]1 OO)P25S
OD)P]T] 2])PTOS OS)55S 5D)12D5 15)2S5O J2)JDJP
TJ)T]]] J1)JPPJ P2)SSP5 ]5)]DT5 PT)JJOP T2)5D2P
JD)DD5P ]O)J]]] 12)T2J2 S)5TJS] TP)O]ST 52)O5PJ
Elementos del se$undo -ector de nKmeros reales4
SD)]SJP ]5)S11O T)22STP PT)5SJT S5)JP5] J2)212J
1D)OPD1 5D)5D51 22)TDPP 2])D2]2 ]1)]]P 55)11SO
SS)2PD1 11)O5JS O])25JP JT)]1J1 O])SP11 T])JJ5]
5D)]2S2 JP)2JSS SP)P1S2 5J)2151 SD)S2P1 J])51PO
D)5P]DDT TD)TPTT 1D)DS2 S2)JDSS PS)J2OT O])15D1
TO)TJJT O])S]D2 JP)D1DP TP)5JSJ 55)2P12 J5)TD]T
]5)5T1P SJ)DPOP 1T)S5P JT)O2OP 1J)1S2S TO)J2TP
]5)1T2 S1)1]PP 2)TPJ2] J2)]POO 5)5]D]] SJ)]21
1J)1S2S PO)TDT2 PS)OJ15 5])SPP1 T2)1SO1 P5)J]S]
1)OST]O 12)SOS] TD)T]DT S1)T1O5 21)T5SS S)5]5D5
- 1T2 - Hernn 0e+aranda 9)
1S)P]2 S2)O1DO JO)D]PJ J1)]ODT JS)T5S5 SS)1
PD)2J]J PD)SPT] 52)S5JS S1)11DJ T])P1P1 ]D)DSD1
1O)OP1 SJ)D1TT OD)2O1T 25)JT 1J)S5O P5)51]
S)S1SO1 O2)TPDP 5T)JJ51 JD)22PS 5O)PD51 22)55S2
J1)1J5 11)DSJ PD)PDJ] 1J)OTD] 2P)O2O] TP)P11
P])52J TP)]SJS TO)JT]T S1)522J JS)112S P5)SS55
22)PO]2 PS)J5P2 22)]OJP 2O)]55 5O)2OD5 ]P)OPJ2
5)JPDO1 P)1O2JO 52)OSTO O2)SPD1 ])OSSPO 25)PT]T
P])15JT 2J)2TS5 1O)S55 12)5D]5 ]J)1SJ] P)D1111
O)TD]D1 5)PT1TS JJ)SODS ]1)OTD1 J])PSD2 OJ)2TPJ
]O)S1S5 PJ)T1PO 5J)O22T PO)2D]T S])J5JJ J])TSPT
25)]1SJ D)OJJJSJ 52)55] ]5)OPD2 J])PS]O 2O)1D]S
5P)555] 25)51J5 SP)OD11 ]O)52P OJ)5O]] P])D225
D)T1T1P5 ]O)D]TT SD)155 TP)S15T 5T)SSTP 1O)2OJ
22)2J2T JP)JDDT D)O2T25] O1)T]2 P)22OTO S5)]]J2
P5)5D]P S)OP51P P1)1DS SS)2DS] S])1OPP PD)2S]P
5J)D1JT SP)5S2] 1O)2TSS SP)]5D5 T2)TP]T TT)TTJO
J)1DSTP PS)PST] SO)O52 TD)S5S5 P)5O51P 55)1]PP
]O)T]D5 5)PTTPS 2T)O]T2 1O)51TT ]P)1TP S1)]]PO
2])22O5 ]2)2OPJ JS)T5JO S])O5O 21)PSJ5 15)5]1]
2O)D5OT 52)1OJ] ]D)22P 1D)SO1P ]D)2SOS OO)1T25
P)D1111 TP)2D]P 1T)1TP] ]T)OJ]5 TT)5PT2 PT)DJPP
21)DSJ] O5)SS1P D)JT5JTP T5)DSJJ 11)ODOP OD)OTDS
J1)11JS ]])2S15 J)P5T5O 25)2DPJ 1P)]2TS 2O)TSPP
15)J5DP S2)DJ1] PP)5JT2 ]J)]DP5 1])5S5O TT)]S5S
SO)555P S5)ST5P ]D)]1OS O5)5O5P ]2)12]J SS)O1TO
15)DTS1 SJ)SJO1 5S)]5JS O2)2DO ]O)JD22 5O)D5TO
5T)P5T 5J)SO5O 25)52PT J])S]5O J5)D2S1 J)SS222
T])5251 1])S5D] T)D2PO1 JP)]O1S 5])DTOT T)D]25
1])TSSP 15)5PP] SO)OJJT O5)OJ2] SD)O2]T S])TJOP
OO)12]P SP)OOS] J])S52T PJ)5T1] 5])2212 1])]5]1
]O)]OS1 PT)SDDJ J])1TD5 ]P)TO5T 1P)5JDP P])5T1P
5T)OO5 OO)2DS1 S2)TJJP TD)P51P O)]S2J1 2P)55S2
2S)D2D1 OD)TSJS P])5J22 T1)D1]S T2)POOS P])SD5O
J])J5ST J])TO12 ]D)JPST JD)PSDJ JP)P1DO 5T)D5TO
J5)J55T TJ)JS]5 TO)5J5O TJ)SJP1 TJ)]OJJ 1J)]J1T
2D)D1T1 2T)25]1 SP)DOO1 ]1)11J JS)TPO 51)TS55
1D)]JTP ]D)TOJT 2D)JDT 51)T]S S5)OPJS OJ)P52
SP)TSOJ ])DO2SJ T)]5S1P T)5TTT5 2)TPD2O J5)5DPJ
JD)T2J S])T2PT 1O)2STO J])OPOP S)TPO2S ST)5TO1
Elementos del -ector resultante4
S1)DPP] 151)]T 2S)55T2 1SP)OJP 12J)PPT PD)1]]S
O5)5D]2 1OD)1D1 1DO)]]J 1DJ)S] 1D])OD] 1O1)D11
1JT)JJ S2)PDT1 T])S5JJ J])O11S 5P)P21O 115)TP1
S5)S5T5 5O)P2S5 1ST)SS] ]T)TPOO T2)5JSO J])]P5O
1)OPD15 1DP)5TS SJ)22P2 11])O25 1OS)5D1 1D])PST
]1)J5T2 115)]]5 PJ)DP]T 11J)TO] SD)]P51 ]S)OTP2
1TJ)]DO 1OJ)JO5 S])SOSJ ST)S1]] 1DD)TS 1OS)]]5
1]D)TS2 15J)TT1 5S)T1PS OT)21P2 51)T]]1 PT)O5JP
]])JPSS 1D5)SST 1SO)J]T 1OO)D5J 1T1)POO 1P5)JSS
S2)S1T] 51)P]DS ]T)O12 ]1)OO2S 1D5)TT1 P)]S]J]
5O)OTPS T1)ST2T 1D1)P1] JT)5S22 JT)SJ5O 15T)]T]
1DT)P2P 1DT)]TP 111)OOO 1JD)22] 1SJ)5T] 1S2)TD]
S2)]TO] PJ)55JS 11O)S15 T2)215] 5])O5D1 1PD)OJ5
P1)DSD2 5J)SDPP 11T)2O SP)T521 12P)JDS PJ)O52]
PP)JT55 OT)1]S] ]5)]5]J J5)]P1J TD)]ODJ 15])D]]
MATRICES 2 - 1TJ -
1O1)2JO 1TT)]SJ 1O])5J5 ]S)DTPO 5J)D1DT 151)J]S
T2)DJP] ]2)T122 ]2)]1]T T5)OJ5T SP)]]D1 1]J)OO2
1])5JT] ]P)S5O1 121)T5T T2)]P5 52)122S J2)]1TJ
1P5)P15 ]1)5]52 2])]TPJ 1DD)2J5 1T5)JJ2 SS)21S
2J)POO1 2J)SS1 115)JS 1JP)]]T 55)O155 ]J)STD5
1ST)P1P 12O)2TT P1)JPDT 1O1)DPO 1JT)5TT 115)J5O
]P)1DT] OT)]S2] SO)PS1 1J2)2S1 12J)JJP 2T)S1]J
11D)25T ]1)P11] 111)D2J 1DO)]]S 1JP)OPO 1P1)1S1
55)ST1] 12P)S]T 1DT)J2T 11S)11O 1O2)JSS O5)]JDO
ST)PO2S S5)OP]T ]P)T2OJ T1)5T2 P2)1OJS 122)T21
1D5)1D] P2)S1ST 1S5)D5 1D5)]T2 11])2J] 1S])2PS
55)TSDO 1SP)D2S T1)5J5O TO)DD1J 125)]22 ]T)1PD1
PT)O111 1O])5OO 1JD)21J ]D)OO1S ]2)TS1 ST)5J1O
1D5)TPJ PD)1]DO 5P)]DJP 1DP)S25 12S)TPS ]5)S2]T
OJ)25DP 1S5)55T 12D)215 1OD)25O P1)PPTJ ]D)J1JO
O])J2T1 SS)5]1O ]D)JP]T 1S)TO25 1TD)PPP 12])OJ5
2])DSP] P])TTD2 T2)O]]P ]P)PSOT PP)]SO5 1J2)O]
]S)2P5] 11O)2TT 5O)T1]T P2)O51] 55)DTSP SD)SSOT
1DD)TJ5 12P)2]T OT)52S5 OP)O512 TS)T1OO TP)D2ST
TP)21P] TP)D511 1JP)]51 1]D)21J P])1O15 1TD)OOS
PJ)55D5 ]])2TDS 1DP)T5 1O5)DSO 1JT)PTJ 1SS)21]
2O)P2SP 12S)151 SS)J]J P5)]TST 1PT)O5O 5P)]DDT
1OT)J1] P2)SOT2 OP)25P] 11S)SD2 TS)D]T] 2J)P5]O
1O2)JJ2 PD)DS5J 52)1P]T P5)5TT 11P)P5T TD)5SO]
1D5)2OS ]P)OSP 12S)]11 11T)52O 11T)DD5 1DT)2OP
S2)55SP 1O2)2JP ]5)1S5] 1TO)DP1 PJ)5DTP JP)P5J1
155)O1] 15T)O51 ]T)SJ1P 1JJ)PTS ST)]TS] ]T)S1DO
1J1)52 1D5)O11 12O)TT2 1J])]SO P5)O152 OJ)OST5
PJ)S2JP 12T)5JT 1PD)SPP 1J2)O] 1O5)S1J ]J)]2SP
1DS)1JO 1JT)J]O 121)PPP PT)TPDO S])J]J TO)OO]]
OS)2111 1SD)2TO 15])S5P 1OP)DT P])OJ1O OS)S2J1
2T)]51] JO)]1]J 1J2)1O2 1TJ)11J ]1)2]J1 ]S)5]11
51)PJ5T 12D)S1P SS)PSJ 1D1)]1T PD)TOP] TS)155]
1O2)5SO OD)OJD] ]D)S2OT 1DJ)OP5 ]D)1151 1DP)D11
SD)T2PP 1SO)12] 2S)]]DS OS)D5P5 P5)2PD] 12D)DJ2
Elementos del primer -ector de nKmeros enteros4
T 2 T S S
Elementos del se$undo -ector de n_meros enteros4
5 1 5 1 ] 5 ]
Error: Vectores no compatibles.
Mue son los resultados esperados)
4. C%ee un! /i/li+$ec! c+n un! )unci5n 6ue %eci/! l+s ele"en$+s de un ,ec;
$+% de n7"e%+s en$e%+s + %e!les * de,uel,! l! des,i!ci5n es$Bnd!% de l+s
"is"+s. P%ue/e l! )unci5n c!lcul!nd+ l! des,i!ci5n es$Bnd!% de 1= n7"e;
%+s en$e%+s le9d+s #+% $ecl!d+ * l! des,i!ci5n es$Bnd!% de <== n7"e%+s
%e!les ene%!d+s !l !>!% * c+"#%endid+s en$%e 1 * 2==. L! des,i!ci5n es;
$Bnd!% es$B de)inid! #+% l! siuien$e ecu!ci5n.
dstd=

i=1
n
( x x
i
)
2
n1
- 1TO - Hernn 0e+aranda 9)
Este e,emplo se resol-er tambiFn en Eclipse) 0rimero se crea un nue-o
pro&ecto del tipo biblioteca esttica .Static 3ibrar&/ con el nombre
t1ORlibRe,emO & a la misma se le a+ade un arc%i-o de cabeceracon el nombre
'e,emO)%(4
En el cual se escriben los prototipos de la funci#n4
#i)nde) E`EMORHR
#de)ine E`EMORHR
::Calcula la des-iaci#n estndar de los BnB datos contenidos en el
::-ector 2
d+u/le des,s$d.in$ U2 unsined n/ $-%+..in$/@
d+u/le des,s$d.d+u/le U2 unsined n/ $-%+..in$/@
#endi)
Lbser-e *ue en este casos no se define un nue-o tipo de dato sino *ue se
$enera un error de tipo entero) Entonces se a+ade el arc%i-o fuente .'sour-
ce file(/ 'e,emO)cpp( & en el mismo se escribe el c#di$o de las funciones4
#include >cmat%?
#include Be,emO)%B
in$ cu!d.in$ 2/A
%e$u%n 2U2@
E
d+u/le cu!d.d+u/le 2/A
%e$u%n 2U2@
E
d+u/le des,s$d.in$ U2 unsined n/ $-%+..in$/
A
i) .n;;D/ $-%+. 1@::Error -ector -ac!o
d+u/le p;Ds;D@
)+% .unsined i;D@i>n@i11/
p1;2ViW@
p:;n@::0romedio de los elementos
)+% .unsined i;D@i>n@i11/
s1;cuad.p-2ViW/@
%e$u%n s6%$.s:.n-1//@
E
d+u/le des,s$d.d+u/le U2 unsined n/ $-%+..in$/
A
i) .n;;D/ $-%+. 1@::Error -ector -ac!o
d+u/le p;Ds;D@
)+% .unsined i;D@i>n@i11/
p1;2ViW@
p:;n@::0romedio de los elementos
)+% .unsined i;D@i>n@i11/
MATRICES 2 - 1T5 -
s1;cuad.p-2ViW/@
%e$u%n s6%$.s:.n-1//@
E
<ote *ue a ms del c#di$o de las dos funciones se %an creado otras dos
.*ue no son -isibles desde otros pro$ramas/ para calcular el cuadrado de un
nKmero real o entero)
Se crea la librer!a .constru&Fndola con Iuild/ lue$o se crea un nue-o
pro&ecto para el pro$rama de prueba con el nombre 'tORe,emO( & se a+ade al
mismo un arc%i-o fuente .'source file(/ con el nombre 'pro$prue)cpp() Se
modifican las propiedades del pro&ecto de manera *ue %a$a referencia a las
carpetas '=ebu$( tanto de 'include( como de 't1ORlibRe,emO( .para *ue el
pro$rama pueda emplear ambas librer!as/ & se escribe en el arc%i-o fuente
el si$uiente c#di$o4
#include >iostream?
usin n!"es#!ce std@
#include Be,emO)%B
#include Bmatrices)%B
usin n!"es#!ce matrices@
in$ "!in./A
in$ Ua@
d+u/le U2d1d2@
$%*A
cout>>endl>>B=atos del primer -ector4B>>endl@
leer9ector.a1D/@
d1;des-std.a1D/@
cout>>B=es-iaci#n estndar4 B>>d1>>endl@
cout>>endl>>B9ector de nKmeros reales4B>>endl@
2;$enerar9ector.5DD1)2DD)/@
mostrar9ector.25DDD12/@
d2;des-std.25DD/@
cout>>B=es-iaci#n estndar4 B>>d2>>endl@
d+u/le U&@
des-std.&D/@
E c!$c-.in$ er/A
cout>>endl>>BError4 Se %a mandado un -ector -ac!o)B>>endl@
E
dele$e.a/@
dele$e.2/@
%e$u%n D@
E
Hinalmente se crea el e,ecutable .con Iuild/ & %aciendo correr el pro$ra-
ma se obtiene4
=atos del primer -ector4
2VDWZ 1
2V1WZ 2
2V2WZ J
2VJWZ O
2VOWZ 5
2V5WZ S
2VSWZ T
2VTWZ P
2VPWZ ]
2V]WZ 1D
=es-iaci#n estndar4 J)D2TS5
- 1TS - Hernn 0e+aranda 9)
9ector de nKmeros reales4
1)2O] 11J)15J J])OST5 1S1)]J] 11T)O1T ]S)O]OT
TD)TDP 1T])2]T 1SO)TO5 1O])5TO J5)SOT5 1T1)]J
1O2)J] 1DJ)1]J S1)O]5 J)]P1]J 1])1P]2 TJ)52S
JD)J15J JO)D1JP 1]T)T1S P])S]2P 2O)S]TS 1)]2]2
2)TTJJT TS)1]P2 1DS)PD1 11O)SSS 12D)T51 121)P2S
JO)DPDS 1J2)]OS ]D)TDT T1)DT2O 12)J5DP 121)]2]
15S)PP 1SD)T1] 1DO)O5T S1)DPP1 1T5)J1] 1O5)SD]
1]1)22O 1P5)21P 1DP)JJ1 2])J25J ]2)]5O1 OT)PJDJ
1T2)5PS O2)T1DS 15S)152 1SP)PPT 1]])JS2 1]])]J]
122)SPP T])D]51 5J)]TSO SD)15P] 1SP)1P] 5)T2O]O
T5)T]TJ 1])OJ21 1J5)TSO 12)1PSP 2)TO]DP 1PJ)PJ]
55)]D1S 55)JDSO 11T)]]O 1JP)5O5 1ST)SP5 1O5)5T2
]T)5D2] O1)PSS5 1O])DDJ ]O)22JO ]2)1JO2 1P])PP2
1O])1OJ 22)5OTT 12D)211 TT)SS1P 1OT)2ST 122)1PO
11O)]D] T2)]DS5 J1)15]O O5)T]5P P5)SD55 1SD)TTJ
1DJ)]DO 1]P)DDP 15D)55P S])TSST JO)S2T2 1J1)PDO
]P)PPTS 1J)SOOO 1OD)252 1D1)O5T JD)J51T 1P])]ST
2])1TJ5 1P1)11P 1JP)PPS S1)JDST P5)PPO] 15)DDOP
1]J)J5S 1JS)]5O J1)O]J5 1T5)5TO 1SO)51O 11S)P2P
J])DTP] JS)ODDS 1SJ)S22 ]5)5TTT J1)]55 1D1)2P
1OS)ST1 P1)T12S 5S)SJSO 11O)1P 1JS)TSS 151)O15
1OO)SS1 ]5)5PJP 25)OP1 TO)1]O 1ST)1D2 T)]PO1S
1DJ)PPS 1J2)]JO P5)P1P1 21)PJ1 1P])]1] 1PO)J55
11D)JS S])P51T ]O)PTJ2 T5)S212 1S])5O] SO)D5T]
]1)TSJT 55)1DS 1]S)S11 SD)2S21 1OP)D]] 11J)PPP
OD)DD2 152)5D2 1SP)DO] PD)1JJS 1DD)ST] 1TP)1OJ
S)OS5PT 1]P)]J1 11O)]O5 11)D511 1DS)TJO J])S1]O
1SP)TSS 125)T25 1J1)PS5 OD)JT2O 1SP)5P] 25)5O1T
22)PT5S 1OP)PP2 SJ)O]]1 1PP)2TJ 5T)]J ST)]2S5
2P)]12O 1OS)PPO 1ST)DP] 1O1)P]2 12D)OOT 1O])S]S
51)2]2 2])T5D5 1)J21PP 1J)1ODJ 1S1)OO1 1TD)STJ
O2)]D5 2O)DD52 111)DP] J)PJS1P 2J)SODP ]1)OOT]
15D)S]2 1JT)5OJ 1D])1O5 15)TDJ2 PT)]DTJ O1)1PSJ
1J])5OP 5P)TPDJ PT)]D12 OT)25JO 115)]]S 1DS)]PJ
12S)1DP J2)PTP1 1D1)J2J 1]2)SO5 1J])O5S 1P5)DJS
JP)T]]5 ST)P5JS JS)O]1T 1]])DO ]2)DJD] 1]])SD5
2D)ODJP 125)OD] 1])TPOO PP)1DTT 1PS)JT2 1D)SJP1
1T])D2] 5P)T1J5 OS)2JJ1 15O)DOO P2)TJ2] O1)1]2J
125)]PS 121)225 ]D)PT1 ]J)PDOJ 11])]SP 12T)J1
1T1)1DO 1S5)]2] 125)JJ 1OO)OS1 11J)5P5 T5)S51S
JT)SS]] 1OT)POO 111)OT1 1P1)112 O])JJDO JP)5]]1
121)JO 1OD)DDJ 11T)JJP TD)]DPO ]])J]TT 1S)]]SP
1OP)ODP 122)T]P 12O)O5S 1JP)5JJ 1S1)1D1 JD)STJS
115)SJ1 1TJ)ST] 1P2)O 12J)J2S 1O5)PD] ])5]]SJ
1JJ)PPT 1]5)JJ SJ)SPTO 11O)2T1 S1)P5]O J5)S111
22)SD2J 1TJ)]O 1TD)J]J 1O])11] J1)P21O SS)D55]
1S)T]DJ 1S)2OJT 12P)555 1SO)1P 1D])OTJ ]D)2D2]
P2)JPST SD)O5DO ]J)SOSO 1DD)TO J1)JTP1 S5)2POS
1OT)PS2 SJ)OS2T 1S5)51 1]1)P5S 1TO)T]S 1O5)2P1
SD)T115 1PP)P5S 2S)J1]1 1O)DP1S 15T)2DP 1D5)J]2
122)J1P 1]1)2ST 15)JP1J 1T5)252 1J1)11P S5)1D25
21)P55J 1D1)5D5 OS)1]DS 5P)TSP1 1PO)DTS 11D)SP2
1J2)P]T 2J)T]2T ]])D151 TS)OOT2 ]])PS5O 15P)PTP
1D2)JOJ TT)D]D] 1JT)]OO 1DS)P]P 121)S5 T])SO1T
2)1T212 1O1)PST 21)D2JJ 12O)]] 1T2)TPS ]P)PDPS
1O])T2 ]])PPJS TS)SO15 15T)2PT 111)D1 T2)DS2J
MATRICES 2 - 1TT -
1]1)1PP 12S)5J] JS)1J]O T5)OT5O 2T)1]JS 1OP)]12
1]D)J]2 122)TPS S)5JPTO SS)SJ] 12)12S1 12P)2DJ
2T)1]JS 1S])5ST 1T2)]]] 11])TT] 1OO)SDS 1TD)]O
J)]212 2S)1STJ 1O1)PTO 12J)P12 OO)2]5T 1O)12O1
JO)S151 125)1]T SP)P55T SO)5S1] TO)1O5O 1J2)5J]
1SD)STS 1S1)5S] 1D5)TP1 122)SD] 15])PJP 1PD)22
2])P1TJ 12S)OD5 P1)DP1 51)OPSO 2P)1T1O 1T1)1PJ
1O)1SST PS)1JJ] 115)D]T S1)15O] 11D)DS2 O5)PPS]
S2)]5PS 2J)D15J 1S1)P 2T)PDT 5T)5S5S 15T)PJO
1T])151 15P)1JP 1O])D1S 12J)O2] T2)PSO 1T1)OTO
OS)OS]] 1T2)P5J OS)S5P2 5D)SSDO 1DP)]J] 1]S)]P2
11)TDT 1T)2DJJ 1D5)O1 P5)]JJ5 1])PJ] 52)5DDS
1TP)O1S OT)J2D2 JD)1SJO 25)P]O 1PS)J]S 1S)]O21
1D)JTD] 12)SPOP ST)]OOT 1PJ)D25 PD)J21P PT)12JP
1P])2PT 1ST)S 1DT)J11 1SP)5TT 1J])D1J PD)1J]T
52)5TJ5 1)PS2J] 1D5)5]2 1]1)DDS PD)JOD1 OP)]TP1
11T)52S 51)TT1P 1JT)11P 1P])111 PT)SSOJ 1TP)155
2)O2T2 1PP)25O 12D)TD] 15T)OO5 115)T5] 2])JOJ5
O5)2OJ1 TT)21P5 1)P5D25 PO)1SS2 1T)JST2 1J2)J2T
1T1)1S5 1J)]D55 1S2)OD1 1J2)T52 1JP)SDS 1SD)TJT
1DS)O]T 1JT)OO 2])O1DO 1JP)211 1O5)P51 155)TS]
T)1P25 1TJ)PST 12])2S 1O1)SDS 1P)DDO] 11D)POS
1P])SJJ 12)S]T 55)T1]O 2])P]D1 1]S)JTO 12O)JTT
5])15SP 1PO)5TO TO)1J]J 1J])21O OO)5DPJ J2)D2T]
OP)PSPP 1DO)TSS 1PD)55O 22)1TT2 1PD)S2T PP)]DJJ
1S)]O21 15S)SJT J5)1P5] 1]O)]D5 155)J]] 1TO)2DT
O2)]1T1 ]1)PST 1)TOT 15D)JTS 2J)S]55 P1)5JS5
S2)]1S1 1]P)5J
=es-iaci#n estndar4 5T)51J]
Error4 Se %a mandado un -ector -ac!o)
Mue son los resultados esperados)
14.4. 14.4. E1ERCICIOS E1ERCICIOS
3os si$uientes e,ercicios pueden ser resueltos se$Kn se prefiera en
Eclipse o con un editor de te2to & la l!nea de comando) En todo caso los
e,ercicios deben estar claramente identificados por su nombre & deben a$ru-
parse ba,o un mismo directorio)
1) A+ada a 'matrices( una funci#n *ue reciba un -ector de nKmeros enteros o
reales & de-uel-a el !ndice del menor -alor absoluto) 0ruebe la funci#n
encontrando el menor de 1D nKmeros enteros le!dos por teclado & el menor
de 5D nKmeros reales $enerados al a"ar & comprendidos entre -TD & SD)
2) A+ada a 'matrices( una funci#n *ue reciba un -ector de nKmeros enteros o
reales & de-uel-a el -alor absoluto del -ector es decir la ra!" cuadra-
da la sumatoria de los cuadrados de sus elementos) 0ruebe la funci#n
calculando el -alor absoluto de S nKmeros reales le!dos por teclado & el
-alor absoluto de 2DD nKmeros enteros $enerados al a"ar & comprendidos
entre -1DD & 1DD
J) A+ada a 'matrices( una funci#n *ue reciba dos -ectores de nKmeros ente-
ros o reales los multipli*ue elemento a elemento & de-uel-a el -ector
resultante de la multiplicaci#n) 3a funci#n debe $enerar un error si los
dos -ectores no tienen el mismo nKmero de elementos) 0ruebe la funci#n
- 1TP - Hernn 0e+aranda 9)
multiplicando dos -ectores de 5 nKmeros enteros le!dos por teclado dos
-ectores con 15D nKmeros reales $enerados al a"ar & comprendidos entre
-1DD & 1DD & con dos -ectores con S & 1D nKmeros enteros $enerados al
a"ar & comprendidos entre 1 & 2D)
O) A+ada a 'matrices( una plantilla *ue reciba un -ector e in-ierta el or-
den en *ue se encuentran sus elementos) 0ruebe la plantilla in-irtiendo
un -ector con 2D nKmeros enteros $enerados al a"ar & comprendidos entre
-1D & 1D e in-irtiendo un -ector con 5D nKmeros reales $enerados al a"ar
& comprendidos entre D & 2D)

You might also like