Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - arts

#91
Tengo una duda con uno de mis ejercicios, en el que me he propuesto hacer una carga aleatoria sin repetir ingún nº en una tabla de 25elementos. No se si es un ejercicio del que necesito mas nociones básicas, puesto que solo llevo 3meses de curso y hemos llegado hasta los arrays (ordenación y búsquedas). No se si me hace falta algo algún conocimiento más.

En principio necesito alguna idea que me ilumine el camino a seguir ya que lo que he realizado tiene sentido pero no se como hacer la parte de generar un nº diferente a los que ya están puestos.

Código (vbnet) [Seleccionar]
Public Class Form1

   Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

       Dim TB(4, 4) As Short
       Dim TBC(24) As Short
       Dim C_NUM As Short = 0
       Dim H As Short = 0

       For I As Short = 0 To 4
           For J As Short = 0 To 4
               TB(I, J) = Int((25 - 1 + 1) * Rnd()) + 1
               TB(I, J) = TBC(H)
               H = H + 1
           Next
       Next
       H = 0
       

       Do
           For I = 0 To 4
               For J = 0 To 4
                   If TBC(H) = TB(I, J + 1) Then
                       C_NUM = C_NUM + 1
                       TB(I, J + 1) = Int((24 - 0 + 1) * Rnd()) + 0
                   Else
                       C_NUM = C_NUM - 1
                   End If
               Next
           Next
           H = H + 1
       Loop While C_NUM > 0

       For I = 0 To 4
           For J = 0 To 4
               TextBox1.Text = TextBox1.Text & TB(I, J)
           Next
       Next



   End Sub
End ClasS
#92
Creo que hablo por experiencia, a quienes dicen que empieces por programar directamente en un lenguaje, seguramente un profesor les fue enseñando  directamente en ese lenguaje, sin embargo, aquellos que saben seudocódigo tan solo tienen que traducir su lógica al lenguaje deseado aprendieédose justamente lo que te están ofreciendo como tutoriales, la sintaxis y la declaración de variables.

Tal y como te han dicho no es lo mismo entender que hace un código en un lenguaje que en seudocódigo, en seudocódigo se entiende todo, solo usas el español sin mas. Y  por cierto los manuales normalmente no hablan y omiten lo que es un acumulador, un contador, totalizador, algoritmo de ordenación, o el método del switch porque lo dan por sentado, sin embargo esto si que te lo cuentan en el seudocódigo, dándote una base mínima de las operaciones, expresiones que puedes realizar.

Una vez aprendido y entendido el seudocódigo es entonces cuando tienes que meterte con los tutoriales que están por internet y que explican que tipo de variables puedes usar, como llamar a las funciones, que sintaxis tienen, que tipo de expresiones se pueden usar, pero no te hablarán de como hacer ningún algoritmo, que  por lo que veo es justo lo que buscas.

Aquí te dejo http://www.mediafire.com/?eqy3l7yzm5w 52 ejercicios en seudocódigo resueltos.

Y aquí un supermanual de seudocódigo: http://www.mediafire.com/?0wd5e0vyend

Te pasaría mis propios apuntes, pero los tengo hechos a papel y boli, el día que los pase a maquina... serán una obra de arte porque viene todo explicado de una forma sencillísima de entender.
#93
Justo es este tipo de cosas las que me fallan :), yo mismo he visto muy raro tanto if... y elseif junto y repetido, lo que no me he dado cuenta es que justo como dices con un select case puedo usarlo para todas las opciones :).

Gracias de nuevo :D
#94
Muchas gracias! ya veo lo que me faltaba !
;-)
#95
Encuentro una posible solución diferenciando el numero que entre el jugador 1 y el jugador 2, pero me parece mal hecho porque duplico código y lo que es peor, saldría bien porque son 2 jugadores, pero si fueran 23 jugadores queda completamente descartada esa opción.
#96
Muy buenas, estaba haciendo un ejercicio en visual sobre un juego de adivinar un nº que se introduce por pantalla y no se como hacer una de las partes. Exactamente la parte de los acumuladores de los puntos, por no querer rescribir todo el código lo he ido haciendo de una manera y al final me esta dando mas problemas que otra cosa.

