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 ... 78 79 80 81 82 [83] 84 85 86 87 88 ... 100
1641
Hola, lo primero recordar que para pegar código se debe pulsar el botón # del foro y cuando aparezcan las etiquetas [ code ] ... [ / code ] pegar el código entre ambas etiquetas. Luego pulsar el botón previsualizar para comprobar que se vea bien, si está todo bien pulsar en publicar.

Y sobre el código y las preguntas:

1642
Hola Jose, si el código se hace muy extenso y se requiere de la misma función desde distintos archivos php se usa la directiva include:

include da lugar a que se cargue el archivo que tú indiques en el lugar en que tú indiques. Por ejemplo:

<?php include("header.php"); ?>
<p>
Hola, este es el contenido.
</p>
<?php include("footer.php"); ?>

Carga lo que contenga el archivo header.php, luego muestra hola, este es el contenido y luego carga el archivo footer.php

Si quieres puedes tener un archivo que se denomine funciones.php y ahí incluyes todas las funciones que quieras. Luego al comienzo de cada archivo escribes

<?php include("funciones.php"); ?>

Para poder hacer uso de esas funciones dentro de esa página web en concreto

Salu2

1643
Hasta donde yo sé es tal y como ha descrito dongo como trabajan los gestores de contenidos php (como Drupal, Joomla,Wordpress, PrestaShop, Moodle, etc.). Estos gestores están preparados por equipos de programadores profesionales y si lo hacen así supongo que es la forma adecuada. Esto no quita para que estos gestores tengan agujeros de seguridad, igual que todo sistema. La seguridad es un aspecto más de la programación pero también es un aspecto de los servidores y de la administración de servidores. Tú puedes tener bien programado un sistema, pero si el servidor tiene un fallo de seguridad y un hacker accede al servidor te pueden destruir o robar lo que tengas dentro. Por eso recomendaciones básicas son mantenerse en servidores que den garantías, actualizar, mantener copias de seguridad, etc. siempre que estemos desarrollando trabajos que tengan algo de importancia. Salu2

1644
Hola, si tienes conocimientos de programación al final de este post tienes un link a un curso de android.

https://www.aprenderaprogramar.com/foros/index.php?topic=1117

Si no tienes conocimientos tendrías que empezar por:

Curso Fundamentos: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59

Curso java desde cero: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Salu2

