Foros del Web » Programando para Internet » PHP »

PHP OO Script complicado en PHP

Estas en el tema de Script complicado en PHP en el foro de PHP en Foros del Web. Tengo que definir una función “cuenta” que recibe dos parámetros. El primero de ellos tiene que ser un array de números enteros y el segundo ...
  #1 (permalink)  
Antiguo 15/11/2015, 10:21
 
Fecha de Ingreso: octubre-2015
Mensajes: 9
Antigüedad: 8 años, 5 meses
Puntos: 0
Pregunta Script complicado en PHP

Tengo que definir una función “cuenta” que recibe dos parámetros. El primero de ellos tiene que ser un array de números enteros y el segundo parámetro una variable numérica. La función se tiene que encargar de contar el número de veces que se repite el número que recibe (segundo parámetro) dentro del array. Por ultimo, en el cuerpo de la página, tengo que crear un array y rellenarlo con números aleatorios entre 1 y 10 y llamar a la función para
comprobar el resultado.


function cuenta($MiArray, $var) {

}
$MiArray = array(1,2,3,4);
$var = 1,2,3,4;
  #2 (permalink)  
Antiguo 15/11/2015, 10:49
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Script complicado en PHP

Esto es lo que debes hacer:

1. Para la función cuenta debes recorrer el array elemento por elemento e ir comparanado cada elemento del array con el segundo parámetro de la función por medio de un if. Para recorrer el array puedes usar for each o un for (en el manual de php hay varios ejemplos).
2. Dentro de la función cuenta al comienzo debes definir una variable cuenta a 0 la cual cada vez que encuentre una coincidencia al recorrer cada elemento del array irá sumando uno.
3. Al final de la función cuenta colocas el mensaje de salida p ej : echo "Se encontraron {$total} coincidencias";
Debes tener en cuenta el nombre de la variable donde acumulaste las coincidencias en el ejemplo le puse total pero puede llamarse como tu quieras.
4. Para generar los números aleatorios puedes usar la función rand de php, lee el manual para que entiendas como usarla.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #3 (permalink)  
Antiguo 15/11/2015, 13:02
 
Fecha de Ingreso: octubre-2015
Mensajes: 9
Antigüedad: 8 años, 5 meses
Puntos: 0
Pregunta Respuesta: Script complicado en PHP

Ok, llevo esto, me falta el for que no se como hacerlo y creo que algo mas no hago bien... gracias ;)

<?php

function cuenta($MiArray,$Mivar) {
$num=0;
$total = count($MiArray);

for() {
if ($num==$MiArray) {
echo $num++;
}
echo "Se encontraron $total coincidencias";
}
$MiArray = array_rand(1,10);
$Mivar = 4;

}

?>
  #4 (permalink)  
Antiguo 15/11/2015, 13:19
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Script complicado en PHP

$MiArray = array_rand(1,10);
$Mivar = 4;

Estas dos líneas deben ir por fuera de la función. El for está mal mira el manual. Dentro del for tienes que cargar en la variable $num el valor de cada item del array que vas recorriendo con el for (mira este ejemplo) y en la variable $total no debe ir el total de ítems del array sino el total de coincidencias entonces debes poner algo como esto:

Código PHP:
Ver original
  1. if ($num==$MiVar) {
  2. $total++;
  3. }
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #5 (permalink)  
Antiguo 16/11/2015, 10:46
 
Fecha de Ingreso: octubre-2015
Mensajes: 9
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Script complicado en PHP

Tengo esto pero no doy con la tecla.
<?php

function cuenta($MiArray,$MiVar) {
$num=0;
if ($num==$MiVar) {
echo $total++;
}

for($num=0;$num<$total;$num++)
{
echo $MiArray[]."<br>";

if ($num==$MiArray) {
echo $num++;
}
echo "Se encontraron $total coincidencias";
}

}
$MiArray = array_rand(1,10)
$MiVar = 4;

?>
  #6 (permalink)  
Antiguo 16/11/2015, 11:36
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Script complicado en PHP

Así era como te decía que hicieras:

