Foros del Web » Programando para Internet » PHP »

Warnings en Algoritmo?

Estas en el tema de Warnings en Algoritmo? en el foro de PHP en Foros del Web. Tengo estos warning ya intente guardar los indices en una variable decremento, en poner el indice directo. Warning: Cannot use a scalar value as an ...
  #1 (permalink)  
Antiguo 29/11/2013, 12:30
 
Fecha de Ingreso: mayo-2013
Ubicación: Guadalajara
Mensajes: 53
Antigüedad: 10 años, 11 meses
Puntos: 0
Warnings en Algoritmo?

Tengo estos warning ya intente guardar los indices en una variable decremento, en poner el indice directo.

Warning: Cannot use a scalar value as an array in /Applications/XAMPP/xamppfiles/htdocs/moneda/algotirmo.php on line 11

Warning: Cannot use a scalar value as an array in /Applications/XAMPP/xamppfiles/htdocs/moneda/algotirmo.php on line 17

Warning: Cannot use a scalar value as an array in /Applications/XAMPP/xamppfiles/htdocs/moneda/algotirmo.php on line 17

Warning: Cannot use a scalar value as an array in /Applications/XAMPP/xamppfiles/htdocs/moneda/algotirmo.php on line 17

Warning: Cannot use a scalar value as an array in /Applications/XAMPP/xamppfiles/htdocs/moneda/algotirmo.php on line 41

Warning: Cannot use a scalar value as an array in /Applications/XAMPP/xamppfiles/htdocs/moneda/algotirmo.php on line 41

Warning: Cannot use a scalar value as an array in /Applications/XAMPP/xamppfiles/htdocs/moneda/algotirmo.php on line 41

FUNCIÓN:
Código PHP:
Ver original
  1. function Minima_devolucion($cantidad_devuelta, $monedas)
  2. {
  3.     $longitudMonedas = strlen($monedas);
  4.     //Creamos la matriz de devoluciones
  5.     $matriz_cambio =  array($longitudMonedas+1,$cantidad_devuelta+1);
  6.      
  7.     //Rellenamos la 1ª columna de cero
  8.     for($i = 0; $i < $longitudMonedas; $i++)
  9.     {
  10.         $matriz_cambio[$i][0] = 0;
  11.     }
  12.      
  13.     //La 1ª fila menos la 1ª columna un número alto
  14.     for($j = 1; $j <= $cantidad_devuelta; $j++)
  15.     {
  16.         $matriz_cambio[0][$j] = 999999;
  17.     }
  18.      
  19.     for($i = 1; $i <= $longitudMonedas ; $i++)
  20.     {
  21.        for($j = 1; $j <= $cantidad_devuelta; $j++)
  22.        {
  23.             if($monedas[$i-1] > $j )
  24.             {
  25.                 $matriz_cambio[$i][$j] = $matriz_cambio[$i-1][$j];
  26.             }else
  27.             {
  28.                 //Si la moneda no es superior a la cantidad a devolver
  29.            
  30.                 //Calcular cual es el mínimo de estas dos posiciones
  31.                 $minimo = 0; //Guardaremos aquí el mínimo
  32.                 if($matriz_cambio[$i-1][$j] < $matriz_cambio[$i][$j - $monedas[$i-1]] + 1)
  33.                 {
  34.                     $minimo = $matriz_cambio[$i-1][$j];
  35.                 }else
  36.                 {
  37.                     $minimo = $matriz_cambio[$i][$j - $monedas[$i-1]] + 1;
  38.                 }
  39.                 //Guardamos mínimo
  40.                 $matriz_cambio[$i][$j] = $minimo;
  41.             }
  42.         }
  43.     }
  44.          
  45.     return $matriz_cambio[$longitudMonedas][$cantidad_devuelta];
  46. }

El index.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. include "algotirmo.php";
  4.  
  5. Minima_devolucion(3,4);
  6.  
  7. ?>
  #2 (permalink)  
Antiguo 29/11/2013, 12:44
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: Warnings en Algoritmo?

a simple vista utilizas strlen para un integer

No se para que.

Código PHP:
Ver original
  1. $longitudMonedas = strlen($monedas);
  #3 (permalink)  
Antiguo 29/11/2013, 12:44
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Warnings en Algoritmo?

Ese código es un caos que no tiene sentido, tal cual está en PHP. Me huelo a que lo has copiado de otro lenguaje, por ejemplo JAVA, y lo has pasado a PHP sin pensar en qué estabas haciendo.

Pues vas tener que comprender qué hace, para poder portarlo bien. O calentarte tú la cabeza, y resolver el problema del cambio mínimo de monedas, que es lo que te recomiendo, si quieres aprender.
  #4 (permalink)  
Antiguo 29/11/2013, 12:47
 
Fecha de Ingreso: noviembre-2013
Mensajes: 7
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Warnings en Algoritmo?

no entiendo muy bien el código de principio estas intentado convertir un valor int en array

no entiendo muy bien lo que quieres hacer o para que sirve dicha funcion se lo explicas mejor se puedo ayudar de momento


esto no sirve

$matriz_cambio = array($longitudMonedas+1,$cantidad_devuelta+1);

porque aquí lo estas convirtiendo en array

Código:
for($i = 0; $i < $longitudMonedas; $i++)
    {
        $matriz_cambio[$i][0] = 0;
    }
lo correcto seria $matriz_cambio = array(array(),array()); en caso de que
$longitudMonedas; tengo el valor de 2;

pero si $longitudMonedas; es un valor desconocido seria de esta manera

Código:
$matriz_cambio =  array();
for($i = 0; $i < $longitudMonedas; $i++)
    {
        if(!isset( $matriz_cambio[$i] )) $matriz_cambio[$i]=array();
    }
no se creo que esto de inicio te puede dar una idea de como solucionar el resto

saludos

Etiquetas: warning
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 13:11.