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 - Alex Rodríguez

Páginas: 1 ... 64 65 66 67 68 [69] 70 71 72 73 74 ... 93
1361
Dado que se trata de un nuevo problema, debe abrirse un nuevo tema de conversación para no alargar. Movemos el último mensaje a un nuevo tema. Saludos.

1362
Sí, me equivoqué al escribir la etiqueta bbc bcc  :-X

Después de ver el foro de Daniel y dado que se ve un buen nivel en distintas materias como mSL (mIRC Scripting Language), bots, mIRC, IRcap, etc. y que invita a participar, aquí está el enlace para quien quiera visitarlo: http://www.argentinairc.net/Foro/

Suerte con todo!

1363
Comunidad / Re:Presentación
« en: 20 de Octubre 2014, 09:52 »
Hola Daniel!!! En primer lugar gracias por tus comentarios (y en especial por el comentario que me dedicas que creo es extensible a todos los moderadores, no todas las personas reconocen la labor que desarrollamos aquí. Con Mario a la cabeza, cuando se decidió montar el sitio web y los foros nos propusimos hacerlo con la firme intención de apostar por los contenidos de calidad porque en internet se encontraban demasiados contenidos "basura" o "desordenados". Ciertamente no es fácil ni mantener un sitio web ni un foro con criterios de calidad, orden, etc. pero al menos lo intentamos a pesar de las dificultades. Igualmente tratamos de mantener unos mínimos en cuanto a educación, forma de escribir, etc. al mismo tiempo que tratamos de dar libertad para que cada cual se exprese como prefiera.

Hay una cosa que no se entiende mucho, y es que programes en mSL antes que en otros lenguajes que se supone que son más básicos como Python. ¿Por qué?

Sobre tu pequeño aporte, hemos de darte las gracias porque efectivamente no conocíamos la etiqueta [nobcc], como dices nos valíamos de espacios para evitar que se aplicara la etiqueta y poder explicar cosas relacionadas, pero esa aportación tuya nos va a servir para no tener que usar espacios o trucos similares y poder escribir las etiquetas tal cual, así que nuevamente muchas gracias por esa información.

La tarea de mantener un foro es bastante complicada, nosotros aunque haya varias personas ayudando no dejamos de tener dificultades: falta de tiempo para responder a todo lo que se solicita, hackers que intentan volar por los aires todo, spammers que continuamente insertan contenidos basura... me imagino que ya tendrás experiencia con todo esto.

Un mensaje como el tuyo ¿parece algo loco? Para nada, es un mensaje muy claro y muy bien escrito, que además te aseguro que todos los moderadores y colaboradores agradecerán cuando lean.

Python es un lenguaje interesante, aunque aquí no lo tratamos demasiado. Seguro que puedes aportarnos cosas sobre Python o responder a cuestiones para echarnos una mano!!!

Pásame el enlace a tu foro por privado, lo miraré y te comentaré algo sobre el mismo. Igualmente un abrazo y suerte con todo!!!

1364
Hola, si pruebas el código que indica la solución del ejercicio debería funcionarte:

Código: [Seleccionar]
<html>
<head>
<title>Cursos aprenderaprogramar.com </title>
<meta charset="utf-8" />
<style type="text/css">
ul.especial li:nth-child(odd) {background-color: grey;}
ul.especial li:nth-child(even) {background-color: pink;}
</style>
</head>
<body>

<ul class="especial">
<li><a href="#">Inicio</a></li>
<li> <a href="libros.html">Libros de programación</a> </li>
<li> <a href="cursos.html">Cursos de programación</a> </li>
<li> <a href="humor.html">Humor informático</a> </li>
</ul>
<!-- fin menu -->
</body>
</html>

¿Esto no te funciona?

1365
Si no puedes avanzar en algún momento pega el código para tratar de ayudarte con el punto donde tengas problemas. También es útil que cuando tengas el código funcionando correctamente lo pegues para que otras personas con la misma duda puedan orientarse gracias a tu código. Aquí tienes explicado cómo pegar código: https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Saludos!!!!!

1366
Hola, si has leído algo en los foros habrás visto comentarios como que:

"La recursividad es difícil de entender"

"La recursividad es difícil de depurar"

"Hay programadores expertos que llevan muchos años programando y que no usan recursividad por su complejidad"

En todo esto hay parte de verdad, nosotros por ejemplo no la introducimos en los cursos básicos de aprendizaje de la programación por su complejidad.

Lo primero que deberías hacer si aún así quieres tratar de entenderla es ver un programa clásico y tratar de entender lo que hace. El programa ejemplo clásico de recursividad es el cálculo del factorial de un número. El factorial es el producto de ese número por todos sus antecesores hasta llegar a 1. Por ejemplo el factorial de 5 es 5*4*3*2*1 = 120 y el factorial de 3 es 3*2*1 = 6.

El factorial se puede calcular sin usar recursividad, o usándola, según se prefiera. El código recursivo es:

Código: [Seleccionar]


#include<stdio.h>
 
long factorial(int);
 
int main()
{
  int n;
  long f;
 
  printf("Ingrese el entero del que desea calcular el factorial\n");
  scanf("%d", &n);
 
  if (n < 0)
    printf("Los enteros negativos no estan permitidos.\n");
  else
  {
    f = factorial(n);
    printf("%d! = %ld\n", n, f);
  }
 
  return 0;
}
 
long factorial(int n)
{
  if (n == 0)
    return 1;
  else
    return(n * factorial(n-1));
}

En la recursividad tenemos estos factores importantes:

a) Una función se llama a sí misma