El problema dice así: se desea realizar un programa donde se tienen a 2 jugadores y un arbitro, el arbitro introduce un nº por teclado y los 2 jugadores intenta averiguarlo. El nº debe estar entre el 1 y 100. Como máximo tienen 5 intentos y juegan de manera alternada. El que acierta a la primera obtendra 10 pts, si es a la 2ª 8puntos, 3ª 6puntos, 4ª 4 puntos 5ª 2puntos 6ª pierden el juego.
Hay que darles pistas a los jugadores si el nº introducido se encuentra a + o - 3 del nº a acertar mostrar "quemando", si es + o - 7 caliente, si es + o - 15 mostrar templado, resto frio.
Se acumulan los puntos, de forma que  se muestren siempre los puntos aun terminando una partida, poner un botón de inicio y otro de finalizar.

Por ahora me sale todo bien, excepto que siempre se me mete por la misma sentencia en puntos acumulados y gane quien gane se los da siempre al jugador 1.
¿ De que otra forma debería haberlo hecho  o que tengo que cambiar ?, por otra parte como hago un botón finalizar que interactue en el código del sub_button1 que es el botón de iniciar ?.

Código (vbnet) [Seleccionar]

Public Class Form1
    Dim T_PUNTOS_J1 As Short
    Dim T_PUNTOS_J2 As Short
    Dim I As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim NUM_ACERTAR As Short
        Dim NUM As Short
        Dim PISTAS As Short
        Dim B As Boolean = False
        Dim C_INTENTOS As Short = 0
        Dim C_INTENTOS_J2 As Short = 0

        For Me.I = 0 To 999

            NUM_ACERTAR = InputBox("Que el arbitro introduzca un nº entre 1 y 100")
            Do Until NUM_ACERTAR >= 1 And NUM_ACERTAR <= 100
                NUM_ACERTAR = InputBox("Introduzca un nº entre 1 y 100")
            Loop

            Do
                If B = False Then
                    B = True
                    C_INTENTOS = C_INTENTOS + 1
                    NUM = InputBox("Turno del Jugador 1, intento nº: " & C_INTENTOS, "Turno Jugador 1", 0)
                    TextBox4.Text = TextBox4.Text & " Numero: " & NUM & Chr(13) & Chr(10)
                Else
                    B = False
                    C_INTENTOS_J2 = C_INTENTOS_J2 + 1
                    NUM = InputBox("Turno del Jugador 2, intento nº: " & C_INTENTOS_J2, "Turno Jugador 2", 0)
                    TextBox4.Text = TextBox4.Text & " Numero: " & NUM & Chr(13) & Chr(10)
                End If

                'MENSAJES DE TEXTO PISTAS
                If NUM_ACERTAR > NUM Then
                    PISTAS = NUM_ACERTAR - NUM
                ElseIf NUM_ACERTAR < NUM Then
                    PISTAS = NUM - NUM_ACERTAR
                ElseIf NUM = NUM_ACERTAR Then
                    PISTAS = 0
                End If

                If PISTAS <= 3 Then
                    TextBox1.Text = "QUEMANDO"
                ElseIf PISTAS <= 7 Then
                    TextBox1.Text = "CALIENTE"
                ElseIf PISTAS <= 15 Then
                    TextBox1.Text = "TEMPLADO"
                Else
                    TextBox1.Text = "FRIO"
                End If

                'RECUENTOS DE LOS PUNTOS ACUMULADOS
                If C_INTENTOS = 1 And NUM = NUM_ACERTAR Then
                    T_PUNTOS_J1 = T_PUNTOS_J1 + 10
                    C_INTENTOS = 6
                    TextBox1.Text = "HAS GANADO J1"
                ElseIf C_INTENTOS = 2 And NUM = NUM_ACERTAR Then
                    T_PUNTOS_J1 = T_PUNTOS_J1 + 8
                    C_INTENTOS = 6
                    TextBox1.Text = "HAS GANADO J1"
                ElseIf C_INTENTOS = 3 And NUM = NUM_ACERTAR Then
                    T_PUNTOS_J1 = T_PUNTOS_J1 + 6
                    C_INTENTOS = 6
                    TextBox1.Text = "HAS GANADO J1"
                ElseIf C_INTENTOS = 4 And NUM = NUM_ACERTAR Then
                    T_PUNTOS_J1 = T_PUNTOS_J1 + 4
                    C_INTENTOS = 6
                    TextBox1.Text = "HAS GANADO J1"
                ElseIf C_INTENTOS = 5 And NUM = NUM_ACERTAR Then
                    T_PUNTOS_J1 = T_PUNTOS_J1 + 2
                    C_INTENTOS = 6
                    TextBox1.Text = "HAS GANADO J1"
                ElseIf C_INTENTOS_J2 = 1 And NUM = NUM_ACERTAR Then
                    T_PUNTOS_J2 = T_PUNTOS_J2 + 10
                    C_INTENTOS = 6
                    TextBox1.Text = "HAS GANADO J2"
                ElseIf C_INTENTOS_J2 = 2 And NUM = NUM_ACERTAR Then
                    T_PUNTOS_J2 = T_PUNTOS_J2 + 8
                    C_INTENTOS = 6
                    TextBox1.Text = "HAS GANADO J2"
                ElseIf C_INTENTOS_J2 = 3 And NUM = NUM_ACERTAR Then
                    T_PUNTOS_J2 = T_PUNTOS_J2 + 6
                    C_INTENTOS = 6
                    TextBox1.Text = "HAS GANADO J2"
                ElseIf C_INTENTOS_J2 = 4 And NUM = NUM_ACERTAR Then
                    T_PUNTOS_J2 = T_PUNTOS_J2 + 4
                    C_INTENTOS = 6
                    TextBox1.Text = "HAS GANADO J2"
                ElseIf C_INTENTOS_J2 = 5 And NUM = NUM_ACERTAR Then
                    T_PUNTOS_J2 = T_PUNTOS_J2 + 2
                    C_INTENTOS = 6
                    TextBox1.Text = "HAS GANADO J2"
                End If

                TextBox2.Text = T_PUNTOS_J1
                TextBox3.Text = T_PUNTOS_J2

            Loop Until C_INTENTOS >= 5
            I = 99999
        Next
    End Sub

