<div class="container">
<h1 >Media aritmética</h1>
<input type="number" id="numero">
<input type="button" id="botontirar" value="Añadir">
<input type="button" id="botondeshacer" value="Deshacer">
<input type="button" id="botonreset" value="Empezar de nuevo">
<div id="resultado"></div>
<script>
document.getElementById("botontirar").addEventListener("click", calcular);
document.getElementById("botondeshacer").addEventListener("click", deshacer);
document.getElementById("botonreset").addEventListener("click", reset);
var numeros = [];
function reset() {
numeros = [];
document.getElementById('resultado').innerHTML = "";
}
function deshacer() {
numeros.pop();
document.getElementById('resultado').innerHTML = "<p>" + numeros.toString() + "</p>";
document.getElementById('resultado').innerHTML += "<p>Media: " + mediaAritmetica(numeros) + "</p>";
}
function calcular() {
var numero = parseInt(document.getElementById('numero').value);
numeros.push(numero);
document.getElementById('resultado').innerHTML = "<p>" + numeros.toString() + "</p>";
document.getElementById('resultado').innerHTML += "<p>Media: " + mediaAritmetica(numeros) + "</p>";
document.getElementById('numero').value = "";
}
function mediaAritmetica(tabla) {
var suma = 0;
for (var i = 0; i < tabla.length; i++) {
suma += tabla[i];
}
return suma / tabla.length;
}
</script>
</div>
Etiqueta: array
Ejercicio palabras mal escritas
<style>
.celdako,.celdaok{
cursor: pointer;
width:100px;
height:50px;
text-align: center;
}
.celdaok:active {
background-color:lightgreen;
}
.celdako:active {
background-color: red;
}
</style>
<?php
function muestraTabla($tabla) {
echo "<pre>";
print_r($tabla);
echo "</pre>";
}
$palabras = array(
array('length', array('lenght', 'legnth', 'langth', 'lentgh', 'lenhgt')),
array('locomotion', array('lomocotion', 'lotocomion', 'molocotion', 'locamotion', 'locomocion')),
array('bedroom', array('vedroom', 'bedrum', 'berdoom', 'bedrun', 'bedroon', 'beddroom')),
array('coin', array('coyn', 'cony', 'cain', 'con')),
array('stable', array('estable', 'stoble', 'stabel', 'tsable')),
array('crush', array('cruhs', 'clush', 'cruss', 'crusah')),
array('fantasy', array('fantasi', 'fantascy', 'fatnasy', 'frantasy')),
array('pillow', array('pellow', 'pillou', 'pilluw', 'pilow', 'pilou')),
);
function array_to_table($tabla, $buena,$ancho=2) {
$res = "<table border=1>";
for ($i = 0; $i < count($tabla); $i++) {
if ($i % $ancho == 0) {
$res .= "<tr>";
}
$res .= '<td class="' . ($tabla[$i] == $buena ? 'celdaok' : 'celdako') . '">' . $tabla[$i] . "</td>";
if ($i % $ancho == $ancho-1) {
$res .= "</tr>";
}
}
$res .= "</table>";
return $res;
}
//Seleccionar una palabra al azar rand (0,count($palabras)-1)
$palabra = $palabras[rand(0, count($palabras) - 1)];
// muestraTabla($palabra);
//Coger la palabra buena y seleccionar tres palabras malas al azar
$tablero[] = $palabra[0];
// $malos = $palabra[1];
//shuffle($malos);
//$malos=array_slice($malos, 0, 8);
$tablero = array_merge($tablero, $palabra[1]);
while (count($tablero)<9){
$a=$palabras[array_rand($palabras)];
$palazar=$a[1][array_rand($a[1])];
if (!in_array($palazar, $tablero)){
$tablero[]=$palazar;
}
}
// muestraTabla($tablero);
//Mezclar
shuffle($tablero);
//Y mostrar
echo array_to_table($tablero, $palabra[0],3);
?>
Funciones esMagico y crearCuadrado
function cuadrado_magico($ancho) {
if ($ancho % 2 == 0)
$ancho--;
$posy = 0;
$posx = floor($ancho / 2);
$cont = 1;
while ($cont <= $ancho ** 2) {
if (empty($c[$posy][$posx])) {
$c[$posy][$posx] = $cont++;
$posx = ($posx + 1) % $ancho;
$posy = ($posy - 1 + $ancho) % $ancho;
} else {
$posx = ($posx - 1 + $ancho) % $ancho;
$posy = ($posy + 2) % $ancho;
}
}
return $c;
}
function esMagico($t) {
//Sumo la primera fila para tener un valor de referencia
$sum = array_sum($t[0]);
$sd1 = 0;
$sd2 = 0;
for ($i = 0; $i < count($t); $i++) {
$sf = 0;
$sc = 0;
$sd1 += $t[$i][$i];
$sd2 += $t[$i][count($t) - 1 - $i];
for ($j = 0; $j < count($t[$i]); $j++) {
$sf += $t[$i][$j]; //Sumo la fila
$sc += $t[$j][$i]; //Sumo la columna
}
//Si fila o columna son diferentes al valor de referencia no es mágico
if ($sf != $sum || $sc != $sum) {
return false;
}
}
return !($sd1 != $sum || $sd2 != $sum);
}
Funciones de arrays (VI)
Funciones para mezclar o comparar arrays:
Funciones de suma y producto:
Funciones de mezcla de variables y array:
Pasar una función a cada elemento del array:
Ejemplo de este último:
$frutas = array("d" => "limón", "a" => "naranja", "b" => "banana", "c" => "manzana");
function test_alter(&$elemento1, $clave, $prefijo)
{
$elemento1 = "$prefijo: $elemento1";
}
function test_print($elemento2, $clave)
{
echo "$clave. $elemento2
\n";
}
echo "Antes ...:\n";
array_walk($frutas, 'test_print');
array_walk($frutas, 'test_alter', 'fruta');
echo "... y después:\n";
array_walk($frutas, 'test_print');
Funciones para convertir un array bidimensional en html
function array_to_table($tabla) {
$res = "<table border=1>";
for ($i = 0; $i < count($tabla); $i++) {
$res .= "<tr>";
for ($j = 0; $j < count($tabla[$i]); $j++) {
$res .= "<td>" . $tabla[$i][$j] . "</td>";
}
$res .= "</tr>";
}
$res .= "</table>";
return $res;
}
function array_to_table2($tabla) {
$res = "<table border=1>";
foreach ($tabla as $n) {
$res .= "<tr>";
foreach ($n as $el) {
$res .= "<td>" . $el . "</td>";
}
$res .= "</tr>";
}
$res .= "</table>";
return $res;
}
Arrays multidimensionales
En PHP los arrays multidimensionales se crean con arrays dentro de arrays:
function muestraTabla($tabla) {
echo "<pre>";
print_r($tabla);
echo "</pre>";
}
$m=array(
array(1,2),
array(3,4),
);
muestraTabla($m);
for($i=0;$i<count($m);$i++){
for ($j=0;$j<count($m[$i]);$j++){
echo $m[$i][$j]."<br/>";
}
}
foreach ($m as $n){
foreach ($n as $el){
echo $el."<br/>";
}
}
Podemos tener las dimensiones que queramos:
$m = array(
array(
array(0, 1),
array(2, 3)
),
array(
array(4, 5),
array(6, 7)
),
array(
array(8, 9),
array(10, 11)
),
);
muestraTabla($m);
for ($i = 0; $i < count($m); $i++) {
for ($j = 0; $j < count($m[$i]); $j++) {
for ($k = 0; $k < count($m[$i][$j]); $k++) {
echo $m[$i][$j][$k] . "<br/>";
}
}
}
foreach ($m as $n) {
foreach ($n as $el) {
foreach ($el as $e) {
echo $e . "<br/>";
}
}
}
Lo mismo que usamos para recorrer lo podemos usar para generar:
for ($i = 0; $i < 10; $i++) {
for ($j = 0; $j < 10; $j++) {
$m[$i][$j]=$j+$i*10;
}
}
muestraTabla($m);
Un array puede ser cualquier combinación de valores, asociativos, arrays dentro de arrays dentro de arrays….
$tablaLoca = array(
"juan",
"pepe" => array(1, 2, 3),
array(
array("a","b"),
"w"
),
5,
"ppp"=>array(
"q"=>3,
"w"=>array(1,2,array(7,8))
)
);
muestraTabla($tablaLoca);
Si quisiéramos acceder a los valores de una tabla como la anterior necesitaríamos una función recursiva:
function valores($var){
$res="";
if (is_array($var)){
foreach($var as $v){
$res.=valores($v);
}
}
else{
$res=$var.",";
}
return $res;
}
echo valores($tablaLoca);
Ordenar por funciones propias
Con usort(), uasort() y uksort() podemos ordenar por funciones propias. Esto nos da mucha flexibilidad a la hora de ordenar. Ejemplos:
function muestraTabla($tabla) {
echo "<pre>";
print_r($tabla);
echo "</pre>";
}
function miOrden($a, $b) {
$la = strlen($a);
$lb = strlen($b);
return $la < $lb ? -1 : 1;
}
function acentos($name1, $name2) {
$patterns = array(
'a' => '(á|à|â|ä|Á|À|Â|Ä)',
'e' => '(é|è|ê|ë|É|È|Ê|Ë)',
'i' => '(í|ì|î|ï|Í|Ì|Î|Ï)',
'o' => '(ó|ò|ô|ö|Ó|Ò|Ô|Ö)',
'u' => '(ú|ù|û|ü|Ú|Ù|Û|Ü)',
'n '=>'(ñ)'
);
$name1 = preg_replace(array_values($patterns), array_keys($patterns), $name1);
$name2 = preg_replace(array_values($patterns), array_keys($patterns), $name2);
return strcasecmp($name1, $name2);
}
$array1 = array("no", "ño", "na", "ña","ánimo","oído","ópera","nzuelo");
usort($array1,'miOrden');
muestraTabla($array1);
usort($array1,'acentos');
muestraTabla($array1);
Arrays multidimensionales en PHP
$b=array(array('A','b'),array('c','d','e','f'),array('g','h','i'));
echo "<pre>";
print_r($b);
echo "</pre>";
echo $b[1][2];
echo "<br/>";
for ($i=0;$i<count($b);$i++){
for($j=0;$j<count($b[$i]);$j++){
echo "($i,$j) ".$b[$i][$j]." | ";
}
echo "<br/>";
}
foreach($b as $valor){
foreach($valor as $letra){
echo $letra."|";
}
echo "<br/>";
}
for ($i = 0; $i < 5; $i++)
for ($j = 0; $j < 5; $j++)
$c[$i][$j] = $j + $i * 5;
echo array_to_table($c);
function array_to_table($tabla) {
$res="<table border=1>";
for ($i = 0; $i < count($tabla); $i++) {
$res.="<tr>";
for ($j = 0; $j < count($tabla[$i]); $j++) {
$res.="<td>" . $tabla[$i][$j] . "</td>";
}
$res.="</tr>";
}
$res.="</table>";
return $res;
}
//Mezcla sin sentido, a lo loco:
$tutifruti=array('juan'=>array('a','b','c'),'ana'=>array('c'=>3,'d'=>6,'e'=>8),'rosa'=>array('j','k',array(1,2,3,4)));
var_dump($tutifruti);
Arrays asociativos en PHP
$a=array('Juan'=>'Técnico','Ana'=>'Marketing','Rosa'=>'Administración');
$a['Jose']='Ventas';
echo $a['Juan']."<br/>";
foreach($a as $clave=>$valor){
echo $clave." - ".$valor."<br/>";
}
echo "<pre>";
print_r($a);
var_dump($a);
echo "</pre>";