1645
Hola, tienes 4 atributos, por tanto deberías tener 4 métodos get y 4 métodos set, como no los tienes todavía no se puede decir que esté bien, yo al menos veo 4 set pero no veo los 4 get  :(

Léete este post y mira cómo está resuelto para tener una referencia: https://www.aprenderaprogramar.com/foros/index.php?topic=1220

1646
Hola, gracias por tus comentarios y te respondo a la consulta:

Obtener la duración de una canción expresada como un número decimal en minutos (por ejemplo podría ser 3,22 minutos) recibiendo como dato el número de canción dentro del disco.

public float getSongLenght ( float songLenght1)

songLength se traduce por "longitud de canción". El nombre del método sí es correcto, pero no el parámetro: ¿qué debe recibir el método? Un número de canción (un entero), por tanto deberías expresarlo como

public float getSongLenght ( int songNumber): recibe el número de canción (int) y responde o devuelve su duración (float), es función

Pedir a un administrador de una compañía discográfica que introduzca la duración de todas las canciones (dichas duraciones se almacenarán como información del objeto). Es decir, el método se encargará de saludar al usuario y pedirle que vaya introduciendo una por una la duración de las canciones.

public void setSongLenght () 

Se traduciría por establecer la duración de una canción, pero el enunciado dice todas las canciones, sería más claro:

public void setAllSongsLength () , es procedimiento


Obtener la duración del disco completo (suma de las duraciones de cada una de las canciones).

public float getDiscLenght () : es correcto, es función

Sobre la duda, es posible que se debiera usar un array, pero eso se ve más adelante en el curso, ahora simplemente se trata de las signaturas

Añadir una canción al disco recibiendo como información para ello el título de la canción y su duración (se añadirá como última canción en el disco. Si el disco tenía por ejemplo 10 canciones, al añadirse una canción pasará a tener 11).


public String setNewSong (String songTitle , float songLenght)

El método no tiene que devolver nada, por tanto su tipo sería void y es un procedimiento:

public void setNewSong (String songTitle , float songLenght)

La canción se añade a la última se supone que porque está programado así (al menos eso dice el enunciado), pero en este ejercicio no se trata de ver cómo sería esa programación, eso se ve más adelante.

Las dudas no son molestas, pregunta todo lo que te sea necesario, aunque sí es cierto que consultando y buscando en otros hilos del foro verás que muchas dudas que se te planteen las puedes resolver viendo esos otros hilos

Saludos y a seguir!!!

1647
Hola, está todo bien. Recomendarte que te acostumbres a usar los convenios para nombrar clases y métodos. En el caso de clases, deben comenzar con una letra mayúsculas y seguir "CamelCase", es decir, una mayúscula cada vez que se corresponda con una nueva palabra. En el caso de métodos deben comenzar con minúsculas, en tu código sería valorAbsoluto en lugar de ValorAbsoluto. Son detalles pero acostúmbrate a las buenas prácticas de programación  ;D

Saludos!

1648
Hola, todavía tienes cosas que mejorar.

El método setNumeroDeTelevisores no debe ir en la clase Casa porque numeroTelevisores no es un atributo de la clase Casa. Idem para setTipoSalon , setEsIndependiente, setNumeroDeFuegos

El método getDatosCasa no está mal, pero te faltan los get principales que son los get de cada uno de los atributos de la clase.

Léete este post y mira cómo está resuelto para tener una referencia: https://www.aprenderaprogramar.com/foros/index.php?topic=1220

1649
Comunidad / Re:Saludos, cuasi-humanos
« en: 02 de Septiembre 2014, 18:10 »
Hola orzo, menos mal que te unes al lado correcto de la fuerza, ya que te comento que en el lado incorrecto tenemos una pandilla de hackers y fauna variada que tratan de hacernos la vida imposible  :o

Si vienes de dBase y Clipper seguramente puedas aportar más que algunos que no conocimos esas batallitas, aunque te puedo contar que por lo menos hasta hace un par de años sé que en algunos sitios se seguía programando con Clipper, que a mí me suena a todo menos a lenguaje de programación.

En fin, creo que podrás estar en el grupo de avanzadilla entre los que andamos por el foro, ya que como podrás comprobar hay mucha gente empezando por el principio de los tiempos


1650
Hola, tu primera idea hiciste bien en descartarla, pues como programador debes pensar en resolver todos los casos posibles (o al menos el mayor número de casos posibles) y no sólo unos pocos casos, que además supone ir uno por uno, esto en general debes tratar de evitarlo.

El ejercicio está bien resuelto. Hacerlo por recursión también es posible, pero la recursión es un tanto compleja de entender por lo tanto mejor dejarla para más adelante.

Aquí te dejo el método recursivo pero te aconsejo que no te líes con esto:

Código: [Seleccionar]
    public double multiplicarPorDiecesRecursivo (double numero, int dieces) {
       
        if (dieces ==1) { return numero*10;}
        else { return 10*multiplicarPorDiecesRecursivo(numero, dieces-1);}
    }

1651
Hola, te digo las cosas que tienes que corregir:

- En todas las clases te faltan los métodos get

- Los nombres de clases deben empezar con letra mayúscula, por ejemplo Casa en lugar de casa

- El constructor de casa lo más lógico es que no reciba ningún atributo y que inicialice superfice a 0 y dirección a ""

- En la clase Casa no debes tener métodos get ni set para cosas que no sean atributos de la clase Casa. Por tanto no debes tener setNumeroDeTelevisores, porque el número de televisores es un atributo de otra clase. Cada clase se responsabiliza exclusivamente de sus atributos.

Revisa este post creo que te será útil: https://www.aprenderaprogramar.com/foros/index.php?topic=964

Saludos

1652
Por el error que te tira parece que estás trabajando con wampp, es decir, en local. Si la página la vas a subir a un servidor lo que tendrás que mirar es la configuración de ese servidor, cambiarlo en wampp puede que no tenga mayor interés si te vas a pasar a un servidor remoto.

Puede ocurrir que tengas mysqli y no lo estés usando, o quizás no lo tengas.

Prueba a escribir esto (cambiar a mysqli):

Código: [Seleccionar]
function conectar(){
      if(!($data = mysqli_connect(SERVER, USER, PASS))){
         return -1;
      }else{
         if(!(mysqli_select_db(DB, $data))){
            return -2;
         }else{
            return $data;
         }
      }
   }

A ver si te sigue dando error o se arregla.

Puede ocurrir que tengas una versión de Wampp muy antigua y simplemente desinstalando e instalando una actualizada ya puedas usar mysqli y te vaya todo ok. O puede ocurrir que no tengas mysqli. Para comprobar si tienes mySqli clicka en el icono de wamp y vete a PHP - > php extensions y comprueba si está marcado mysqli.

Ya nos contarás  :D

1653
Hola, creo que leer estas discusiones te puede aclarar en parte las dudas. Si después de leerlo hay cosas que no entiendes, consulta nuevamente e intentaremos aclararte.

Referencias:

www.aprenderaprogramar.com/foros/index.php?topic=988

www.aprenderaprogramar.com/foros/index.php?topic=956

Saludos!!!

1654
Aprender a programar desde cero / Re:busqueda en visual basic 6.0
« en: 29 de Agosto 2014, 18:40 »
He intentado abrir el archivo pero no logro ejecutar, creo que por ser para 64 bits. He visto el código como código de Visual Basic para aplicaciones. No es exactamente VBA pero aquí encontrarás información sobre distintos aspectos de programación en Visual Basic: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61

1655
Me he leído la pregunta y no he entendido nada... bueno, me ha recordado a lo de la parte contratante de la primera parte es la parte contratante de la segunda parte y la parte contratante de la primera parte es...  ;)

