Ejercicio 1 Dado un array array de 20 elementos elementos que consiste consiste en números números reales reales (con coma coma decimal) y que cada elemento representa la venta del día de un comercio. Calcular el promedio de venta por día utilizando alguna estructura iterativa. Mostrar el resultado resultado por pantalla.
ri-er" deini-"s &n array $ventasdia y #e %ara-"s #"s va#"res &e s"n n-er"s rea#es, es de%ir, n-er"s de %"-a #"tante. &e", se ini%ia#ia en %er" #a varia#e &e s&-ar: t"d"s #"s va#"res $total . # &%#e &e &ti#i" es e# for. ;"r & e#e !or ? "r&e e# array tiene >&st" 20 e#e-ent"s y este tip" de &%#e per-ite iterar &n número fijo de veces. e %"-iena e# en 0 p"r&e e# pri-er e#e-ent" de# arre#" es $ventasdia"0# . a %"ndi%i@n para !or en se&ir ade#ante #as itera%i"nes ser: sie-pre &e #a varia#e $i &e rea#ia e# %"nte" sea -en"r " i&a# &e #a %antidad de e#e-ent"s de# array. a &n%i@n count %&enta %&enta #a %antidad de e#e-ent"s de# array. ense-"s esta parte. $i dee %"ntar de &n" en &n" desde 0 hasta %. A" hasta 20. i $i ##ea a va#er 20 tendre-"s &n error de offset. "r #" tant", t"-a-"s e# t"ta# de e#e-ent"s de# array %"n #a &n%i@n count , es" n"s dar: 20 y #&e" #e resta-"s . Bdentr" de# &%#e #" &e hare-"s es a%&-ar #"s va#"res de %ada e#e-ent" de# array en &na s&-a. Csa-"s e# "perad"r &' en ve de &sar $total $total =$total +$ventas_dia[$i] +$ventas_dia[$i];;
1
$t"t $t"ta# a# = $t" $t"ta ta## $ven $venta tas_ s_di dia* a*$i $i+! +!
er" es eDa%ta-ente #" -is-". &e", hay &e %a#%ar e# pr"-edi" &e es #a s&-a de t"d"s #"s e#e-ent"s dividid" #a %antidad de e#e-ent"s. A&eva-ente &ti#ia-"s count para %"ntar #"s e#e-ent"s de# array. Eina#-ente &ti#ia-"s eco para -"strar e# restad" p"r panta##a. a#ida El promedio de ventas es: .!"
1
# pr"-edi" de ventas es 99.646
Ejercicio 2 Dado el siguiente array $nom*res ' array (+ro*erto,-,uan,-,marta,-,moria,-,martin,-,orge,-,miriam,-,nauel,-,mirta,). /ealizar un programa en 1 que lo recorra y genere un nuevo array con aquellos nom*res que comiencen con la letra m. De!inir qu *ucle conviene usar y luego mostrar el array por pantalla sin usar vardump ni printr. 3os nom*res de*en aparecer separados por coma. Existen muchas maneras de resolver este y todos los ejercicios, pero en este caso voy a mostrarles dos variantes.
&an/,/-arta/,/-"ria/,/-artin/, />"re/,/-iria-/,/nah&e#/,/-irta/! $n"-res_%"n_- = array(! $r = 0! "rea%h ($n"-res as $n"-re ) i ($n"-re*0+ == /-/ ) $n"-res_%"n_-*$r+ = $n"-re! $r! "rea%h ($n"-res_%"n_- as $%#ave=$va#"r ) e%h" $va#"r! i (%"&nt($n"-res_%"n_-'1 F= $%#ave e%h" /, /! e#se e%h" /./! ?
Geini-"s e# array de# en&n%iad" y #&e" "tr" &e #" de>a-"s va%". ara de>ar va%" &n array si-p#e-ente ari-"s y %erra-"s #"s parntesis desp&s de #a pa#ara %#ave array. Ha-"s a %"ntar &ti#iand" &n foreach. ri-er" ini%ia#ia-"s $r , n&estr" %"ntad"r en 0. Ire-"s pasand" de e#e-ent" en e#e-ent" %"n $nom*res as $nom*re . Je%&erden $nom*res es e# n"-re de# array y $nom*re #a varia#e &e t"-ar: e# va#"r de# e#e-ent" en %ada itera%i@n. ara saer si #a pri-era #etra de &na varia#e &e tiene %adena de %ara%teres es &na m, hay &e &sar #a instr&%%i@n &e se ve en e# %@di". Jesta &e #"s strins s"n ta-in arrays y &e p&ede indi%arse %ada %ara%ter " #etra p"niend" &n n-er" entre %"r%hetes e indi%and" #a p"si%i@n de# %ara%ter &e se desea. K"-" en este %as" se ne%esita %"-parar #a pri-era #etra, se p"ne &n 0. # i! %he&ear: &e #a pri-era #etra de# e#e-ent" $nom*re sea i&a# a m. i #" es, $nom*re pasar: a &i%arse en e# array $nom*resconm en #a p"si%i@n &e $r #" indi&e. &e", se in%re-entar: $r . i se i>an, $r se &ti#ia para ir &i%and" en e# array n&ev" #"s e#e-ent"s &e se tenan &e pasar. s i-p"rtante a%#arar &e a# rea#iar #a "pera%i@n, #"s e#e-ent"s n" de>an de estar en e# array "riina#, sin" &e es -:s ien &na espe%ie de %"pia. n rea#idad, s"n reeren%ias &e se arean a ese e#e-ent", %"-" si #as p"si%i"nes de #"s arrays ap&ntaran a# -is-" e#e-ent". L"da esa estr&%t&ra sirve para se#e%%i"nar a&e##"s n"-res &e %"-ienan %"n #a #etra m. # se&nd" !oreac sirve para -"strar p"r panta##a #"s restad"s. B& apr"ve%h" para -"strar a#" adi%i"na# &e n" eDp#i& en #a %#ase te@ri%a. e trata de #a clave y e# valor &sad"s dentr" de# !oreac. Je%&erden de #a %#ase de arrays, &e est"s estaan "r-ad"s p"r &na %#ave as"%iada a &n va#"r. Mien, e# !oreac per-ite -ane>ar dentr" de# &%#e a a-"s e#e-ent"s. Je%&erden ta-in &e en #"s arrays enumerativos, #as %#aves s"n n-er"s. ste !oreac #" &e har: es -"strar #"s n"-res %"n m. # i! &e apare%e desp&s %he&ea si n" se ##e@ a# #ti-" e#e-ent". i est" es as, ent"n%es -&estra p"r panta##a &na %"-a para separar #"s n"-res. i se ##e@ a# #ti-" e#e-ent", en ve de &na %"-a, -&estra &n p&nt". ste i! &n%i"na ni%a-ente %"n arrays en&-erativ"s d"nde #as %#aves s"n n-er"s "rdenad"s. a#ida marta, moria, martin, miriam, mirta
1
-arta, -"ria, -artin, -iria-, -irta. Hea-"s "tra "r-a de res"#ver#" &e tiene a#&nas si-i#it&des
&an/,/-arta/,/-"ria/,/-artin/, />"re/,/-iria-/,/nah&e#/,/-irta/! $n"-res_%"n_- = array(! "rea%h ($n"-res as $n"-re ) i ($n"-re*0+ == /-/ $n"-res_%"n_-*+ = $n"-re! "r ($i=0! $i<=%"&nt($n"-res_%"n_-'1! $i ) e%h" $n"-res_%"n_-*$i+! si es e# ti-" pas" i ($i == %"&nt($n"-res_%"n_- e%h" /./! e#se e%h" /, /! ?
# pri-er !oreac tiene &na dieren%ia. n ve de &ti#iar &na varia#e para %"ntar y a%"-"dar #"s n"-res &e e-piean %"n m, se arean #"s e#e-ent"s de "r-a dire%ta a# ina# de# array en #a #nea $nomres_con_m[] =$nomre;
1
$n"-res_%"n_-*+ = $n"-re! N&%h" -:s sen%i##". ;A" %reen? &e", en ve de &n !oreac, &sa-"s &n !or para re%"rrer e# array $nom*resconm . B# -"strar#" p"r panta##a, nat&ra#-ente hay &e &sar e# ndi%e $i y ta-in en e# %he&e" de si se est: en e# #ti-" e#e-ent". a sa#ida de este %@di" es eDa%ta-ente #a -is-a &e %"n #a "tra variante.
Ejercicio # /ealizar un programa que arme la estructura 14M3 de una ta*la con 20 !ilas y 0 columnas utilizando dos *ucles !or. Dentro de las celdas de*e ponerse una letra 5.
as. Cn for externo se en%arar: de repetir las filas y &n" interno se en%arar: de repetir las columnas. # de a&era se e>e%&tar: 20 ve%es y e# de adentr" 20 ve%es 10, es de%ir 20 D 10 &e es i&a# a 200. e &sa &na varia#e %"ntad"r $i para e# eDtern" y "tra varia#e $s para e# intern". Je%&erden &e 6tr768tr7 se &sa para deinir #as i#as y &e 6td768td7 s"n #as %e#das pr"pia-ente. K"-" ven, %&and" se traa>a %"n HTML es -:s :%i# &ti#iar #a sintaxis alternativa de #as senten%ias tant" iterativas %"-" se#e%tivas.
Ejercicio " Dado un array enumerativo de 0 elementos de números enteros (sin coma decimal)encontrar el m9:imo de todos esos números usando una estructura iterativa y mostrarlo por pantalla.
ste es e# tpi%" e>er%i%i" d"nde hay &e &sar &n algoritmo para otener el m!ximo elemento de un arreglo.
%&php
$n&-er"s = array (10, 2, 3, 14, 15, 1, 7, 9, 8, 11! $pas" = 0! Phi#e ($pas" <= %"&nt($n&-er"s'1 ) i ($pas" == 0 $-aDi-" = $n&-er"s*0+! e#se ) i ($n&-er"s*$pas"+ $-aDi-" $-aDi-" = $n&-er"s*$pas"+! $pas"!
e%h" /# -aDi-" es / . $-aDi-"! ?
Geini-"s e# array %"n #"s n-er"s e ini%ia#ia-"s &na varia#e %"ntad"ra ##a-ada $paso ya &e "pt p"r &n "hile para p"der -"strar s& &s". Mien se p"dra haer p#antead" %"n &n for. # ;ile se e>e%&tar: sie-pre &e #a varia#e %"ntad"ra $paso tena &n va#"r -en"r " i&a# a# ndi%e &e %"rresp"nde a# #ti-" e#e-ent" de# array, a# i&a# &e e# &%#e !or . "r es" apare%e e# < restand" #&e" de# count($numeros) . # a#"rit-" es astante si-p#e per" va-"s a eDp#i%ar#" en deta##e. n #a pri-era itera%i@n, %&and" $paso va#e 0, an n" hay &n -:Di-" deinid" as &e p"r dee%t" e# pri-er e#e-ent" pasar: a ser e# -:Di-". &e", en e# rest" de #"s %as"s, har: &e %"-parar e# e#e-ent" a%t&a# de #a itera%i@n %"n e# -:Di-", si este #" s&pera, ent"n%es ser: e# n&ev" -:Di-". i est" n" "%&rre, n" pasar: nada. n %ada itera%i@n, %"-" esta-"s en &n ;ile har: &e a#terar e# va#"r de #a varia#e &e apare%e en #a %"ndi%i@n. n este %as", se in%re-entar: $paso. B# ina# de# ;ile, e# va#"r -as rande de# array &edar: a#">ad" en #a varia#e $ma:imo. r&een %a-iar #"s va#"res de# array y ver:n &e de t"das "r-as e# a#"rti-" se&ir: &n%i"nand". a#ida El maximo es: ('
# -aDi-" es 15 Ejercicio ' =dem anterior pero encontrar el mínimo.
# a#"rit-" es e# -is-", per" hay a#&na variante. He:-"s#". %&php
$n&-er"s = array (10, 2, 3, 14, 15, 1, 7, 9, 8, 11! $pas" = 0! Phi#e ($pas" <= %"&nt($n&-er"s'1 ) i ($pas" == 0 $-ini-" = $n&-er"s*0+!
e#se ) i ($n&-er"s*$pas"+ < $-ini-" $-ini-" = $n&-er"s*$pas"+! $pas"! e%h" /# -ini-" es /.$-ini-"! ? e dee %a-iar e# signo en la comparaci#n. La-in %a-ia-"s e# n"-re de #a varia#e $ma:imo p"r $minimo para &e tena re#a%i@n %"n #" &e va a a#-a%enar. ;speraan a#" -:s %"-p#i%ad"? a %#ave de este e>er%i%i" es ded&%ir#" ana#iand" e# %@di" de# e>er%i%i" anteri"r. a#ida Q El minimo es: (
# -ini-" es 1 Ejercicio ! 1acer un programa que calcule todos los números primos entre y >0 y los muestre por pantalla. ?n número primo es un número entero que s@lo es divisi*le por y por sí mismo.
ste e>er%i%i" sirve para eDp#i%ar %"-" &n%i"na #a senten%ia rea$ y ta-in per-ite -"strar de & "r-a evitar#a. Lendre-"s &e re%"rrer t"d"s #"s n-er"s de# 1 a# 50 y a %ada &n" de e##"s dividir#"s p"r 1, #&e" p"r 2, #&e" p"r 3 y as s&%esiva-ente. n %ada divisi@n hay &e verii%ar & "%&rre %"n e# rest". i e# rest" da %er" ent"n%es e# n-er" es divisi#e. i da distint" de %er", ent"n%es n" es divisi#e. s ne%esari" &ti#iar e# operador resto de la divisi#n entera R. ri-er" vea-"s &na s"#&%i@n &ti#iand" *reaA
i ($i R $div == 0 ) $pri-" = a#se! reaT! $div! Phi#e($i = $divU2! i ($pri-" == LJC e%h" $i./ /! ? # "r re%"rrer: desde e# hasta e# >0. s de%ir &e $i ser: n&estr" n-er" a ana#iar si es pri-" " n" en %ada itera%i@n. $div ser: #a varia#e &e &ardar: e# divis"r y &e se ir: in%re-entand". Csare-"s &n do% "hile a -"d" de &%#e intern". n esta estr&%t&ra, se ir: dividiend" a $i p"r $div t"das #as ve%es &e sea ne%esari" para pr"ar si es pri-" " n". Je%"rde-"s #a deini%i@n un número es primo si es divisile por 1 y por s& mismo . L"d"s #"s n-er"s s"n divisi#es p"r , p"r #" tant" n" tiene sentid" pr"ar #a divisi@n p"r , este es e# -"tiv" p"r e# %&a# $div se ini%ia#ia en 2. B s& ve, t"d"s #"s n-er"s s"n divisi#es p"r s -is-"s. s de%ir &e #"s pri-"s n" s"n divisi#es p"r #"s &e est:n entre e# 2 y e# in-ediat" n-er" ineri"r a s -is-"s. $div se ir: in%re-entand" en &n" y en %ada pas" se har: e# rest" de #a divisi@n entera $i B $div. i da 0, sinii%a &e ese n-er" es divisi#e p"r "tr", ent"n%es n" es pri-". "r es", &sa-"s &na varia#e ""#eana (%"n va#"res LJC " EB para indi%ar e# restad".
# *reaA r"-pe e# &%#e do;ile %&and" en%&entra &n n-er" &e divide a n&estr" $i. ;"r & #" r"-pe? &p"na-"s &e $i va#e 2, $div e-piea va#iend" 2, a# rea#iar #a divisi@n entera, e# restad" es 0. "r #" tant", 2 n" es pri-". ;Liene sentid" se&ir in%re-entand" $div y se&ir dividiend" si ya sae-"s &e e# n-er" n" es pri-"? A". "r #" tant", es t"da &na tenta%i@n &ti#iar *reaA para interr&-pir e# %i%#". se sera e# %as" en e# &e e# n-er" a ana#iar n" es pri-". er" vea-"s & "%&rre %&and" s #" es. a varia#e $primo arran%a en 4/?E en %ada itera%i@n de# !or . Gentr" de# do ;ile ser: dividida p"r $div. &p"na-"s &e $i va#e . ae-"s &e n" es divisi#e p"r 2, ni p"r F, ni p"r G ni p"r >. # va#"r de $primo n" se a#terar: en ninn -"-ent" y a# ina#iar e# ;ile se&ir: siend" 4/?E . "r #" tant", %"-" ven, #&e" de# ;ile apare%e &n i! d"nde se verii%a e# va#"r de $primo y en %as" de ser verdader", se -&estra e# n-er" $i p"r panta##a. Bh"ra ana#i%e-"s #a %"ndi%i@n de %"rte de# ;ile, &e es #" -:s di%i# de t"d". # ;ile dee repetirse sie-pre &e e# va#"r de n&estr" n-er" $i sea i&a# " -:s rande &e e# de $div p"r d"s. st" se entender: -e>"r %"n &n e>e-p#". &p"na-"s &e n&estr" $i va#e G. Gee-"s dividir#" p"r , 2, F, G, et%. er" %&and" ##e&e-"s a #a -itad apr"Di-ada-ente, es de%ir, 20 estare-"s en e# #ti-" p"si#e divis"r. ;"r &? "r&e
si se&i-"s dividiend" &sand" %"-" divis"res #"s n-er"s &e vienen desp&s de #a -itad e# restad" n&n%a p"dr: ser enter". Bh"ra vea-"s %"-" evitar ese *reaA . res"#&%i"n sin &ti#iar reaT "r ($i=1! $i<=50! $i ) $div = 2! $pri-" = tr&e! d" ) i ($i R $div == 0 $pri-" = a#se! $div! Phi#e(($i = $divU2 VV ($pri-" == LJC! i ($pri-" == LJC e%h" $i./ /!
e in%#&ye #a varia#e $primo dentr" de #a %"ndi%i@n de# ;ile. Ge esta "r-a, %&and" ya sepa-"s &e e# n-er" n" es e# &e &s%a-"s, #a varia#e $primo se p"ndr: en HI3JE y para &e e# ;ile se v&e#va a repetir es %"ndi%i@n ne%esaria #" &e eDp#i& re%in de# va#"r de $i y de s& divis"r $div per" ta-in &e e# va#"r de $primo sea 4/?E . # IKD (LL eDie &e a-as %"ndi%i"nes se %&-p#an a# -is-" tie-p" para %"ntin&ar repitiend" e# ;ile. a sa#ida de a-"s %@di"s es ( # ' ) (( (# () ( *# * #( #)
1
1 3 5 7 11 13 17 19 23 29 31 37 41 43 47