Código PHP:
Ver original
  1. <?php
  2. //Primero definir las variable
  3. $MiArray = array();
  4. $MiVar = 8; //Numero a buscar
  5. //Luego cargar los valores en el array (10 valores)
  6. for ($i=1;$i<=10;$i++)
  7. {
  8.     //Generar un num aleat del 1 al 10
  9.     $aleat = rand(1,10);
  10.     //Agregar el nuevo numero al array
  11.     $MiArray[] = $aleat;
  12. }
  13. echo "<b>Numero a buscar:</b> {$MiVar}<br><br>";
  14. echo "<b>Array usado:</b>";
  15. var_dump($MiArray);
  16. echo "<br><b>Coincidencias:</b><br>";
  17. //Llamado a la funcion
  18. cuenta ($MiArray,$MiVar);
  19. //Funcion que cuenta las coincidencias
  20. function cuenta($MiArray,$MiVar)
  21. {
  22.     //Cargar el total de items del array
  23.     $num = count($MiArray);
  24.     //Inicializar variable total
  25.     $total = 0;
  26.     //Recorrer el array en busca de coincidencias
  27.     for($i=0;$i<$num;$i++)
  28.     {
  29.         //Compara el valor a buscar con el elemento actual del array
  30.         if ($MiArray[$i]==$MiVar)
  31.         {
  32.             //Si coinciden aumentar en 1 el total
  33.             $total++;
  34.         }
  35.     }
  36.     //Mostrar en pantalla el numero total de coincidencias
  37.     echo "Se encontraron $total coincidencias";
  38. }
  39. ?>

Debías dejar por fuera las dos líneas que te indiqué pero llamando a la función. La función array_rand no sirve para lo que quieres hacer mira el manual.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #7 (permalink)  
Antiguo 16/11/2015, 12:27
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Script complicado en PHP

Para crear un array con 10 valores aleatorios comprendidos en el rango del 1 al 10, puedes utilizar la función mt_rand() con la cual puedes generar un valor comprendido en el rango que especifiques como argumentos para dicha función. Tan solo bastaría utilizar un bucle que compruebe que la cantidad de elementos del array (valor que puedes obtener mediante la función count()) es menor que 10, con lo cual procedes a insertar un nuevo elemento en el array hasta que se complete. Te sugiero utilizar una función para que puedas reutilizar el script.

Código PHP:
Ver original
  1. function rango($inicio, $fin, $total){
  2.     $arr = [];
  3.     while (count($arr) < $total){
  4.         $arr[] = mt_rand($inicio, $fin);
  5.     }
  6.     return $arr;
  7. }
  8.  
  9. //Llamada a la función
  10. rango(1, 10, 10);

Con respecto a la cuenta de repeticiones de un valor dado en el array generado, puedes utilizar una estructura repetitiva para recorrer el array y comparar cada valor contenido con el valor a encontrar. También puedes utilizar la función array_intersect() con la cual obtendrás un array que contiene los valores que se repiten en todos los arrays que se le pasen como argumentos. Para esto, el valor a buscar tendrá que ser colocado dentro de un array. El total de elementos del array resultante será igual a la cantidad de repeticiones que hay del valor a buscar en el array generado al inicio.

Código PHP:
Ver original
  1. function contar($array, $valor){
  2.     return count(array_intersect($array, [$valor]));
  3. }
  4.  
  5. //Llamada a la función (con valores de ejemplo)
  6. contar(rango(1, 10, 10), 2);

Todo junto:
Código PHP:
Ver original
  1. function contar($array, $valor){
  2.     return count(array_intersect($array, [$valor]));
  3. }
  4.  
  5. function rango($inicio, $fin, $total){
  6.     $arr = [];
  7.     while (count($arr) < $total){
  8.         $arr[] = mt_rand($inicio, $fin);
  9.     }
  10.     return $arr;
  11. }
  12.  
  13. echo contar(rango(1, 10, 10), 2);

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 16/11/2015, 12:51
 
Fecha de Ingreso: octubre-2015
Mensajes: 9
Antigüedad: 8 años, 5 meses
Puntos: 0
Pregunta Respuesta: Script complicado en PHP

Ok Chronos lo he entendido y una última pregunta, cómo sería si quisiera modificar el script anterior de forma que, tras la llamada a la función "cuenta", llame a una función que elimina los valores repetidos., y luego vuelva a llamar a la función “cuenta”, para ver el resultado.

Etiquetas: variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:21.