1656
Supón que una habitación está reservada del 10 al 15 de octubre. (día 10 es fechaInicioFiltro y día 15 fechaFinalFiltro)

La fecha en que se solicita es del 8 al 12 de octubre.

FECHA_INICIO_FILTRO < fecha_inicio_reserva and FECHA_FINAL_FILTRO < fecha_inicio_reserva no se cumple


FECHA_FINAL_FILTRO > fecha_final_reserva and FECHA_INICIO_FILTRO > fecha_final_reserva no se cumple


La habitación no consta como ocupada, pero sí está ocupada, ya que basta con que haya un solape para que la solicitud no se pueda materializar (en este caso se solapa del 10 al 12 de octubre).

Yo sigo empeñado en determinar las posibilidades (AUNQUE ME EDITO Y CAMBIO LO DICHO, antes había identificado 3 posibilidades pero ahora estoy viendo cuatro):

Ejemplo 1: Solicitud dentro del intervalo de la reserva. Solicito del 10 al 15 de octubre. Hay reserva del 5 al 20 de octubre

fechaSolicitadaDeEntrada >= fechaIngresoEnLaReserva y fechaSolicitadaDeSalida<= fechaSalidaEnLaReserva


Ejemplo 2: La reserva empezó antes pero se solapa con las fechas solicitadas. solicito del 10 al 15 de octubre. Hay reserva del 7 al 12 de octubre.

fechaSolicitadaDeEntrada > fechaIngresoEnLaReserva y fechaSolicitadaDeEntrada<= fechaSalidaEnLaReserva


Ejemplo 3: La reserva empieza después pero se solapa con las fechas solicitadas. solicito del 10 al 15 de octubre. Hay reserva del 13 al 18 de octubre.

fechaSolicitadaDeEntrada < fechaEntradaEnLaReserva y fechaSolicitadaDeSalida > fechaEntradaEnLaReserva


Ejemplo 4: la reserva queda dentro del periodo solicitado. Solicito del 10 al 15 de octubre. Hay reserva del 13 al 14 de octubre.