End Class

#97
vaya, crei que eran lo mismo :/
#98
Muy buenas, estaba haciendo un ejercicio en visual sobre un juego de adivinar un nº que se introduce por pantalla y no se como hacer una de las partes. Exactamente la parte de los acumuladores de los puntos, por no querer rescribir todo el código lo he ido haciendo de una manera y al final me esta dando mas problemas que otra cosa.

El problema dice así: se desea realizar un programa donde se tienen a 2 jugadores y un arbitro, el arbitro introduce un nº por teclado y los 2 jugadores intenta averiguarlo. El nº debe estar entre el 1 y 100. Como máximo tienen 5 intentos y juegan de manera alternada. El que acierta a la primera obtendra 10 pts, si es a la 2ª 8puntos, 3ª 6puntos, 4ª 4 puntos 5ª 2puntos 6ª pierden el juego.
Hay que darles pistas a los jugadores si el nº introducido se encuentra a + o - 3 del nº a acertar mostrar "quemando", si es + o - 7 caliente, si es + o - 15 mostrar templado, resto frio.
Se acumulan los puntos, de forma que  se muestren siempre los puntos aun terminando una partida, poner un botón de inicio y otro de finalizar.

Por ahora me sale todo bien, excepto que siempre se me mete por la misma sentencia en puntos acumulados y gane quien gane se los da siempre al jugador 1.
¿ De que otra forma debería haberlo hecho  o que tengo que cambiar ?, por otra parte como hago un botón finalizar que interactue en el código del sub_button1 que es el botón de iniciar ?.

