Foros del Web » Programando para Internet » PHP »

Problema con ejercicio en PHP POO

Estas en el tema de Problema con ejercicio en PHP POO en el foro de PHP en Foros del Web. Les hago la siguiente consulta, estoy haciendo un ejercicio en PHP orientado a objetos y me esta volando la cabeza, necesitaría de sus ayuda. Tenemos ...
  #1 (permalink)  
Antiguo 07/07/2014, 07:55
 
Fecha de Ingreso: enero-2010
Mensajes: 50
Antigüedad: 14 años, 2 meses
Puntos: 0
Información Problema con ejercicio en PHP POO

Les hago la siguiente consulta, estoy haciendo un ejercicio en PHP orientado a objetos y me esta volando la cabeza, necesitaría de sus ayuda.


Tenemos un matriz vacía para la cual creamos un bucle que se ejecute 100 veces y que en cada ejecución agregue a la matriz un número aleatorio del 1 al 100. Los números agregados, por ser aleatorios, pueden ser repetidos. Y cada vez que se agregue un valor a la matriz se imprima el mensaje: "La matriz contiene _____ elementos."

Se deben agregar los valores haciendo uso del array_push.

Luego creamos otro bucle que elimine los valores de la matriz, empezando por el primer índice.

Se debe eliminar los valores haciendo uso del array_shift.

NO USAR LOS CORCHETES PARA AGREGAR Y/O QUITAR VALORES A LA MATRIZ.

Aquí se nos pide crear una matriz vacía y un bucle que rellene los valores de esta matriz. Los números agregados a esta matriz van a ser números aleatorios, que pueden repetirse. Cada vez que se agregue un valor a la matriz, se debe imprimir un mensaje que diga La matriz contiene _____ elementos. Por ejemplo al inicio la matriz contendrá 1 elemento, cuando se agregue el segundo valor, dirá La matriz contiene 2 elementor. Y así sucesivamente. Esto será así hasta que la matriz contenga 100 elementos. El agregado de los elementos deberá hacerse con la función array_push.

Una vez hecho esto, se creará otro bucle que elimine los valores de la matriz. Podríamos agregar que vaya imprimiendo el mismo mensaje para que vaya viendo como desciende este mensaje desde La matriz contiene 100 elementos hasta el final que no contendrá ninguno. Todos esos elementos se irán extrayendo de la matriz con la función array_unshift.

Tenga en cuenta el mensaje final donde dice que no se usen corchetes para agregar y quitar valores.

Espero que me puedan ayudar ya que me trabe en el primer ejercicio, si bien lo voy pudiendo hacer y puede resultar un ejercicio simple, se me esta quemando la cabeza. Desde ya agradezco su ayuda. Saludos.
  #2 (permalink)  
Antiguo 07/07/2014, 07:59
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Problema con ejercicio en PHP POO

listo entiendo perfectamente lo que dice el problema ... pero entonces que tienes hecho?? que codigo te da algun error y que te muestra en pantalla??
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #3 (permalink)  
Antiguo 07/07/2014, 08:20
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Problema con ejercicio en PHP POO

Te podemos ayudar y orientar, pero no te vamos ha hacer el ejercicio.
Muestranos que has hecho y que es lo que no entiendes o te falla.
  #4 (permalink)  
Antiguo 07/07/2014, 09:59
 
Fecha de Ingreso: enero-2010
Mensajes: 50
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema con ejercicio en PHP POO

Buenas, tengo hecho lo siguiente:

<?php
$valor0="La matriz contiene ";
$valor1="elementos.";
$valor_array0=array();

$rand0=range(1, 100);
shuffle($rand0);

for ($i = 1; $i <= 100; $i++)
{
echo "$valor0" . "$i" . " $valor1 <br>";
}

$anadir_valor0=array_push($rand0, $valor_array0);
?>

Si bien es la mitad del ejercicio y no todo junto, mi duda esta en que no se si realmente hace lo que me pide que haga, ya que no se si lo estoy pensando bien. No pido que me lo hagan y si me exprese mal pido disculpas.

Ahora bien, ya teniendo hecha la primera parte supongo que la segunda parte debería ser similar, en la que tendría que borrar el array con la función array_shift. Sinceramente trate de utilizar el mismo código anterior pero en vez de utilizar el array_push trate de usar array_shift, pero me parece que me estoy metiendo en camisa de once varas. Espero que me puedan ayudar.
  #5 (permalink)  
Antiguo 07/07/2014, 10:03
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Problema con ejercicio en PHP POO

mria lo que tienes hecho es algo por procedimiento, en si no se puede catalogar orientado a objeto:

segun entiendo y mi concepto para que sea POO debes de tener clases y metodos ...

http://www.php.net/manual/es/language.oop5.php

http://www.php.net/manual/es/indexes.functions.php
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #6 (permalink)  
Antiguo 07/07/2014, 14:40
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema con ejercicio en PHP POO

