|
91
|
Programación / .NET (C#, VB.NET, ASP) / Duda con uno de mis ejercicios
|
en: 1 Febrero 2013, 17:57 pm
|
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. 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
|
Programación / Programación General / Re: ¿como desarrollar la logica de programacion con pseudocodigo?
|
en: 29 Enero 2013, 17:36 pm
|
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/?0wd5e0vyendTe 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.
|
|
|
95
|
Programación / .NET (C#, VB.NET, ASP) / Re: Duda ejercicio basico de programacion
|
en: 24 Enero 2013, 21:33 pm
|
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
|
Programación / .NET (C#, VB.NET, ASP) / Duda ejercicio basico de programacion
|
en: 24 Enero 2013, 21:07 pm
|
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 ?. 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
|
|
|
98
|
Programación / Programación Visual Basic / Duda ejercicio basico de programacion
|
en: 24 Enero 2013, 20:23 pm
|
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 ?. 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
|
Programación / Programación General / Re: Consejo para recien iniciado
|
en: 23 Enero 2013, 21:14 pm
|
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/?mngjljykxnyEste enlace es un manual bastante parecido a mis apuntes muy completo sobre programación con ejercicios y explicaciones. http://www.mediafire.com/?eqy3l7yzm5wEste último son ejercicios resueltos en seudocodigo, pero antes para hacerlos necesitas saber como funciona el seudocodigo con el manual anterior. Un saludo
|
|
|
|
|
|
|