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 ... 72 73 74 75 76 [77] 78 79 80 81 82 ... 93
1521
Este sería el algoritmo del martingala con lo que creo que sería un diseño que podría funcionar (aunque habría que probarlo desarrollándolo en un lenguaje para comprobarlo). Con este algoritmo contaríamos el número de partidas perdidas en una variable PartidasPerdidas. El dinero perdido lo contabilizamos en la variable Pérdidas.


función obtenerNuevosParámetros() {

si apuestaGanada = verdadero Entonces
   Objetivo = Balance*0.01
   Apuesta = Objetivo*1.1   
   PartidasPerdidas = PartidasPerdidas - 1;
Fin Si

Si apuestaGanada = falso Entonces
   Balance=Balance-Apuesta;
   PartidasPerdidas = PartidasPerdidas + 1;
   Pérdidas = Pérdidas + Apuesta;
   Apuesta = (Pérdidas + ObjetivoInicial)*1.1
FinSi

}



ProgramaPrincipal

Inicio
Pérdidas = 0;
PartidasPerdidas = 0;
Balance = 1000; //Establecemos un balance inicial para comenzar la partida
finPartida = falso;
ObjetivoOriginal = Balance*0.01;
Objetivo = Balance * 0.01;
Apuesta = Objetivo*1.1;
Pérdidas = 0;

Mientras finPartida = falso Hacer

apuestaGanada = resultadoDeApostar() //Nos devuelve verdadero si ganamos o falso si perdemos

obtenerNuevosParámetros() //La función determina los nuevos parámetros para la siguiente ronda

finPartida = chequearCondicionFinPartida() //Si se cumple la condición finPartida será verdadero

finMientras

Fin

FinProgramaPrincipal

1522
Según el algoritmo que has puesto veo que la idea no es exactamente como yo la había planteado. Según este algoritmo creo que la partida si el jugador va ganando discurriría así:

Balance = 1000
Objetivo = 10
Aganar = 10

Apostado = 10 * 1,1 = 11

Ganamos la apuesta y balance = 1000 + 10 = 1010

Objetivo = 1010 * 0,01 = 10.10

Aganar = 10.10

Apostado = 11.11

Ganamos la apuesta y balance = 1010 + 10.10 = 1020.1

Objetivo = 1020.1 * 0.01 = 10.201

Aganar = 10.201

Apostado = Aganar*1.1 = 11.2211



Aquí hay una cosa que no entiendo:

Según esto se van generando números con decimales, por ejemplo 11.2211 ¿Cómo se puede trabajar con estos decimales si estuviéramos jugando con fichas o con monedas? Normalmente se trabaja con números enteros, por eso en el ejemplo que puse antes todos los números eran números redondos. ¿Cómo se resolvería el problema de los decimales?


1523
Hola y saludos desde España,  lo primero que tendría que preguntarte es con qué lenguaje estás desarrollando el programa, si es que lo has empezado a desarrollar con algún lenguaje.

Y para tratar de entender antes de nada me gustaría entender cómo se desarrollaría una partida con martingala si yo soy un jugador.

Te digo lo que he entendido. Soy un jugador y empiezo con 110 puntos (o dólares, o lo que sea). Los apuesto y gano. Entonces la banca me da lo que jugué y además 100 puntos adicionales por haber ganado. Ahora tengo 210 puntos.

¿Ahora vuelvo a aportar 110 puntos o puedo apostar otra cantidad?

Supongamos que apuesto otros 110 puntos y vuelvo a ganar. Ahora tengo 210 + 110 = 320 puntos.

Vuelvo a apostar y gano, ahora tengo 430 puntos.

Vuelvo a apostar y gano, ahora tengo 540 puntos.

Vuelvo a apostar y pierdo, he perdido 110 y vuelvo a tener 430 puntos

¿Ahora apuesto 220 para recuperar lo que perdí en la anterior tirada?

Perdona si te parecen dudas básicas...

1524
Si puedes poner el código que te funcionó te lo agradecemos pues será útil si se presenta el mismo problema, saludos

