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 ... 20 21 22 23 24 [25] 26 27 28 29 30 ... 100
481
Buenas Pepote21, respuestas bien y el código funciona bien; creo que hay un aspecto donde no estás cumpliendo con lo que pedía el enunciado del ejercicio. El ejercicio pedía "Al pulsar sobre el botón cambiar a inglés, debes acceder a los nodos del DOM de tipo label y usando relaciones de parentesco entre nodos acceder a aquellos nodos cuyo nodeValue es Nombre:, Apellidos:, y Correo electrónico: y cambiar su nodeValue por Name:, Surname: y e-mail:."

Por lo que veo en tu respuesta estás usando cambiarAIngles('span') de modo que no estás accediendo al nodo label, sino al nodo span

Salu2

483
Buenas, puedes guiarte por el siguiente ejemplo de cómo se calcula la letra del dni usando JavaScript:

Código: [Seleccionar]
function nif(dni) {
  var numero
  var letr
  var letra
  var expresion_regular_dni
 
  expresion_regular_dni = /^\d{8}[a-zA-Z]$/;
 
  if(expresion_regular_dni.test (dni) == true){
     numero = dni.substr(0,dni.length-1);
     letr = dni.substr(dni.length-1,1);
     numero = numero % 23;
     letra='TRWAGMYFPDXBNJZSQVHLCKET';
     letra=letra.substring(numero,numero+1);
    if (letra!=letr.toUpperCase()) {
       alert('Dni erroneo, la letra del NIF no se corresponde');
     }else{
       alert('Dni correcto');
     }
  }else{
     alert('Dni erroneo, formato no válido');
   }
}

La explicación es esta:

La letra se calcula cogiendo todas las letras, excepto la Ñ, la I y la O porque pueden inducir a errores, en un orden concreto (que no es el orden alfabético lógico, sino este ‘TRWAGMYFPDXBNJZSQVHLCKET’) y seleccionando la que coincide en la posición igual al resto de dividir el número del dni entre 23

1º La función recibe una variable con el DNI como string.

2º Tras definir las variables creamos una expresión regular que valida si el DNI está compuesto por 8 letras y un caracter, ya sea en mayúscula o minúscula.

3º Extraemos el número del DNI (es decir, un substring con la longitud del DNI entero menos una letra) y la letra (un substring de un solo caracter que empieza en la posición de la longitud total menos uno).

4º Hacemos la operación de módulo entre el número extraído y 23, reutilizando la variable número para almacenar el resultado. Hacemos esto porque lo necesitamos para calcular si la letra del NIF es válida.

5º Creamos una string con las letras del abecedario ( sin la ñ) en ese orden que se pone arriba.

6º Cogemos un substring de un solo caracter de esa cadena de letras que empiece en la posición marcada por el número que conseguimos en el punto cuatro al hacer la operación de módulo, reutilizando la variable módulo.

7º Comprobamos que la letra cogida de la cadena de letras sea igual a la letra cogida del DNI. Si se cumple la condición sacamos un aviso de que es correcto y si no sacamos el de error.

Salu2

484
Buenas javaquery, para responder a este ejercicio sería bueno que vieras los conceptos de programación orientada a objetos explicados en el curso de Java básico: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Comentar:

- Normalmente todos los nombres de clase empiezan por mayúscula siguiendo convención camelCase (lo has hecho bien) y todos los nombres de atributo o métodos comienzan por minúscula siguiendo también convención camelCase

En lugar de obtenernombre sería obtenerNombre

- Los métodos para obtener se suelen escribir como getNombreDelAtributo por ejemplo getNombre

- Te faltarían los métodos para establecer que se suelen escribir como setNombreDelAtributo por ejemplo setNombre

Según el enunciado del ejercicio cada persona podríamos hacer un diseño distinto. Una primera idea que se me ocurre sería algo como:

Clase Aplicacion, con el atributo listaDeProyectos (lista de objetos de tipo Proyecto)

Clase Proyecto con el atributo idProyecto (int identificador del proyecto), jefeDeProyecto (de tipo JefeDeProyecto), nombreDeProyecto (de tipo String), fechaDeComienzo (puede ponerse tipo String) , listaDeActividadesDelProyecto (de tipo Lista de Actividad)

Clase Persona, con los atributos nombre, DNI y puestoQueOcupa.

Clase JefeDeProyecto, que heredará de Persona. Además de los atributos de persona, tendrá como atributo ListaDeProyectosGestionada (esto será un array de capacidad 3  elementos correspondientes a los tres proyectos que puede gestionar un proyecto)