Código (vbnet) [Seleccionar]
Public Class Form1
   Dim T_PUNTOS_J1 As Short
   Dim T_PUNTOS_J2 As Short
   Dim I As Integer

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim NUM_ACERTAR As Short
       Dim NUM As Short
       Dim PISTAS As Short
       Dim B As Boolean = False
       Dim C_INTENTOS As Short = 0
       Dim C_INTENTOS_J2 As Short = 0

       For Me.I = 0 To 999

           NUM_ACERTAR = InputBox("Que el arbitro introduzca un nº entre 1 y 100")
           Do Until NUM_ACERTAR >= 1 And NUM_ACERTAR <= 100
               NUM_ACERTAR = InputBox("Introduzca un nº entre 1 y 100")
           Loop

           Do
               If B = False Then
                   B = True
                   C_INTENTOS = C_INTENTOS + 1
                   NUM = InputBox("Turno del Jugador 1, intento nº: " & C_INTENTOS, "Turno Jugador 1", 0)
                   TextBox4.Text = TextBox4.Text & " Numero: " & NUM & Chr(13) & Chr(10)
               Else
                   B = False
                   C_INTENTOS_J2 = C_INTENTOS_J2 + 1
                   NUM = InputBox("Turno del Jugador 2, intento nº: " & C_INTENTOS_J2, "Turno Jugador 2", 0)
                   TextBox4.Text = TextBox4.Text & " Numero: " & NUM & Chr(13) & Chr(10)
               End If

               'MENSAJES DE TEXTO PISTAS
               If NUM_ACERTAR > NUM Then
                   PISTAS = NUM_ACERTAR - NUM
               ElseIf NUM_ACERTAR < NUM Then
                   PISTAS = NUM - NUM_ACERTAR
               ElseIf NUM = NUM_ACERTAR Then
                   PISTAS = 0
               End If

               If PISTAS <= 3 Then
                   TextBox1.Text = "QUEMANDO"
               ElseIf PISTAS <= 7 Then
                   TextBox1.Text = "CALIENTE"
               ElseIf PISTAS <= 15 Then
                   TextBox1.Text = "TEMPLADO"
               Else
                   TextBox1.Text = "FRIO"
               End If

               'RECUENTOS DE LOS PUNTOS ACUMULADOS
               If C_INTENTOS = 1 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J1 = T_PUNTOS_J1 + 10
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J1"
               ElseIf C_INTENTOS = 2 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J1 = T_PUNTOS_J1 + 8
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J1"
               ElseIf C_INTENTOS = 3 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J1 = T_PUNTOS_J1 + 6
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J1"
               ElseIf C_INTENTOS = 4 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J1 = T_PUNTOS_J1 + 4
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J1"
               ElseIf C_INTENTOS = 5 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J1 = T_PUNTOS_J1 + 2
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J1"
               ElseIf C_INTENTOS_J2 = 1 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J2 = T_PUNTOS_J2 + 10
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J2"
               ElseIf C_INTENTOS_J2 = 2 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J2 = T_PUNTOS_J2 + 8
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J2"
               ElseIf C_INTENTOS_J2 = 3 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J2 = T_PUNTOS_J2 + 6
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J2"
               ElseIf C_INTENTOS_J2 = 4 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J2 = T_PUNTOS_J2 + 4
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J2"
               ElseIf C_INTENTOS_J2 = 5 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J2 = T_PUNTOS_J2 + 2
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J2"
               End If

               TextBox2.Text = T_PUNTOS_J1
               TextBox3.Text = T_PUNTOS_J2

           Loop Until C_INTENTOS >= 5
           I = 99999
       Next
   End Sub

End Class
#99
Mmm... para empezar te recomiendo un manual de seudocódigo donde veas exactamente como funcionan las estructuras, que estructura usar y porque, e incluso realizar la operaciones a (mano ) papel y boli que fue como me enseñaron hace solamente 3 meses :) para saber que va haciendo por ejemplo un algoritmo de ordenación shell. Ayuda muchísimo hacer esto último para entender la programación. Te pasaría mis apuntes pero los tengo a mano porque no nos dejaban encender ni ordenador en clase, decían que si no se hacían las cosas de cabeza y sin fallos nos mal acostumbráabamos a picar código directamente sin pensar, y coincido con esto último, ahora es raro encontrar errores de programación en mis ejercicios.
http://www.mediafire.com/?mngjljykxny
Este enlace es un manual bastante parecido a mis apuntes muy completo sobre programación con ejercicios y explicaciones.

http://www.mediafire.com/?eqy3l7yzm5w
Este último son ejercicios resueltos en seudocodigo, pero antes para hacerlos necesitas saber como funciona el seudocodigo con el manual anterior.

Un saludo ;)
#100
En ese caso el Ide me parece fantástico