1525
Hola, el código está correcto y se ajusta a lo que se pedía. Como único detalle a comentar, vería más correcto que el método setCasado tuviera este código:

Código: [Seleccionar]
    public void setCasado(boolean valorCasado){casado = valorCasado;
        System.out.println("Ha cambiado el valor de estado civil del médico. Ahora casado vale "+ casado);}

Tal y como lo escribes tú: el medico ha indicado que ("+ casado +") esta casado"

sería incorrecto porque te aparecería por pantalla "el médico ha indicado que true está casado" por ejemplo, lo cual no es lógico.

Saludos.

1526
Si defines tu estructura de datos como pila, para poder modificar la posición de un elemento tienes que sacar todos los elementos que tienes encima del que quieres modificar, luego modificarlo, y luego volver a poner todos los elementos que tienes encima. Las reglas de operación de una pila dicen que sólo se puede acceder al elemento en la cima de la pila.

Imagina que tienes un mástil y que en ese mástil vas introduciendo neumáticos en cuya parte interna tienes algo escrito. Para acceder a un neumático, tienes que sacar primero todos los que tengas encima, si no lo haces no puedes ver lo que hay escrito en la parte interna del neumático.

Algo parecido a esto:



1527
Depende de la implementación de pila que uses. Si usas la implementación de pila del api de Java, no puedes acceder para modificar a un elemento de la pila excepto a la cima. Sí puedes, en cambio, buscar un elemento dentro de una pila y determinar su posición (pero no acceder a él).

1529
Prueba a escribir {"1", "2", "3" } y pulsar OK

O bien Prueba a escribir {1, 2, 3 } y pulsar OK

Para poder ver en concreto dónde está el problema, adjunta los archivos con el código para poder compilarlo. Saludos.

1530
Aprender a programar desde cero / Re:Series numericas en java
« en: 18 de Mayo 2014, 21:14 »
Hola, este es un problema que no se puede considerar sencillo, por lo que te recomiendo que lo vayas resolviendo por partes.

Un primer paso podría ser calcular la serie de fibonacci.

Serie de fibonacci:

Primer término no incluido en la serie: 0

Segundo término sí incluido en la serie: 1

Siguientes términos son la suma de los dos anteriores resultando: 1, 1, 2, 3, 5, 8, 13, 21, 34, etc.


S= -(3/1)^2- (1/5)^1/6 + (7/2)^5 + (3/11)^1/14 - (13/5)^8 - (8/17)^1/25 + (19/13)^6+.....

el denominador 1 con el numerador del siguiente termino (1) hace una serie de fibonacci y este con el denominador del siguiente (2) y este con el numerador del siguiente (3) y este con el denominador del siguiente (5) y este con el numerador del siguiente ( 8 ) y este con el denominador del siguiente (13) y asi sucesivamente

Con este código podemos obtener la serie de fibonacci:

Código: [Seleccionar]
public class Fibonacci {
    public Fibonacci() {    }
    public int[] hallarSerieFibonacci (int n)     {
        int [] vector = new int[n];
        vector[1] = 1;
        vector[2] = 1;
        int t1 = 1;
        int t2 = 1;
        for (int i=3; i<n; i++) {
            vector[i] = vector[i-1]+vector[i-2];
        }
        return vector;
    }
}

Prueba del código:

Código: [Seleccionar]
import java.util.Scanner;
public class testSeries {
   public static void main(String[] Args) {
        System.out.println ("Series numéricas java");
        System.out.print ("Introduzca valor de n para serie numérica: ");
        int datoN = 0;
        Scanner entradaTeclado = new Scanner (System.in);
        datoN = Integer.parseInt(entradaTeclado.nextLine());
        int [] serieFibonacci;
        Fibonacci f = new Fibonacci();
        serieFibonacci = f.hallarSerieFibonacci(datoN);
        for (int i=0; i<serieFibonacci.length; i++) {
            System.out.print (serieFibonacci[i]+" - ");
        }
    }
}

