Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Ogramar

Páginas: 1 ... 75 76 77 78 79 [80] 81 82 83 84 85 ... 100
1581
Hola de nuevo, te veo dándole muchas vueltas y lo que se me ocurre son dos cosas. Si quieres hacerlo tú mismo comprendiendo lo que haces tendrías que ir a los conocimientos fundamentales para poder programarlo:

HTML -- > http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=69&Itemid=192

CSS -- > http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=75&Itemid=203

JavaScript --> http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=78&Itemid=206

Y si simplemente quieres que funcione sin saber cómo, coge el código de esta página y cópialo (tendrás que hacer algunas modificaciones en rutas, etc.).

Te pongo adjuntos 3 archivos, guárdalos en tu pc y pulsa sobre personajes.html para ver cómo trabaja el código

Salu2

1582
Hola, fíjate lo que se comenta en este hilo, es posible que te pueda ayudar: https://www.aprenderaprogramar.com/foros/index.php?topic=328


También creo que te sea útil repasar cómo se debe utilizar la clase Scanner: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=627:pensar-en-objetos-una-entrada-de-teclado-o-consola-en-java-como-objeto-con-campos-y-metodos-cu00661b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

En el código hay líneas que tienen poco sentido, por ejemplo esta parte:

System.out.print("Ingrese un Numero: ");
v[ i ][ j ] = {3,18,46,27},{1424,1795,6234,45},{2142,1224,1447, 1632},{1464,1942,122,99};

La matriz puedes definirla manualmente o bien pedirle datos al usuario, tienes que decidir si hacerlo de una manera o de otra.

Salu2

1583
Yo opino lo mismo... muchos recuerdos de épocas pasadas!

1584
Te puedo decir que está todo correcto (setcasado debe ser setCasado, pero todos los otros nombres los has escrito bien)

Salu2

1586
Gracias a tí por compartir el código, quizás le sea útil a otras personas. Salu2

1587
Pues me alegro que se haya solucionado. En el servidor en que probé yo el código no me aparecía ningún mensaje de error ni warning, sino simplemente la ejecución correcta del código.

Salu2

1589
Un return devuelve una sola cosa, por ejemplo un valor numérico, o un valor de cadena de texto, o un valor booleano. Si motorEsParaAgua es booleano, no puedes hacer return "Ahora motor es para agua es"+motorEsParaAgua

Porque estarías mezclando cosas.

Lo que puedes hacer si quieres es escribir:

System.out.println ("motorEsParaAgua vale: "+motorEsParaAgua);
return motorEsParaAgua;

Aquí primero muestras el mensaje y luego haces el return del método.

De todas formas esto no es muy recomendable, porque estarías mezclando cosas dentro de lo que hace un método y un método sólo debe hacer una cosa. Los mensajes sólo debes mostrarlos si los pide el enunciado del ejercicio.

Salu2

1591
No sé si te servirá, pero esta información es buena: https://www.securecoding.cert.org/confluence/display/jg/07.+Prevent+code+injection

El problema es que está en inglés y es sobre java, pero quizás te puede dar buenas pistas.

Salu2

1592
Hola, he mirado y veo distintos detalles que habría que revisar. Las recomendaciones para que este código funcione:


1) Comprobar que tienes codificación de archivo en UTF-8 sin BOM

2) Eliminar espacios antes y después de las etiquetas de apertura y cierre de php, es decir

_
_
<?php

...

?>
_
_

___<?php ____

<?____
____<?


Donde los guiones indican que hay líneas en blanco o espacios en blanco: elimina esas líneas o espacios en blanco.


3) Poner el sesión_start() al principio: todo lo que se ejecute estará dentro de una misma sesión

4) Te falta la etiqueta de apertura <html> en inicio_de_sesion.php (tienes la de cierre, pero no la de apertura)

5) En inicio_de_sesion_exitoso.php tienes mal puestas las etiquetas <head>... </head>

6) En inicio_de_sesion_exitoso.php tienes mal construido el código html en general

7) Debes añadir session_unset ($_SESSION['entrar']); para que no se pueda entrar después de pulsar logout si no se introducen los datos correctos

He introducido algún cambio más.

El código quedaría así (al menos a mí así me está funcionando):

Archivo inicio_de_sesion.php

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>inicio de sesion</title>
</head>
<body>
<form name="form1" method="post" action="recibe_inicio_de_sesion.php">
  <p>
    <label>nombre<br>
      <input type="text" name="nombre" id="textfield">
    </label>
  </p>
  <p>
    <label>pass<br>