b) En cada llamada, tiene que haber algo que permita una evolución (si no estaríamos en una autollamada tipo bucle infinitio)

c) Tiene que existir una situación en la que ya no hay una nueva autollamada, sino un resultado o acción. Esta situación se denomina caso base y permite que se salga de la recursión.

En el ejemplo que hemos puesto la función es factorial.

El caso base es if (n==0) return 1;

La llamada recursiva (autollamada se produce en return(n* factorial (n-1));

La evolución se produce porque en cada llamada la función se llama con un entero una unidad inferior al entero con que se llamó anteriormente.

Por ejemplo si tú llamas factorial(4), cuando llega al return sel llama return (4*factorial(3)); , en la siguiente pasada se llama return (3*factorial(2)); ...

Pongamos por caso que se va a calcular factorial(3)

Empieza la ejecución de la función. Se comprueba si n vale cero y no es cierto (n vale 3), por lo que se produce que la función devuelve 3*(factorial(2));

Ahora se procede a calcular factorial (2) y nos devuelve 2*factorial(1) con lo cual en glogal tenemos 3*2*factorial(1)

Ahora se procede a calcular factorial(1) y nos devuelve 1*factorial(0) con lo cual en global tenemos 3*2*1*factorial(0)

Ahora se comprueba que n==0 por lo que la función devuelve 1 y nos queda 3*2*1*1 = 6

Si te fijas en realidad podríamos haber escrito if(n==1) return 1 y nos ahorramos hacer 1*1 que no sirve para mucho.

Con esto creo que podrías analizar el código y responder el ejercicio... a ver si puedes, coméntanos lo que te salga...

Saludos

1367
Hola, más abajo te indico el código solución, pero este es un ejercicio que si no has sido capaz de resolverlo es porque probablemente no estás siguiendo un orden adecuado en el aprendizaje de conocimientos. Para tener la base necesaria y seguir un orden adecuado te recomiendo que sigas el siguiente curso: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188


El código con la solución:

Código: [Seleccionar]
import java.util.Scanner;
public class DD {
    public static void main(String[]args){
        Scanner teclado=new Scanner(System.in);
        boolean elNumeroEsta = false;

        int num[]=new int[2];
        int x;
        for(x=0;x<num.length;x++){
            System.out.print("ingrese un numero: ");
            num[x]=teclado.nextInt();
        }
        for(x=0;x<num.length;x++){
            System.out.println(num[x]);
        }

        System.out.print("buscar numero: ");
        int numero;
        numero=teclado.nextInt();

        for(x=0;x<num.length;x++){
            if (numero == num[x]) {
                System.out.println("El numero esta en el indice "+x+", en la posicion "+(x+1));
                elNumeroEsta = true;
            }
        }

        if(elNumeroEsta ==false) {
            System.out.println("El numero no esta");
        }
    }
}

Saludos

1368
Tienes razón, se quedó atrás que faltaba por inicializar ese atributo. Saludos

1369
Hola, el error que me ha saltado al ejecutar es: java.lang.ArrayIndexOutOfBoundsException: 0 at Vigenere.main(Vigenere.java:280)


Eso corresponde a esta parte del código:

Código: [Seleccionar]
    switch(op){
                case 1:
                    System.out.println("Introduzca el nombre del archico que contenga el mensaje a cifrar: ");

    try{
lector= new BufferedReader(new FileReader (args[0]));
escritor= new PrintWriter(new FileWriter (args[1]));


Lo que me extraña aquí es lo siguiente: args[0] y args[1] son parámetros que se le pasan al método main a la hora de invocar la ejecución del programa, es decir, que cuando el programa empieza a ejecutarse ya existen esos datos.

Sin embargo tú estás indicando "Introduzca el nombre del archico que contenga el mensaje a cifrar: "

Si el nombre de archivo lo quieres pasar como parámetro de ejecución del programa no tendrías que pedirlo después, o si lo quieres pedir para que se introduzca por teclado no tendría sentido usar args[0] ni args[1]

Si quieres que se introduzca por teclado el nombre de archivo, tienes que tener en cuenta que si el usuario introduce "datos.txt", ese archivo deberá estar en la misma carpeta donde tienes el código del programa. Si no es así tendrías que poner la ruta completa, por ejemplo C:/Users/Jose/Desktop/datos.txt

Para que sea el usuario quien introduzca el nombre del archivo puedes usar la clase Scanner, aquí tienes un ejemplo de cómo se usa: 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

Aunque antes de introducir eso yo haría una prueba sencilla: usa un código del tipo FileReader fr = new FileReader("datos.txt"); para crear el FileReader y lo mismo para el FileWriter, prueba el programa así, y si te funciona todo bien luego introduce la entrada de la ruta del fichero a través del teclado.

Saludos

1370
¿Dónde está el adjunto? Lo he buscado pero no lo veo.

La variable i es el día en curso, pero se refiere al día del mes. Por ejemplo, 3, 10 ó 27. Pero puedes recuperar la representación de la fecha completa, ya que tienes String.valueOf(i) + "-BLUE"+ "-"+ getMonthAsString(currentMonth)+ "-" +yy

Ahí está construyendo la fecha completa.

Para calcular la diferencia en días entre fechas tienes una explicación en las entregas CU00924C y CU00925C de este curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=58&Itemid=180, aunque si estás usando java 8 tal y como se indica ahí <<Si trabajamos con Java 8 o superior, se recomienda el uso de las clases incluidas dentro del paquete java.time para el manejo de tiempos y fechas>>

1371
Hola, te indico lo que tendrías que hacer paso por paso:

a) Crear una clase cuyo nombre sea MatrizCuadrada

b) Crear un atributo denominado elementos que sea un array bidimensional de tipo Integer

c) Crear un atributo denominado dimension que sea de tipo int