fechaSolicitadaDeEntrada< fechaEntradaEnLaReserva y fechaSolicitadaDeSalida > fechaSalidaEnLaReserva


En estos cuatro casos la habitación no está disponible para reserva, en otro caso sí está disponible.

Eligiendo del total de habitaciones las que no cumplen con estas condiciones, tendríamos las habitaciones libres.

Aunque plantearlo sin probarlo es difícil e igual ya estoy viendo doble


1657
Sí, la idea parece buena y no había contado con ese tipo de expresiones, pero realmente lo que va buscando no es simplemente que la habitación aparezca o no en la tabla de reservas. Lo que busca (si no me equivoco) es comprobar si la habitación está libre entre una fecha de solicitud de entrada y una fecha de solicitud de salida, con lo cual hay que meterse en comprobaciones de fechas. Quizás la habitación esté en la tabla de reservas, pero si la reserva no coincide con las fechas en que se solicita, la habitación está libre para esas fechas. Por eso le he planteado como se me ha ocurrido los tres posibles casos: la solicitud empieza antes y termina durante una reserva, la solicitud está dentro de las fechas de la reserva, o la solicitud empieza en la reserva y termina después del fin de la reserva. Esos serían los tres casos que veo para decir que la habitación está ocupada. Una vez determine si la habitación está en un caso de estos, puede responder si está ocupada o está libre.

Igual hay una forma más simple de hacerlo   ::) ::) ::)

1658
Supongamos que hacemos un select

select idHabitacion from habitacion where estado='Disponible'

El resultado de este select lo metes en un arrayList que llamamos todasHabitaciones (aquí tienes todas las habitaciones).

Las habitaciones ocupadas las tienes en otro arrayList denominado ocupadasAL

Puedes determinar las habitaciones libres haciendo lo siguiente (lo que hace este ejemplo, pero aplicándolo a tu código):

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class prueba {
    public static void main (String Args[]){
        int i=0;
        List<Integer> todasHabitaciones = Arrays.asList(1, 5, 6, 9, 11, 14, 18, 32, 44);
        List<Integer> ocupadasAL = Arrays.asList(5, 9, 11, 44);
        List<Integer> libres = new ArrayList<Integer>();
        for (i=0; i<todasHabitaciones.size(); i++){
            if (ocupadasAL.contains(todasHabitaciones.get(i))) {
                // Está ocupada
                System.out.println("Habitacion " + todasHabitaciones.get(i) + " esta ocupada");
            } else {
                //Está libre
                libres.add(todasHabitaciones.get(i));

            }
        }
        System.out.println("Todas las habitaciones son: " + todasHabitaciones);
        System.out.println("Las habitaciones libres son: " + libres);
        System.out.println("Las habitaciones ocupadas son: " + ocupadasAL);
    }
}

1659
No entiendo bien el comentario que pones al final de esta sentencia:

String sqlContarHab = "Select count(*) from reserva re, habitacion ha " +"\n" +
" where ha.idhabitacion=re.idhabitacion and  '"+fechaInicio+"'  >= re.fecha_ingreso \n" +
"and '"+fechaInicio+"' <= re.fecha_salida and ha.estado='Disponible' ";  // tamaño que va a tener el array de habitaciones libres

Aquí lo que estás diciendo es que te diga el número de habitaciones que están en la tabla de habitaciones y en la tabla de reservas simultáneamente y la fechaSolicitadaDeInicio sea mayor o igual a la fecha de ingreso de la reserva y que la fechaSolicitadaDeInicio sea menor o igual a la fecha de salida de la reserva. Esto te selecciona las habitaciones que donde la solicitud está dentro de las fechas de una reserva.

En el comentario indicas <<tamaño que va a tener el array de habitaciones libres>> pero aquí en realidad lo que estás obteniendo son habitaciones que están ocupadas, y ni siquiera todas las que están ocupadas ¿? (no acabo de entender).


Supongamos una reserva1 que va del 10 al 15 de octubre y una reserva2 que va del 16 al 20 de octubre y se solicita del 8 al 17 de octubre.