Ahora el siguiente paso sería generar una serie donde los números de fibonacci se vayan colocando alternativamente en el denominador y en el numerador. No parece demasiado complicado. Para probar inicialmente, podrías determinar si el número de elemento dentro de la serie es impar o par. Esto se puede hacer con el operador módulo comprobando si el resto de la división del número entre 2 es cero o no. En los términos impares el término de fibonacci debe ir en el denominador, y en los términos pares debe ir en el numerador.

Puedes crear una serie donde a través de condicionales coloques los términos de fibonacci en su sitio, y el resto de elementos puedes rellenarlos con unos de momento. Como te digo la idea sería ir construyendo poco a poco la solución.

1531
Cada persona va aportando sus respuestas y entre los moderadores de los foros y otros usuarios vamos corrigiendo y haciendo sugerencias, por tanto no hay una recopilación de respuestas. De todas formas, si quieres abrir un hilo y crear un recopilación de respuestas ¡Adelante!

1532
Aprender a programar desde cero / Re:Ejercicio 6 - Semana 9
« en: 17 de Mayo 2014, 20:40 »
Con varios labels también lo puedes hacer, lo único que tienes que adaptar la lógica para detectar cuándo se deben mostrar los datos en un label y cuándo en un otro. Aquí lo he hecho usando una variable auxiliar denominada mostrando. Si mostrando vale 1 significa que se debe mostrar el mensaje sobre el label1, si mostrando vale 2 que se debe mostrar sobre el label 2, y si mostrando vale 3 que se debe mostrar sobre el label3. En este caso cada label se encarga de un tipo de vehículos... Creo que ambas formas se pueden considerar correctas... Saludos

Código: [Seleccionar]
Option Explicit
Dim i As Integer
Dim Modelo(1 To 8) As Integer
Dim mostrando As Integer

Private Sub Form_Load()
Form1.Caption = "Modelos de vehículos"
Label1.Alignment = 2
Label1.Font = True
Modelo(1) = 350
Modelo(2) = 5000
Modelo(3) = 21
Modelo(4) = 100
Modelo(5) = 125
Modelo(6) = 750
Modelo(7) = 800
Modelo(8) = 850
Label1 = "Números de modelo de coches de fórmula 1: "
Label2 = "Números de modelo de motocicletas: "
Label3 = "Números de modelo de camiones: "
i = 1
mostrando = 1
Do While Modelo(i) <> 850
If mostrando = 1 Then
Label1 = Label1 & Modelo(i) & " - "
End If
If mostrando = 2 Then
Label2 = Label2 & Modelo(i) & " - "
End If
If mostrando = 3 Then
Label3 = Label3 & Modelo(i) & " - "
End If
If Modelo(i) = 350 Then
mostrando = 2
End If
If Modelo(i) = 125 Then
mostrando = 3
End If
i = i + 1
If Modelo(i) = 850 Then
Label3 = Label3 & Modelo(i)
End If
Loop
End Sub

1533
Aprender a programar desde cero / Re:Ejercicio 6 - Semana 9
« en: 17 de Mayo 2014, 19:04 »
Esto supongo que puede hacerse de diversas maneras pues la programación da pie a que se puedan escribir programas de distintas maneras.

Te indico una posible solución (en este caso usando únicamente un label, Label1):

La condición para entrar al bucle puede ser la que tú has indicado: Do While Modelo(i) <> 850 , aunque también podría plantearse de otras maneras. Supongamos que usamos esta.

Antes de entrar al bucle sabemos algo: que lo primero que viene son coches de fórmula 1, por tanto antes de entrar al bucle podemos escribir Label1 = "Números de modelo de coches de fórmula 1: "

Al entrar en el bucle vamos escribiendo en el label los modelos que vengan directamente, hasta detectar el 350.

En ese momento introducimos dos saltos de línea y escribimos Label1 = Label1 & vbCrLf & vbCrLf & "Números de modelo de motocicletas: "

¿Por qué? Porque sabemos que a partir del 350 lo que vienen son motocicletas.

Seguimos escribiendo todo lo que venga hasta que detectemos el 125 que sabemos que es la última motocicleta. En ese momento escribimos:

Label1 = Label1 & vbCrLf & vbCrLf & "Números de modelo de camiones: "

¿Por qué? Porque sabemos que a partir de ese momento vienen camiones.