d) Crear un constructor sin parámetros denominado MatrizCuadrada

e) Crear un constructor con parámetros. El parámetro que debe recibir es un array bidimensional con nombre de parámetro elementos. Luego tendrás que hacer que this.elementos = elementos;

f) Crear un constructor con parámetros. El parámetro que debe recibir es un valor de tipo int con nombre de parámetro dimension. Luego tendrás que hacer que this.dimension = dimension;

g) Crear un método sumar que reciba como parámetro un objeto de tipo MatrizCuadrada y con nombre de parámetro matriz. Este método debe tener como tipo de retorno el tipo MatrizCuadrada. Se entiende que lo que debe hacer el método es devolver el resultado de sumar la MatrizCuadrada de this con la matriz cuadrada recibida como parámetro.

h) Crear un método multiplicar que reciba como parámetro un objeto de tipo MatrizCuadrada y con nombre de parámetro matriz. Este método debe tener como tipo de retorno el tipo MatrizCuadrada. Se entiende que lo que debe hacer el método es devolver el resultado de multiplicar la MatrizCuadrada de this con la matriz cuadrada recibida como parámetro.

i) Crear un método toString()  que sobreescribe el método toString() de Object. Este método deberá devolver una representación en forma de cadena de la matriz. Por ejemplo:
12    34      33
66    55      11
2      77      18

Ten en cuenta que este método debe devolver un objeto String, no tiene que mostrar nada por pantalla, sino únicamente devolver el String.

j) Finalmente crear una clase con el main donde hagas las pruebas.

Te recomiendo que vayas haciendo el ejercicio paso a paso, compilando cada paso y comprobando que no te da errores ni problemas.

Si no comprendes los conceptos mencionados es que te falta la base necesaria para poder resolver el ejercicio. En este curso tienes todos los conceptos necesarios: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Si quieres puedes ir pegando el código a medida que vayas haciéndolo e intentaremos ir dándote orientación.

Saludos

1372
Hola, pon por favor el código completo de todas las clases que intervengan de modo que se pueda compilar o al menos tenerlo tal y como lo tienes tú, de ese modo nos resultará más fácil revisarlo. Saludos!

1373
Si pulsas el botón # encima del espacio donde escribes te aparecerán las etiquetas y dentro de esas etiquetas escribe el código. Luego pulsa previsualizar y se tiene que ver así:

Código: [Seleccionar]
if(loma.size() ==1)
        {
            loma = lomas;
        }
        else
        {
            ArrayList<Integer> primLoma = primera(lomas,p,true);
            loma = mejor(lomas,p);
            if(primLoma.size()>loma.size())
            {

Por otro lado, el código que has pegado no es la clase completa, no se puede compilar. Pega el código de la clase completa para poder intentar compilarlo, si no no se puede compilar.

Saludos

1374
Hola, pega el código de las clases que estés utilizando (para que podamos compilarlo y ver cuál es el problema). Para ello escribe el nombre de la clase, deja una línea en blanco y pulsa el botón # del editor del foro. Pega el código entre las etiquetas [cod] ... [/cod] Luego pulsa previsualizar para comprobar que se ve bien y luego pulsa publicar.

Debe quedar algo así:

Clase 1

Código: [Seleccionar]
cod
cod
lineas de codigo...

Clase 2

Código: [Seleccionar]
cod
cod
lineas de codigo...

Saludos

1375
Piensa que el conocimiento en el mundo de la programación es acumulativo: en general todo lo que aprendas te servirá luego para usarlo en otro entorno o lenguaje. Si aprendes WinForms te serivá luego para WPF y si aprender WPF también te servirá para WinForms. Lo importante es que trates de entender la lógica de las cosas, por ejemplo si haces un programa y funciona bien no quedarte contento conque funcione bien y ya está, sino saber por qué funciona bien. Si vas aprendiendo la lógica podrás aplicar esa lógica en distintos entornos y así conseguir un buen nivel en programación.

1376
Hola, como casi todo en programación son alternativas y ambas son hoy día posibilidades que tienes para elegir. Windows Forms (WinForms) es la alternativa más tradicional y que más tiempo lleva usándose, por tanto si trabajas con Windows Forms tienes la ventaja de encontrar más documentación y ejemplos en la web que si trabajas con Windows Presentation Foundation (WPF).

De cara al futuro, WPF se supone que es la tecnología emergente y que acabará por imponerse (es decir, se supone que WinForms desaparecerá en el futuro) del mismo modo que HTML 5 se supone se convertirá en estándar a seguir. WPF enfoca la programación de otra manera y podemos decir que es más potente que WinForms. ¿Cuál es el problema? Por un lado que al ser una tecnología emergente puede que no sea tan estable como te gustaría, puede tener incompatibilidades hacia atrás, etc.

Recomendación: si es para aprendizaje de la programación usar WinForms, y cuando tengas un buen nivel con WinForms si quieres pásate a WPF.

Saludos

1377
¿No puedes pegar lo que falte de código en otro post?

Por lo que se ve, la variable i representa el día del mes que se va a mostrar.

De la misma forma que en el código tienes

 if (i== getCurrentDayOfMonth()){
                    list.add(String.valueOf(i) + "-BLUE"+ "-"+ getMonthAsString(currentMonth)+ "-" +yy);

Tendrías que añadir

if ( la fecha es dia de trabajo) {hacer esto } sino { hacer esto otro}

Piensa inicialmente simplemente en añadir un texto para que se muestre en el calendario, eso te dará la lógica y una vez tengas la lógica ya sólo te faltarían los detalles.

El contenido del calendario parece que lo almacena en la varialbe list.

La variable list es un ArrayList  y la puedes recorrer y en ese recorrido añadir el texto que tú quieres:

    for (int i=0; i<list.size(); i++){
                  if ( la fecha es dia de trabajo) {list.get(i) = list.get(i)+"(trabajo)" ); } sino {list.get(i) = list.get(i)+"(libre)" );}
                 
               }


Tienes que hacer pruebas hasta conseguir que se te muestre correctamente, luego ya introduces los colores como quieras...

Saludos

1378
En este curso tienes todos los conceptos básicos que necesitas: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

El ArrayList que necesitas dices que es bidimensional ¿por qué tiene que ser bidimensional? Si simplemente vas a almacenar series de números ¿no te vale con un ArrayList unidimensional?


1379
Trata de no abordar todo el problema de golpe porque es complejo. En lugar de abordarlo todo, intenta definir primero las partes del programa. Por ejemplo necesitarás una clase Java que se puede denominar <<Loma>> que tenga como atributo un ArrayList de integer y que tenga métodos para recuperar un elemento del arrayList a partir del índice, para obtener las pendientes existentes dentro de la loma (esto puede ser un método que devuelva un ArrayList de integer que contenga las pendientes de la loma), para recuperar la loma completa, para establecer la loma completa, etc.

Una vez tengas esto, pasarías al diseño de la siguiente clase y así sucesivamente hasta que el proceso recursivo lo definas al final ya usando todas las clases previas que hayas creado. Vete pegando el código que vayas creando para tratar de corregirte o ayudarte donde tengas problemas.

Saludos

1380
Hola, pega el código de las clases que participan para poder compilarlo y revisarlo. Para ello usa el botón # que aparece en el editor del foro (pegar el código entre las etiquetas [cod] ... [/cod]). Si el código es demasiado largo o intervienen demasiadas clases puedes ponerlo como archivo adjuntos pulsando en "Opciones adicionales" en la parte inferior del editor del foro

Saludos!

Páginas: 1 ... 64 65 66 67 68 [69] 70 71 72 73 74 ... 93

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".