<input type="text" name="pass" id="textfield2">
    </label>
  </p>
  <p>
    <input type="submit" name="button" id="button" value="Enviar">
  </p>
</form>
</body>
</html>

Archivo recibe_inicio_de_sesion.php

Código: [Seleccionar]
<?php 
session_start
();
$nombre=$_POST['nombre'];
$nombre=strtoupper ($nombre);
$pass=$_POST['pass'];
$pass=strtoupper($pass);
if  ( 
$nombre == "JORGE" &&  $pass == "PASS" ) { 
$_SESSION['entrar']=1;
$_SESSION['usuario']=$nombre
}
if (
$_SESSION['entrar']==1){
header ("location:inicio_de_sesion_exitoso.php");
}
else { 
?>

<script type="text/javascript" language="javascript">
alert("usuario y/o contraseña incorrecto/s ");
location.href="inicio_de_sesion.php";</script> 
<?php

?>


Archivo inicio_de_sesion_exitoso.php

Código: [Seleccionar]
<?php
session_start
(); 
if (
$_SESSION['entrar'] !=1)

?>

    <script type="text/javascript" language="javascript">
alert("No estas autorizado a entrar sin logearte")
location.href="inicio_de_sesion.php";
    </script>
<?php
}
?>

<p>Bienvenido <?php echo $_SESSION['usuario'?></br></p>
<input name="salir" value="Logout" type="button" onClick="location.href='inicio_de_sesion.php'">
<?php
session_unset 
($_SESSION['usuario']);
session_unset ($_SESSION['entrar']);
?>


Salu2

1593
Yo lo que diría es que ese árbol tiene 9 nodos (o 9 elementos) y que cada nodo está en un nivel. Si empiezas desde cero, podríamos decir que el nodo 2 está en el nivel 0, los nodos 7 y 5 en el nivel 1, los nodos 2, 6 y 9 en el nivel 2 y los nodos 5, 11 y 4 en el nivel 3.

Si empiezas desde uno podríamos decir que el nodo 2 está en el nivel 1, los nodos 7 y 5 en el nivel 2, los nodos 2, 6 y 9 en el nivel 3 y los nodos 5, 11 y 4 en el nivel 4.

Como dice en la imagen, podríamos llamar a la altura = máxima nivel - 1, es decir, 4-1 = 3

La altura podríamos verla como el número de escalones, partiendo del nivel del suelo el nodo raíz estaría en el suelo y cada nodo en un nivel siguiente estaría en un nuevo escalón. Por eso tendríamos 4 niveles (suelo, escalón 1, 2 y 3) y altura 3 (3 escalones).

Pero decir que nivel es el número de nodos del árbol no parece que tenga mucho sentido  ::)

1594
Hola Ramón, te comento que para pegar código debes usar el botón # que aparece en el editor del foro, lo pulsas y una vez te aparezcan las etiquetas [ code ] ... [ / code] pon el código entre esas dos etiquetas, luego pulsa previsualizar para comprobar si ha quedado bien o si tienes que corregir algo.

Sobre el ejercicio CU01012D del curso CSS, el enunciado dice: En él encontrarás tres etiquetas div. Haz lo siguiente:

a) Establece atributos class para cada una de ellas con valores <<principal>> para la primera, y <<secundario>> para la segunda y la tercera.


Pero tú no has establecido correctamente el atributo class sobre etiquetas div, sino que lo has hecho sobre otras etiquetas.

Tú has escrito: <div><h1>Novedades</h1><p class="principal">Aquí presentamos las novedades del sitio.</p></div>

Aquí tienes el atributo class sobre una etiqueta p. Para poner el atributo a la etiqueta div tienes que hacerlo así:

<div class="principal"><h1>Novedades</h1><p>Aquí presentamos las novedades del sitio.</p></div>

Lo mismo te ocurre aquí. En vez de:

<div>
<h3 class="secundario">Lanzamos el producto X-FASHION</h3>

Debes escribir:

<div class="secundario">
<h3>Lanzamos el producto X-FASHION</h3>


Finalmente el ejercicio dice que en el tercer div también class debe ser secundario, por tanto debes escribir:

<div class="secundario">
<h3>Mejoramos el producto T-MOTION</h3>



Una vez definido esto, tienes que meter el código CSS. Para ello puedes hacerlo como CSS interno (dentro del mismo archivo html donde tienes el código html) o como css externo (en un archivo aparte, poniendo una referencia).