Para la reserva1 la fechaIngreso no es menor que fechaInicio, por lo que no cuenta. Para la reserva2 la fechaInicio no es mayor que la fechaIngreso, por lo que no cuenta. 

No sé si me equivoco pero si planteas tres select:

1) fechaSolicitadaDeEntrada >= fechaIngresoEnLaReserva y fechaSolicitadaDeSalida<= fechaSalidaEnLaReserva

2) fechaSolicitadaDeEntrada < fechaIngresoEnLaReserva y fechaSolicitadaDeSalida<= fechaSalidaEnLaReserva

3) fechaSolicitadaDeEntrada > fechaIngresoEnLaReserva y fechaSolicitadaDeEntrada < fechaSalidaEnLaReserva

Ahí podrías almacenar las habitaciones que están ocupadas.

Luego unes esos resultados en un set para eliminar duplicados y tienes todas las habitaciones ocupadas.

Luego mostrarías todas las habitaciones disponibles menos las ocupadas..., que son las habitaciones libres disponibles para poder hacer la reserva en esa fecha  ::)

1660
No sé si estaré acertado o no, pero empezaría planteando todo el proceso desde un punto de vista de lógica a aplicar para luego pasar a crear el código:

Las posibilidades de que dada una fechaSolicitaDeEntrada y fechaSalidaSolicitada exista coincidencia con una reserva serían:


Ejemplo 1: Estamos dentro del intervalo de la reserva. Solicito del 10 al 15 de octubre. Hay reserva del 10 al 12 de octubre ó hay reserva del 10 al 15 de octubre

fechaSolicitadaDeEntrada >= fechaIngresoEnLaReserva y fechaSolicitadaDeSalida<= fechaSalidaEnLaReserva


Ejemplo 2: La reserva empezó antes pero se solapa con las fechas solicitadas. solicito del 10 al 15 de octubre. Hay reserva del 7 al 12 de octubre.

fechaSolicitadaDeEntrada < fechaIngresoEnLaReserva y fechaSolicitadaDeSalida<= fechaSalidaEnLaReserva


Ejemplo 3: La solicitud empieza en un día de reserva y termina fuera de la reserva. solicito del 10 al 15 de octubre. Hay reserva del 13 al 18 de octubre.

fechaSolicitadaDeEntrada > fechaIngresoEnLaReserva y fechaSolicitadaDeEntrada < fechaSalidaEnLaReserva


En estos tres casos la habitación no está disponible para reserva, en otro caso sí está disponible.


También lo podemos plantear al revés:

Si fechaSolicitadaEntrada<fechaIngresoEnLaReserva y fechaSolicitadaSalida < fechaIngresoEnLaReserva -- > la habitación está libre (se intenta tomar antes de la reserva)

Si fechaSolicitadaEntrada > fechaSalidaEnLaReserva -- > la habitación está libre (se intenta tomar después)



Ahora esbozando lo que sería el proceso en código:

Código: [Seleccionar]

$arrayDeIdHabitaciones -- > Almacenamos aquí cada id de habitación

Ahora hacemos un bucle:

Para cada idHabitación "idHabitac" en $arrayDeHabitaciones

{
arraySeleccion = Seleccionar las filas de la tabla reservas donde (idHabitac sea igual a idHabitacion de esa fila)

Para cada fila en arraySeleccion {
(Si fechaSolicitadaEntrada<fechaIngresoEnLaReserva y fechaSolicitadaSalida < fechaIngresoEnLaReserva) ó
(fechaSolicitadaEntrada > fechaSalidaEnLaReserva) ENTONCES {estadoHabitacion[idHabitacion] = 'DISPONIBLE'; disponible[i]=idHabitacion)
ELSE
{estadoHabitacion[idHabitacion] = 'OCUPADA'}

}

}


Finalmente, mostramos las habitaciones disponibles (todas las que existan en array disponible)

El proceso lo veo un poco laborioso pero al menos creo que con esto se llegaría al resultado deseado. Quizás haya que hacer algunos ajustes y pruebas  ::)

Páginas: 1 ... 78 79 80 81 82 [83] 84 85 86 87 88 ... 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".