Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Mac en 16 de Abril 2014, 03:38
-
Hola comunidad , Pidiéndoles un poco de su ayuda, estoy haciendo una operación en
PHP de la función cuadrática pero no me surge y la estoy necesitando con un poco de
urgencia aquí les pego el código para que me rectifiquen y me ayuden .
Les adjunto la imagen y también el link de la Función Cuadrática que necesito hacer.
http://www.profesorenlinea.cl/imagenmatematica/funcion_cuadr_graficar003.gif (http://www.profesorenlinea.cl/imagenmatematica/funcion_cuadr_graficar003.gif)
----------------------------------------------------------------------------------------------------
<?php
class Operaciones implements Calculos{
//put your code here
private $a;
private $b;
private $c;
function __construct($a, $b, $c) {
$this->a = $a;
$this->b = $b;
$this->c = $c;
}
public function getA() {
return $this->a;
}
public function getB() {
return $this->b;
}
public function getC() {
return $this->c;
}
public function setA($a) {
$this->a = $a;
}
public function setB($b) {
$this->b = $b;
}
public function setC($c) {
$this->c = $c;
}
public function cuadratica() {
$cuadratica= -$this->b + floatsqrt($this->b*$this->b);
}
}
?>
-
Hola, siguiendo la lógica que se describe aquí: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=326:pseudocodigo-y-diagrama-de-flujo-ecuacion-cuadratica-2o-grado-si-entonces-sino-if-then-else-cu00143a&catid=28:curso-bases-programacion-nivel-i&Itemid=59
El código de la función sería algo parecido a esto:
public function cuadratica() {
$d = $b*$b -4*$a*$c;
$e = 2*$a;
if ($d==0) {
$cuadratica[0] = -$b/$e;
$cuadratica[1] = $cuadratica[0];
}
else {
if ($d>0) {
$cuadratica[0] = (-$b + sqrt($d))/$e;
$cuadratica[1] = (-$b - sqrt($d))/$e;
}
else {
$cuadratica[0] = NAN;
$cuadratica[1] = NAN;
}
}
return $cuadratica;
}
Saludos.
-
Hola Cesar Gracias por tu ayuda esta excelente ! pero por que cundo armo todo el codigo me dice que las variables $b, $a, $c seems to be uninitialized ? no entiendo ? si ya esta inicializadas con el private.
----------------------------------------------------------------------------------------------
Tambien quisiera saber que significa en el código NAN;
-----------------------------------------------------------------------------------------------
Te pego el código.
<?php
include_once 'Calculos.php';
class Operaciones implements Calculos{
//put your code here
private $a;
private $b;
private $c;
function __construct($a, $b, $c) {
$this->a = $a;
$this->b = $b;
$this->c = $c;
}
public function getA() {
return $this->a;
}
public function getB() {
return $this->b;
}
public function getC() {
return $this->c;
}
public function setA($a) {
$this->a = $a;
}
public function setB($b) {
$this->b = $b;
}
public function setC($c) {
$this->c = $c;
}
public function cuadratica() {
$d = $b*$b -4*$a*$c;
$e = 2*$a;
if ($d==0) {
$cuadratica[0] = -$b/$e;
$cuadratica[1] = $cuadratica[0];
}
else {
if ($d>0) {
$cuadratica[0] = (-$b + sqrt($d))/$e;
$cuadratica[1] = (-$b - sqrt($d))/$e;
}
else {
$cuadratica[0] = NAN;
$cuadratica[1] = NAN;
}
}
return $cuadratica;
}
}
?>
-
Prueba a usar $this->a, $this->b y $this->c en vez de $a, $b y $c.
NAN significa "not a number". NAN viene siendo una operación matemática no permitida. Por ejemplo si escribes en una calculadora 0/0 te muestra un error porque esta operación no se puede calcular. En el caso de las ecuaciones cuadráticas hay valores de a, b, c que hacen que la ecuación no tenga solución debido a que se genera una raíz cuadrada negativa y una raíz cuadrada negativa no es una operación matemática permitida. Si la ecuación no tiene solución el resultado sería NAN. Saludos,
-
Gracias Cesar pude solucionarlo con el $this :)
Pero Ahora me surge este pequeño problema, cuando quiero sacar los valores ! :(
Este es el código llamado probador.
Cuando lo ejecuto me sale error diciéndome :
Notice: Array to string conversion in C:\xampp\htdocs\FCuadratica\Probador.php on line 29
--> Array
-------------------------------------------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<title> Programa </title>
<?php
include_once 'Operacion.php';
include_once 'Calculos.php';
?>
</head>
<body>
<?php
$a=4;
$b=5;
$c=1;
$p = new Operacion ($a, $b, $c);
echo " --> " . $p->Cuadratica()."</br>";
?>
</body>
</html>
-
-He colocado el codigo de esta manera y tampoco me realiza la operación! :(
Tratando de encontrar la solución !
-----------------------------------------------------------------------------------------------
<?php
array ($a=4, $b=5, $c=1);
$p = new Operacion ($a, $b, $c);
echo " --> " . $p->Cuadratica()."</br>";
?>
-
Tienes que tener en cuenta que el método te devuelve dos resultados, en un array, el primer resultado con índice cero y el segundo resultado con índice 1:
Así me funciona a mí (tienes que poner el nombre de archivo que estés usando tú):
<?php
include_once 'archivoPrueba.php';
$a = -2;
$b = 1;
$c = 1;
$p = new Operaciones($a, $b, $c);
echo 'Valor de a: '.$a.'<br/>';
echo 'Valor de b: '.$b.'<br/>';
echo 'Valor de c: '.$c.'<br/><br/>';
echo 'Solucion 1: '. $p->Cuadratica()[0].'<br/>';
echo 'Solucion 2: '. $p->Cuadratica()[1];
?>
<?php
class Operaciones{
//put your code here
private $a;
private $b;
private $c;
function __construct($a, $b, $c) {
$this->a = $a;
$this->b = $b;
$this->c = $c;
}
public function getA() {
return $this->a;
}
public function getB() {
return $this->b;
}
public function getC() {
return $this->c;
}
public function setA($a) {
$this->a = $a;
}
public function setB($b) {
$this->b = $b;
}
public function setC($c) {
$this->c = $c;
}
public function cuadratica() {
$d = $this->b*$this->b -4*$this->a*$this->c;
$e = 2*$this->a;
if ($d==0) {
$cuadratica[0] = -$this->b/$e;
$cuadratica[1] = $cuadratica[0];
}
else {
if ($d>0) {
$cuadratica[0] = (-$this->b + sqrt($d))/$e;
$cuadratica[1] = (-$this->b - sqrt($d))/$e;
}
else {
$cuadratica[0] = NAN;
$cuadratica[1] = NAN;
}
}
return $cuadratica;
}
}
?>
-
Hola Cesar Krall :)
Te comento que yo había escrito el código ha si con el arrayecho 'X1: '. $p->Cuadratica()[0];
pero me salia error y por ese error no me decidía a ejecutarlo!!
Te comento que el error que sigue saliendo en la instrucción es este que dice :
< Language feature not compatible with PHP version indicated in project settings >
Por esta razon estaba un poco loco ! jaja y pues comencé a inventar y nada !
Pero lo puedo ejecutar bien con el error que sale mencionado !
Te adjunto un pantalla-so ! del error !
--------------------------------------------------------------------------------
-
Cesar otra fora de hacerlo que e echo es esta pero no so por que me sale el
return $cuadratica;
con este mensaje: Variable $cuadratica seems to be uninitialized no entiendo ! por que esta variable no creo yo que sea necesario inicializarla. :-\
------------------------------------------------------------------------------------------------------
public function Cuadratica() {
if($this->a != 0) {
}
$descriminante = ($this->b * $this->b) - 4 * $this->a * $this->c;
if($descriminante >= 0) { //raices reales
$raiz = sqrt($descriminante);
$x1 = (-$this->b + $raiz)/(2* $this->a);
$x2 = (-$this->b - $raiz)/(2* $this->a);
} else { //raices reales
$raiz = sqrt(-$descriminante)/(2* $this->a);
$real = -$this->b/(2* $this->a);
$x1 = $real.' + '.$raiz.'i';
$x2 = $real.' - '.$raiz.'i';
}
return $cuadratica; // Variable $cuadratica seems to be uninitialized
}
}
?>
-
Cesar otra Forma que e echo es esta pero no e podido hallar el problema del
return $cuadratica;
con este mensaje: Variable $cuadratica seems to be uninitialized no entiendo ! por que
esta variable no creo yo que sea necesario inicializarla. o si ?¿ :-\
-
No e podido encontrar el problema del
return $cuadratica;
Sale este mensaje Variable $cuadratica seems to be uninitialized no entiendo ! por que ?
-
El mensaje dice que estás intentando devolver $cuadratica como resultado de una función cuando esa variable no existe (no ha sido inicializada, en realidad php es de tipado débil y la variable existe desde el momento en que la usas, pero devolver como resultado de una función una variable sin inicializar no tendría demasiado sentido).
He probado el código que te dejé en diferentes servidores y en todos ellos funciona correctamente, si te da problemas quizás se deba a que estés usando una versión de php anticuada. Revisa la versión de php que estés usando y si es anticuada actualízala, o si no puedes acceder al servidor, usa otro (hay servidores gratuitos que te permiten crear cuentas gratis). Saludos,