Mira las explicaciones y ejemplos que tienes aquí: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=713:formas-de-aplicar-css-interno-y-externo-link-rel-y-archivos-de-extension-css-comentarios-css-cu01010d&catid=75:tutorial-basico-programador-web-css-desde-cero&Itemid=203

Inténtalo y si tienes problemas vuelve a consultar

Salu2

1596
Aprender a programar desde cero / Re:Ejercicio CU00637B
« en: 02 de Octubre 2014, 08:56 »
Hola, el código que has puesto funciona bien

Salu2

1597
Aquí te paso el código, no lo he probado pero se supone que debería funcionar. Si lo pruebas y funciona ya puedes mejorarlo para interaccionar con el usuario y no introducir palabras predefinidas en el árbol.

La idea es la siguiente: en el método public synchronized void insertar(String valorInsertar) de la clase NodoArbol insertas la palabra a la izquierda si es de longitud menor que la raíz, o a la derecha si es de longitud (número de caracteres).

Fíjate en la línea if (valorInsertar.length() <= datos.length())

tienes un <= para que si la palabra es de longitud igual, se inserte a la izquierda (este era un fallo que tenías en el código con los enteros).

Una vez construido el árbol con este criterio, debería hacerse el recorrido igual que lo hacía con los enteros.

Clase NodoArbol:

Código: [Seleccionar]
//arbol en java inorden, posorden, preorden */

//definicion de la clase NodoArbol
class NodoArbol {

    //miembros de acceso
    NodoArbol nodoizquierdo;
    String datos;
    NodoArbol nododerecho;

    //iniciar dato y hacer de este nodo un nodo hoja
    public NodoArbol(String datosNodo)
    {
        datos = datosNodo;
        nodoizquierdo = nododerecho = null; //el nodo no tiene hijos
    }

    //buscar punto de insercion  e insertar nodo nuevo
    public synchronized void insertar(String valorInsertar)
    {
        //insertar en subarbol izquierdo
        if (valorInsertar.length() <= datos.length()){

            //inserta nuevo nodoarbol
            if (nodoizquierdo == null)
                nodoizquierdo = new NodoArbol(valorInsertar);
            else //continua recorriendo subarbol izquierdo
                nodoizquierdo.insertar(valorInsertar);
        }

        //insertar nodo derecho
        else if(valorInsertar.length() > datos.length()){

            //insertar nuevo nodoarbol
            if (nododerecho == null)
                nododerecho = new NodoArbol(valorInsertar);
            else //continua recorriendo subarbol derecho
                nododerecho.insertar(valorInsertar);
        }
    } //fin del metodo insertar

} //fin clase nodoarbol

Clase Arbol

Código: [Seleccionar]
//---------- CLASE ARBOL------------------
class Arbol{
    private NodoArbol raiz;

    //contruir un arbol vacio
    public Arbol()
    {
        raiz = null;
    }

    //insertar un nuevo nodo en el arbol de busqueda binaria
    public synchronized void insertarNodo(String valorInsertar)
    {
        if(raiz == null)
            raiz = new NodoArbol(valorInsertar); //crea nodo raiz

        else
            raiz.insertar(valorInsertar); // llama al metodo insertar
    }

    //--------------- EMPESAR EL RECORRIDO EN PREORDEN-----------------------
    public synchronized void recorridoPreorden()
    {
        ayudantePreorden(raiz);
    }
    //metodo recursivo para recorrido en preorden

    private void ayudantePreorden(NodoArbol nodo)
    {
        if (nodo == null)
            return;

        System.out.print(nodo.datos + " "); // mostrar datos del nodo
        ayudantePreorden(nodo.nodoizquierdo); //recorre subarbol izquierdo
        ayudantePreorden(nodo.nododerecho); //recorre subarbol derecho
    }
    //--------------EMPEZAR RECORRIDO INORDEN-----------------------------------
    public synchronized void recorridoInorden()
    {
        ayudanteInorden(raiz);
    }

    // metodo recursivo para recorrido inorden
    private void ayudanteInorden(NodoArbol nodo)
    {
        if (nodo == null)
            return;

        ayudanteInorden(nodo.nodoizquierdo);
        System.out.print(nodo.datos + " ");
        ayudanteInorden(nodo.nododerecho);
    }

    //-----------------------------EMPEZAR RECORRIDO POSORDEN---------------------------------
    public synchronized void recorridoPosorden()
    {
        ayudantePosorden(raiz);
    }

    //metodo recursivo para recorrido posorden
    private void ayudantePosorden(NodoArbol nodo)
    {
        if (nodo == null)
            return;
        ayudantePosorden(nodo.nodoizquierdo);
        ayudantePosorden(nodo.nododerecho);
        System.out.print(nodo.datos + " ");
    }

}//fin clase arbol