Ahora vamos escribiendo todo lo que llega, pero tenemos el problema de que cuando se llegue a 850 no se va a entrar en el bucle ¿Qué podemos hacer entonces? Con un condicional if comprobar si una vez incrementado el valor de i nos viene 850. En ese caso, escribimos Label1 = Label1 & Modelo(i) para que se muestre ese número de modelo.

Al intentar volver al inicio del bucel y valer modelo (i ) = 850 no se entra en el bucle y se sale del programa

La idea se refleja en este código, lo importante más que el programa funcione (espero que sí) es que seas capaz de ver por qué funciona, además prueba a introducir más datos de modelo y predecir tú mismo qué supones que va a hacer el programa. Luego ejecuta el programa y comprueba que hace lo que tú has predicho, si logras esto es que estás "comprendiendo adecuadamente lo que hace el código", saludos

Código: [Seleccionar]
Option Explicit
Dim i As Integer
Dim Modelo(1 To 8) As Integer

Private Sub Form_Load()
Form1.Caption = "Modelos de vehículos"
Label1.Alignment = 2
Label1.Font = True
Modelo(1) = 350
Modelo(2) = 5000
Modelo(3) = 21
Modelo(4) = 100
Modelo(5) = 125
Modelo(6) = 750
Modelo(7) = 800
Modelo(8) = 850
Label1 = "Números de modelo de coches de fórmula 1: "
i = 1
Do While Modelo(i) <> 850
Label1 = Label1 & Modelo(i) & " - "
If Modelo(i) = 350 Then
Label1 = Label1 & vbCrLf & vbCrLf & "Números de modelo de motocicletas: "
End If
If Modelo(i) = 125 Then
Label1 = Label1 & vbCrLf & vbCrLf & "Números de modelo de camiones: "
End If
i = i + 1
If Modelo(i) = 850 Then
Label1 = Label1 & Modelo(i)
End If
Loop
End Sub

1534
Aprender a programar desde cero / Re:Ejercicio 5 - Semana 9
« en: 17 de Mayo 2014, 18:41 »
Hola, repasando lo indicado:

"Entiendo que la linea Do While Peso(i) >= 0 debería de hacer que automáticamente no se calculase los datos de Peso(-99) correspondiente al señalero de la serie de datos."

La idea es correcta, de hecho esa condición del bucle impide que se trate el dato Peso(12) que es el que contiene el valor -99.

No obstante si ese valor está apareciendo es porque de alguna manera existen instrucciones en el código que hacen que aparezca ¿dónde?

Supongamos que llegamos con i=11, se comprueba Do While Peso(i) >= 0 y se entra en el bucle:

Suma = Suma + Peso(11)
i = i + 1 es decir i = 11 +1 = 12
If Peso( i ) > PesoMax Then  ... no se cumple que peso(12) sea mayor que el máximo
PesoMax = Peso(i)
End If
If Peso( i ) < PesoMin Then ... sí se cumple que peso(12) sea mayor que el mínimo, ahí tienes el problema
PesoMin = Peso(i)
End If


Solución: tienes que considerar dónde incrementas el valor de la variable de control. No puede ser en cualquier punto del bucle, en este caso (que es lo más habitual) tiene que ser al final del bucle para que no afecte a las comprobaciones o procesos intermedios. Es decir:

Código: [Seleccionar]
Do While Peso(i) >= 0
Suma = Suma + Peso(i)
If Peso(i) > PesoMax Then
PesoMax = Peso(i)
End If
If Peso(i) < PesoMin Then
PesoMin = Peso(i)
End If
i = i + 1
Loop

Fíjate que simplemente ha cambiado la situación de la línea i = i + 1

Además tienes que tener en cuenta que para que se asigne un valor a PesoMin, deberás inicializarlo con un valor muy grande, ya que en caso contrario el valor de PesoMin es cero y será 0 lo que te aparezca como PesoMin.

Por tanto al principio del código añade algo así como PesoMin = 10000

Esto significa que "das un valor aleatorio muy grande a PesoMin". Cuando se realice la comparación If Peso (i ) < PesoMin será verdadero y se asignará a PesoMin un valor.