Clase Programador

Clase Actividad, con los atributos nombreActividad (String), listaDeProgramadoresAsignados (de tipo Lista de Programadores)

Hay un detalle de diseño problemático: si introduces como atributo de Proyecto un jefe de proyecto, y en la clase JefeDeProyecto un atributo ListaDeProyectosGestionada, tendrías información duplicada. Para evitarlo, habría que elegir el incluir esta información en una sola clase. Lo mismo ocurre con la asignación de actividades a programadores.

Para saber los proyectos gestionados por un jefe de proyecto, tendrías que recorrer la listaDeProyectos de la aplicación, y para cada proyecto comprobar quién es el jefe de proyecto.

Esto es una idea, habría que plantearlo con más calma y ver si serían necesarias mejoras o cambios

Salu2

485
Buenas vanepeke2, por un lado no veo dónde cargas jquery, supongo que es en la llamada al archivo config.inc.php

Por otro lado esta consulta es extraña:

$sql = "SELECT * FROM nieto WHERE nieto LIKE '%" .$busqueda. "%' ORDER BY idnieto";

¿La tabla se llama nieto y el campo se llama nieto? Eso parece extraño...

Salu2

486
Buenas Pandemia, en la consola de depuración he obtenido algunos errores al revisar el ejercicio

TypeError: correo.tolowerCase is not a function debe ser toLowerCase

TypeError: correo.replce is not a function

He introducido un correo válido y me ha aparecido el mensaje Su correo electronico deberia tener un '@' y un '.

Es conveniente que revises el código, vuelvas a re-escribirlo y hagas pruebas para comprobar que funcione correctamente

Salu2

488
Buenas, ejercicio bien resuelto. Lo único que mejoraría es el nombre de las clases. En lugar de OrdenarPorCurso podría ser ComparadorOrdenPorCurso o algo similar

Salu2

489
Buenas HumbertoAli, tu ejercicio está bien resuelto. Si quisieras mostrar los resultados tal y como se indica en el enunciado del ejercicio, deberías saber hacerlo ya que se trata de un conocimiento básico que se explica en el curso de Java básico http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Puedes fijarte en la solución aportada por otros compañeros para saber cómo hacerlo, por ejemplo https://www.aprenderaprogramar.com/foros/index.php?topic=5990.0

Salu2

490
Buenas HumbertoAli, en la entrega CUU00903C hay dos ejercicios y falta el primero, es conveniente poner siempre todos los ejercicios de una entrega juntos en el mismo hilo del foro.

El programa funciona correctamente y cumple con lo que se pedía

Te indico como mejorable que cuando trabajas con programación orientada a objetos tienes que poner nombres adecuados a las clases, pensando en qué representa o qué función tiene una clase. Un nombre de clase como Calificaciones no lo veo del todo adecuado, pues la clase no representa simplemente calificaciones, sino que hace algo más amplio. Un nombre como GestorCalificaciones creo que sería más adecuado.

Salu2

491
Buenas HumbertoAli, el ejercicio cumple con lo pedido aunque te indico algunas cosas

La clase InstalacionDeportes no sería necesaria, no es necesario tener una clase abstracta intermediaria. Las clases Polideportivo y OficinaDeportiva ya serían clases concretas.

Parece que hubieras utilizado esa clase abstracta para poder crear las instancias de objetos de la lista:

List <InstalacionDeportes> miLista = new ArrayList <InstalacionDeportes>();

Pero realmente podrías definir como tipo para la lista un tipo de interface, instanciando luego con una clase concreta:

ArrayList<Edificio> listaEdificios = new ArrayList<Edificio>();

En este enlace puedes revisar una buena solución: https://www.aprenderaprogramar.com/foros/index.php?topic=2965.0

Salu2

492
Buenas, puede intentarse la sustitución del separador decimal por el separador correcto (según la configuración regional)

La idea para un textbox es esta:

Código: [Seleccionar]
Private Sub TextBoxOnKeyPress(sender As Object, e As KeyPressEventArgs)

    If ((e.KeyChar = "."c) OrElse (e.KeyChar = ","c)) Then
        ' Obtenemos el carácter separador decimal existente
        ' actualmente en la configuración regional de Windows.
        '
        e.KeyChar = _
            Threading.Thread.CurrentThread. _
            CurrentCulture.NumberFormat.NumberDecimalSeparator.Chars(0)

    End If