En lo que llevas esto sobra:

Código PHP:
Ver original
  1. $rand0=range(1, 100);
  2. shuffle($rand0);

y el array_push debe estar dentro del bucle for para agregar un elemento en cada vuelta 1 a 100.

Para los números aleatorios usa rand, no importa que estén repetidos.

Lo mismo es para borrarlos. Suerte.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 12/07/2014, 16:21
 
Fecha de Ingreso: enero-2010
Mensajes: 50
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema con ejercicio en PHP POO

Buenas les consulto por lo siguiente, hasta acá hice lo siguiente,

<?php
echo "<br>" . "Ejercicio N 2:" . "<br>";

$frase1 = "La matriz contiene ";
$frase2 = " valores";
$array_vacio = array();
$rango_valores = range(1,100);
$orden_aleatorio = shuffle($rango_valores);
array_push($array_vacio, $rango_valores);

foreach($array_vacio as $pepe)
{
echo $frase1;
print_r ($pepe);
echo $frase2;
}
?>

Por pantalla lo que imprime es el array completo, con los valores del 1 al 100. Ahora bien, por una cuestión estética me gustaría que haya un salto de línea por cada valor que se muestra por pantalla. Saludos.
  #8 (permalink)  
Antiguo 12/07/2014, 17:55
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Problema con ejercicio en PHP POO

bueno viendo que no dejas de pasar paramos... jajaja me puse a hacerte la tarea... para que tengas una idea de como quedaria tu trabajo hecho en poo ... utilice mi idea y la logica para hacerla... tal ves otros la hagan diferente... copia el codigo a un index.php y montalo en un servidor local a mi me funciono correctamente.


Código PHP:
Ver original
  1. <?php
  2. echo"<br> Ejercicio N 2: <br>";// no necesitas separar las etiquetas
  3. //en POO lo primero que se necesita es declarar las clases a utilizar
  4. class matrizPractica{//dentro de esta clase englobamos todos los métodos que trabajaran en tu practica
  5.     function numrandon(){//funcion para establecer rangos
  6.         $dato = rand(1,100);
  7.     return $dato;//retornamos un numero aleatorio
  8.     }
  9.     function insert($dato){
  10.         global $array_vacio;
  11.         array_push($array_vacio, $dato);
  12.         return $array_vacio;
  13.     }
  14.     function delete(){
  15.         global $array_vacio;
  16.         array_shift($array_vacio);
  17.         return $array_vacio;
  18.     }
  19. }
  20.  
  21. //debemos preservar la memoria para el trabajo de la clase, métodos, y funciones internas es obligatorio instanciar las clases para este cometido.
  22. $practica   =   new matrizPractica();
  23. //gracias a la anterior instancia de clase ahora $practica se convierte en el objeto para elmanejo de la clase definida al inicio.
  24. //ahora definiremos las variables para este script:
  25. $bucle='1';
  26. $array_vacio = array();
  27. //creamos un buble de la tarea que se ejecuta X veces
  28. while($bucle<='100'){
  29.     //llamaremos a las diferentes funciones de tu clase
  30.     $numrandon      =   $practica -> numrandon();//funcion que nos devuelve un numero aleatorio por cada vuelta del bucle
  31.     $array_vacio    =   $practica -> insert($numrandon);//funcion que mete el valor al array y lo regresa el array nuevo, esto tiene que pasar cada vuelta del bucle
  32.     echo "numero agregado: ".$numrandon." posicion en el array: ".$bucle."<br>";    //imprimimos el mensaje de contenido
  33.     $bucle++;//colocamos un auto incrementador del bucle
  34. }
  35. $bucle='0';//reseteamos contador
  36. echo "<br>tarea finalizada array lleno<br>";
  37. //imprimimos los valores del array uno detras del otro para comprovar que esta lleno de otra forma
  38. foreach ($array_vacio as $valor) {
  39.     echo $valor."; ";
  40.     $bucle++;
  41. }
  42. echo "<br>array contiene $bucle registros<br>";
  43. //procedemos a elimiar el contenido del array, pero solo imprimirmo la resta del array:
  44. $bucle='100';
  45. while($bucle>'0'){
  46.     //llamaremos a las diferentes funciones de tu clase
  47.     $array_vacio    =   $practica -> delete();//funcion que elimina el valor al array y lo regresa el array nuevo, esto tiene que pasar cada vuelta del bucle
  48.     $bucle--;//colocamos un auto decrementador del bucle
  49.     echo "el array contiene $bucle datos <br>";//imprimimos
  50. }
  51. ?>

PD: la letra gris que esta despues de las oble barra "//" son comentarios de final de linea donde te explico que hace cada cosa. AVISA si te sirve y marca como solucionado
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB

Última edición por arcanisgk122; 13/07/2014 a las 05:29

Etiquetas: objetos, orientado, programacion
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 04:07.