Si no haces esto al ser PesoMin 0 la comparación If peso( i) < PesoMin no será cierta y te aparecerá erróneamente que PesoMin es 0.

Saludos

1535
La desinstalación debe hacerse siempre desde el panel de control y nada más, el borrado manual sólo debe usarse si se sabe perfectamente lo que se está haciendo...

1536
¿Cómo lo resolviste?  ;D Ahora deberías intentar ejecutar blueJ a ver si el programa se ejecuta.

1537
Con este código logro que encuentre todos los resultados, aunque me saltan algunos errores en determinados casos y además me repite los resultados no tengo del todo claro por qué pero creo que por aquí se podría ir buscando una solución

Código: [Seleccionar]
Option Explicit
Dim xlApp As Excel.Application
Dim wb As Workbook
Dim ws As Worksheet
Dim strResults, strSearch As String
Dim encontrado As Boolean
Dim contador As Integer
Dim rngfnd As Range
Dim txtSearch As String
Dim resultadosHoja(50) As String
Dim resultadoCelda(50) As String

Private Sub Form_Load()
contador = 0
End Sub

Private Sub cmdSearch_Click()
txtSearch = Text1
Set xlApp = New Excel.Application
Set wb = xlApp.Workbooks.Open("C:\Users\Asus\Desktop\prueba.xls")
For Each ws In ActiveWorkbook.Worksheets
Set rngfnd = ws.UsedRange.Find(What:=txtSearch, After:=ws.UsedRange.Cells(ws.UsedRange.Cells.Count), LookIn:= _
       xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
       xlNext, MatchCase:=False, SearchFormat:=False)
Do

If (rngfnd.Address <> "") Then
'MsgBox ("prueba " & rngfnd.Address)
   encontrado = True
  MsgBox ("Encontrado resultado en hoja" & ws.Name & " y celda " & rngfnd.Address & " contador = " & contador)
   resultadosHoja(contador) = "" & ws.Name
   resultadoCelda(contador) = rngfnd.Address
   Set rngfnd = ws.UsedRange.FindNext(After:=rngfnd)
   contador = contador + 1
End If
Loop While Not rngfnd Is Nothing And contador < 10
MsgBox ("Ws vale " & ws.Name & "paso al next y siguiente ws")

Next ws
contador = 0
If encontrado = False Then
   MsgBox "Texto no encontrado en el archivo Excel"
End If
End Sub
Private Sub CommandSalir_Click()
'BOTON Salir'
xlApp.Workbooks.Close
xlApp.Quit
Application.Quit
xlApp.Parent.Quit
End
End Sub

1538
Ya veo... pensé que eras un semi-experto y por eso me extrañaban algunas cosas. La solución al problema ahora mismo no la sé, lo he mirado por encima y he tratado de usar el método repaint() pero no funciona, al menos no funciona así a la primera. Intentaré volver a mirarlo cuando tenga tiempo. Aunque dices que no estudias programación, no sé si ya has visto el curso de java: https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

A lo mejor te resulta útil para lo que son fundamentos, aunque para este problema en concreto no. Saludos

1539
¿Qué versión de Windows estás usando y de cuántos bits (32 ó 64) es?

Puede haber algún problema de compatibilidad entre la versión de Windows y la de Java, en particular con Java 8.

Intenta instalar java 7 en lugar de java 8 (http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html)

Si no te deja inténtalo con java 6 (http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR)

No lo intentes con versiones anteriores porque son demasiado obsoletas

1540
Las desinstalaciones hay que hacerlas yendo a Inicio -- > Panel de control -- > Programas -- > Desinstalar un programa -- > Elegir lo que queremos desinstalar y pulsar el botón "Desinstalar". No se puede borrar manualmente archivos porque puedes dañar el equipo, no sé cómo lo has hecho

Tendrías que buscar para desinstalar algo así como Java TM 7 update 28 y Java TM SE Runtime environment 7, y desinstalar ambos para luego volver a instalar.

Páginas: 1 ... 72 73 74 75 76 [77] 78 79 80 81 82 ... 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".