End Sub

Y generalizado para todos los textbox:

Código: [Seleccionar]
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    ' Instalamos el controlador para el evento KeyPress
    ' de todos los controles TextBox existentes en
    ' el formulario.
    '
    For Each ctrl As Control In Controls

        If (TypeOf ctrl Is TextBox) Then _
            AddHandler ctrl.KeyPress, AddressOf TextBoxOnKeyPress

    Next

End Sub

Habría otras formas de hacerlo, por ejemplo con funciones para cadenas

Salu2

493
Buenas, no estoy seguro de lo que puede estar pasando pero veo un diseño de código un tanto extraño. Te recomendaría seguir la forma de diseño y ejemplos que se dan en el curso de Ajax disponible en http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=83&Itemid=212

Salu2

494
Buenas, este código serviría para contar la frecuencia de aparición de letras:

Código: [Seleccionar]
#include <stdio.h>
#include <string.h>
 
void find_frequency(char [], int []);
 
int main()
{
   char string[100];
   int c, count[26] = {0};
 
   printf("Input a string\n");
   gets(string);
 
   find_frequency(string, count);
 
   printf("Character Count\n");
 
   for (c = 0 ; c < 26 ; c++)
      printf("%c \t  %d\n", c + 'a', count[c]);
 
   return 0;
}
 
void find_frequency(char s[], int count[]) {
   int c = 0;
 
   while (s[c] != '\0') {
      if (s[c] >= 'a' && s[c] <= 'z' )
         count[s[c]-'a']++;
      c++;
   }
}

Salu2

495
Buenas mannybrenes ¿cuál es el problema con el código que presentas? ¿Te da un mensaje de error?

Salu2

496
Buenas

Es recomendable que incluyas el código con el que estás trabajando y resto de recomendaciones que se indican en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 para poder obtener respuesta

En el cursod de Ajax disponible en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=57&Itemid=86 hay ejemplos interesantes de Ajax

Salu2

497
Buenas JuansT, funciona correctamente y se ve un código compacto y bien construido

Salu2

498
Buenas Pepote21, el ejercicio hace lo que se pedía pero hay detalles en el código que se pueden mejorar

Si no has hecho el curso de java desde cero http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188 te recomiendo que lo hagas pues ahí se explican o repasan muchos conceptos importantes

Definir el atributo numZona puede ser razonable en algunos casos. No obstante en este caso el ejercicio no lo pide, por ello es preferible ceñirse a lo que dice el ejercicio. El ejercicio se puede resolver sin necesidad de definir numZona

Haces cosas como estas conversiones (int)(rnd.nextDouble()*110+41) que no resultan necesarias

En este hilo puedes ver una forma de diseño alternativa: https://www.aprenderaprogramar.com/foros/index.php?topic=5897.0

Creo que si no has hecho el curso que te he comentado sería recomendable

Salu2

499
Buenas, sobre el ejercicio comentar

- Debes comprobar que el código compile. Al intentar compilarlo me ha salido el mensaje cannot find symbol - class Scanner porque faltaba el import java.util.Scanner; (ya lo he añadido yo). También faltaba import java.util.Locale; (ya lo he añadido)

- Para acostumbrarte a hacer programación orientada a objetos sería preferible que definas clases, por ejemplo en este ejercicio podrías haber definido dos clases: Alumno, y TestAlumno (clase con el main)

- Debes acostumbrarte a poner nombres adecuados a las clases, lee https://www.aprenderaprogramar.com/foros/index.php?topic=3035.msg13698#msg13698 para ver cómo hacerlo

- Hay cosas que no queda muy claro si las haces con algún fin o si lo haces sin un fin

Por ejemplo el método introNum podría definirse así:

    public void introNum(){
        System.out.println("Introduzca el número de alumnos");
        n=sc.nextInt();
    }

Tú has definido el método con un return, pero ese return no tiene utilidad (al menos en este código). No está mal como lo has hecho, pero no está claro si lo haces por una posible utilidad futura o si es un mal diseño.


Salu2

500
Buenas Pepote21, lo primero es pedirte que todos los ejercicios de una entrega de un curso los pongas juntos en el mismo hilo.

También pedirte que para poner título a los temas lo hagas según se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Voy a revisarlo, luego trataré de buscar el hilo del ejercicio 1 para unirlo y que queden los dos ejercicios juntos

Salu2

Páginas: 1 ... 20 21 22 23 24 [25] 26 27 28 29 30 ... 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".