Clase PruebaArbol

Código: [Seleccionar]
//programa para probar la clase arbol
public class PruebaArbol {
    public static void main(String args[])
    {
        Arbol arbol = new Arbol();
       

        System.out.println( "Insertando los siguientes valores:"+
        "camino, abedul, estruendo, noche, dia, espejo, roca, dirimir,"+
        "ambulancia, hiperrealidad, amigo");

        arbol.insertarNodo("camino");
        arbol.insertarNodo("abedul");
        arbol.insertarNodo("estruendo");
        arbol.insertarNodo("noche");
        arbol.insertarNodo("dia");
        arbol.insertarNodo("espejo");
        arbol.insertarNodo("roca");
        arbol.insertarNodo("dirimir");
        arbol.insertarNodo("ambulancia");
        arbol.insertarNodo("hiperrealidad");
        arbol.insertarNodo("amigo");


        System.out.println("\n\nRecorrido preorden");
        arbol.recorridoPreorden();

        System.out.println("\n\nRecorrido inorden");
        arbol.recorridoInorden();

        System.out.println("\n\nRecorrido posorden");
        arbol.recorridoPosorden();
    }
}

Ya nos contarás...

Salu2

1598
Ummmm ¿Si no sabes el árbol que defines, cómo sabes si el recorrido inorden está bien o está mal?

Piensa que el árbol lo puedes crear de muchas maneras. ¿Tiene que ser por orden alfabético? ¿Por orden de longitud de palabras? ¿Tiene que ser un árbol balanceado? ¿O te da igual cómo queden las palabras en el árbol y únicamente te interesa ver cómo hace el recorrido?

1599
Lo que te pregunto es con qué criterio defines el árbol. Por ejemplo supón que quieres trabajar con 3 cadenas que son Luis, Roberto y Maquiavelo.

Puedes definir 3*2 = 6 árboles:

          Luis
Roberto            Maquiavelo

O bien:

          Luis
Maquiavelo          Roberto           



O bien:

             Maquiavelo
Roberto              Luis

O bien:

             Maquiavelo
Luis                        Roberto

O bien:

             Roberto
Luis                    Maquiavelo

O bien:

             Roberto
Maquiavelo            Luis


El árbol que utilices depende del criterio que uses para construir el árbol. En el caso del árbol de enteros usabas un criterio que permitía que se generaran árboles no compensados (es decir, con mayor desarrollo por un lado p.ej. la izquierda que por el otro). En realidad, con el árbol de enteros, la forma del árbol dependía de si el nuevo valor a insertar era mayor o menor que el valor en la raíz..., en base a comparaciones numéricas se construía el árbol.

¿Cómo quieres construir el árbol de Strings? ¿Con qué criterio? Si no sabes el árbol que tienes, no puedes recorrerlo, de ahí que lo primero que trato de saber es cómo se define el árbol de partida, para luego poder recorrerlo.

Tú has indicado: defines el árbol y después lo recorres.

Lo que quiero saber es cómo lo defines.

Por ejemplo, supón que extraes estas palabras con este orden: casa, abedul, estruendo, noche, dia, espejo, roca, dirimir, ambulancia, hiperrealidad, amigo

¿Cuál es el árbol que defines y por qué (con qué criterio)?


1600
Hola, no me he explicado bien, lo que te quiero decir es que para poder ordenar recorrer con preorden, inorden y postorden primero tienes que definir cuál es el árbol que quieres recorrer.

Tu programar consta de dos partes:

a) Definir el árbol a recorrer

b) Recorrer el árbol en preorden, inorden o postorden.

Lo que hagas en la parte a) afecta al resultado que obtienes en la parte b).

Por ejemplo, no es lo mismo el árbol:

                      Juan

     Pedro                          Luis

Donde por ejemplo el recorrido preorden es: Juan, Pedro, Luis

Que el árbol:

                     Luis

    Pedro                            Juan

Donde el recorrido preorden es Luis, Pedro, Juan.

Aunque los datos sean los mismos, el recorrido varía en función de cómo estén ordenados los datos dentro del árbol.

Por eso es por lo que te preguntaba que con qué criterio quieres construir el árbol, ya que primero defines el árbol y después lo recorres. Y dependiendo de cómo lo hayas definido, los resultados del recorrido serán unos u otros.

Salu2

Páginas: 1 ... 75 76 77 78 79 [80] 81 82 83 84 85 ... 100

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".