Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Porque Me Salen El Numero 10 En El Sudoku???

Estas en el tema de Porque Me Salen El Numero 10 En El Sudoku??? en el foro de Visual Basic clásico en Foros del Web. estoy apuntito de acabar el programa sudoku y solo me queda una dudilla he conseguido que la solucion se meta en el text, ya que ...
  #1 (permalink)  
Antiguo 21/02/2007, 13:25
mfc
 
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Pregunta Porque Me Salen El Numero 10 En El Sudoku COMO PONER QUE EN VEZ DE SALIR 10 SALGA 9??

estoy apuntito de acabar el programa sudoku y solo me queda una dudilla he conseguido que la solucion se meta en el text, ya que cuando pulso el boton crear salgan completos pero cuando me salen completos me sale numeros 10 y yo me pregunto hay el numero 10 en el sudoku? no se esque me salen estos numeros he probado de todo poner
-1 ,+1 ,quitarlo etc pero sigue saliendo el 10 y porque los tres sudokus de arriba no cambian como los otros, pero la progunta que quiero es porque me sale los numeros 10?que tendria que cambiar?

He hablado con mi professor y me ha dicho que el posible fallo de que salgan los numero 10 es por el trozo que tengo abajo el sudoku esta compusto por 81 casillas textbox del 1 al 81 creando una matrix y un boton que genera el sudoku y el posible fallo dice mi profe que puede estar en este trozo y puede ser causa por el caracter " \ " este caracter me dice el profe que es para dividir y hay hay el posible fallo me podeis ayudar gracias:

Private Function GetValidVals(ByVal Location As Integer, ByRef ValidVals() As Boolean) As Integer

Dim i, j, k As Integer
Dim row, col As Integer
Dim numStr As String
Dim numOK As Boolean
Dim retVal As Integer

retVal = 0
For i = 1 To 9
numOK = True
numStr = CStr(i)
For j = 1 To 9
k = (Int((Location - 1) / 9) * 9) + j
If Text1(k).Text = numStr Then
numOK = False
Exit For
End If
Next j
If numOK Then
For j = 1 To 9
k = (((Location - 1) Mod 9) + 1) + ((j - 1) * 9)
If Text1(k).Text = numStr Then
numOK = False
Exit For
End If
Next j
End If
If numOK Then
row = Int(Int((Location - 1) / 9) / 3)
col = Int(((Location - 1) Mod 9) / 3)
For j = 1 To 9
k = (((row * Rnd) + Int((j - 1) / 9)) * 9) + (col * 9) + ((j - 1) Mod 3) + 1
If Text1(k).Text = numStr Then
numOK = False
Exit For
End If
Next j
End If
ValidVals(i) = numOK
If numOK Then
retVal = retVal
End If
Next i
GetValidVals = retVal
End Function

Última edición por mfc; 24/02/2007 a las 03:20
  #2 (permalink)  
Antiguo 24/02/2007, 03:21
mfc
 
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

Alguien Sabe Porque Me Pasa Eso????
  #3 (permalink)  
Antiguo 24/02/2007, 21:06
 
Fecha de Ingreso: febrero-2007
Mensajes: 24
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

hola

puede que esto sea un disparate hace miles de años que no veo vbasic, pero mirando el codigo , tu trabajas con matrices , se supone que cuando las dimensionas parten de cero y no de 1

mira eso en row, col , no se si te ayuda o es una tontera

bye
  #4 (permalink)  
Antiguo 25/02/2007, 03:18
mfc
 
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

gracias por ayudar pero he provado lo que me has dicho, pero no va vuelven a salir en vez de 9 salen 10, esl sudoku esta en una slo matriz de 81 casillas
  #5 (permalink)  
Antiguo 25/02/2007, 10:52
 
Fecha de Ingreso: febrero-2007
Mensajes: 24
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

es este todo el programa? , si alta algo postealo y lo reviso con calma , volvere a instalar el vb

ok , me gusta este juego asi que encantado de ayudarte
  #6 (permalink)  
Antiguo 25/02/2007, 11:55
mfc
 
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

gracias por ayudarme aqui te dejo todo el codigo haver si me puedes ayudar a conseguir que no salgan los 10 aqui tienes y si quieres el programa me podrias dar tu direccion de correo y te puedo enviar el programa completo haver si te ira mejor para mirar el posible fallo, gracias de nuevo

codigo completo:
--------------------------------------
Const Gris As Long = &HFFFFFF
Private SolutionShown As Boolean
Private SudokuGrid(81) As Integer
Private SudokuTemp(81) As String
Private SudokuSolution(81) As String
------------------------------------------
Private Sub cmdGenerar_Click()
While Not CreateSudokuGrid()
Wend
lblDone.Visible = False
cmdSolucion.Enabled = True
cmdSolucion.Caption = "Show Solution"
SolutionShown = False
If SolutionShown Then
For i = 1 To 81
Text1(i).Text = SudokuTemp(i)
Next i

Else
For i = 1 To 81
SudokuTemp(i) = Text1(i).Text
Text1(i).Text = SudokuSolution(i)
Next

End If

End Sub
--------------------------------------------
Private Function CreateSudokuGrid() As Boolean
Dim b, i, j, k As Integer
Dim numRand As Integer
Dim ValIsOK(9) As Boolean
Dim valsOK As Integer
valsOK = 0


lblConfiguring.Visible = True
For i = 1 To 81
Text1(i).Text = ""
Text1(i).BackColor = Gris
Text1(i).Visible = False
SudokuSolution(i) = ""

Next i
lblConfiguring.Visible = True
lblConfiguring.Refresh
For i = 1 To 81
If True Then

valsOK = GetValidVals(i, ValIsOK)
If valsOK <= 0 Then
CreateSudokuGrid = False
End If
numRand = Int(Rnd(valsOK)) + 1
k = 0
For j = 1 To 9
If ValIsOK(j) Then
k = k + 1
If k = numRand Then
Exit For
End If
End If
Next j
Text1(i).Text = CStr(j)
Text1(i).BackColor = Gris
End If
Next i
lblConfiguring.Visible = False
For i = 1 To 81
SudokuSolution(i) = Text1(i).Text
numRand = Rnd(CInt(3) + 1) + 1
If numRand > 1 Then
Text1(i).Text = ""
Text1(i).BackColor = Gris
Text1(i).Enabled = True
Else
Text1(i).Enabled = False
End If
Text1(i).Visible = True
Next i
CreateSudokuGrid = True
End Function
---------------------------------------------------
Private Function GetValidVals(ByVal Location As Integer, ByRef ValidVals() As Boolean) As Integer

Dim i, j, k As Integer
Dim row, col As Integer
Dim numStr As String
Dim numOK As Boolean
Dim retVal As Integer

retVal = 0
For i = 1 To 9
numOK = True
numStr = CStr(i)
For j = 1 To 9
k = (Int((Location - 1) / 9) * 9) + j
If Text1(k).Text = numStr Then
numOK = False
Exit For
End If
Next j
If numOK Then
For j = 1 To 9
k = (((Location - 1) Mod 9) + 1) + ((j - 1) * 9)
If Text1(k).Text = numStr Then
numOK = False
Exit For
End If
Next j
End If
If numOK Then
row = Int(Int((Location - 1) / 9) / 3)
col = Int(((Location - 1) Mod 9) / 3)
For j = 1 To 9
k = (((row * Rnd) + Int((j - 1) / 9)) * 9) + (col * 9) + ((j - 1) Mod 3) + 1
If Text1(k).Text = numStr Then
numOK = False
Exit For
End If
Next j
End If
ValidVals(i) = numOK
If numOK Then
retVal = retVal
End If
Next i
GetValidVals = retVal
End Function
  #7 (permalink)  
Antiguo 25/02/2007, 12:39
 
Fecha de Ingreso: febrero-2007
Mensajes: 24
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

mandalo a [email protected]

no creo que sea dificil
  #8 (permalink)  
Antiguo 25/02/2007, 14:46
mfc
 
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

gracias te enviado el trabajo aber si te puede ayudar gracias de nuevo
  #9 (permalink)  
Antiguo 26/02/2007, 00:10
 
Fecha de Ingreso: febrero-2007
Mensajes: 24
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

aun no me llega nada MFC
  #10 (permalink)  
Antiguo 26/02/2007, 09:57
mfc
 
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

que raro te envie uno ayer tu cuenta es
[email protected] o [email protected] sin el (ar) detras o todo junto hoy te envio otro
  #11 (permalink)  
Antiguo 26/02/2007, 09:58
mfc
 
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

que raro te envie uno ayer tu direccion de correo acaba en ar o en com? vueno hoy te envio otro
  #12 (permalink)  
Antiguo 26/02/2007, 19:38
 
Fecha de Ingreso: febrero-2007
Mensajes: 24
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

te mando otro correo

[email protected]

que raro que no te funcione el otro

[email protected]


lo he probado y funciona (hay un guion bajo antes de fac)
  #13 (permalink)  
Antiguo 27/02/2007, 11:14
mfc
 
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

te ha llegado el programa??? o kool
  #14 (permalink)  
Antiguo 28/02/2007, 07:12
 
Fecha de Ingreso: febrero-2007
Mensajes: 24
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

Cita:
Iniciado por mfc Ver Mensaje
te ha llegado el programa??? o kool


hoy me di cuaenta que ya me habia llegado , estaba en los spam, como nunca reviso ahi , crei que no habia llegado ,lo revisare ,dame un poco de tiempo estoy un poco pillado de trabajo
  #15 (permalink)  
Antiguo 28/02/2007, 07:45
mfc
 
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

claro no te preocupes y has el trabajo que tengas que hacer y gracias por intetar ayudarme tengo hasta el martes que viene que lo puedo entregar.
  #16 (permalink)  
Antiguo 28/02/2007, 20:19
 
Fecha de Ingreso: febrero-2007
Mensajes: 24
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

aqui lo que me mandaste

prueba esta solucion y me cuentas , esta al medio , haber si despues me mandas el juegito je je


Const Gris As Long = &HFFFFFF

Private SudokuGrid(81) As Integer
Private SudokuTemp(81) As String
Private SudokuSolution(81) As String

Private Sub cmdGenerar_Click()

While Not CreateSudokuGrid()

Wend

lblDone.Visible = False


SolutionShown = False

If SolutionShown Then

For i = 1 To 81

Text1(i).Text = SudokuTemp(i)

Next i

Else

For i = 1 To 81
SudokuTemp(i) = Text1(i).Text
Text1(i).Text = SudokuSolution(i)

Next

End If


End Sub

Private Function CreateSudokuGrid() As Boolean

Dim b, i, j, k As Integer

Dim numRand As Integer

Dim ValIsOK(9) As Boolean

Dim valsOK As Integer

valsOK = 0


lblConfiguring.Visible = True

For i = 1 To 81
Text1(i).Text = ""
Text1(i).BackColor = Gris
Text1(i).Visible = False
SudokuSolution(i) = ""

Next i
lblConfiguring.Visible = True
lblConfiguring.Refresh

For i = 1 To 81
If True Then

valsOK = GetValidVals(i, ValIsOK)
If valsOK <= 0 Then

CreateSudokuGrid = False
End If
-------------------------------------------------
esto debes cambiar
-------------------------------------------------
' numRand = Int(Rnd(valsOK)) + 1
'k = 0
'For j = 1 To 9
'If ValIsOK(j) Then
' k = k + 1
'If k = numRand Then

' Exit For
'End If
'End If

'Next j
-------------------------------------------------------
hasta aqui
--------------------------------------------
Randomize
numRand = Int( Rnd * valsOK+1)

k = 0
For j = 0 To 8
If ValIsOK(j) Then
k = k + 1
If k = numRand Then
Exit For
End If
End If
Next j



esto es nuevo verifica y me cuentas habia un problema de matrices y otro que un numero nunca se tomaba
---------------------------------------------------------

Text1(i).Text = CStr(j)
Text1(i).BackColor = Gris

End If

Next i

lblConfiguring.Visible = False
For i = 1 To 81

SudokuSolution(i) = Text1(i).Text
numRand = Rnd(CInt(3) + 1) + 1
If numRand > 1 Then

Text1(i).Text = ""
Text1(i).BackColor = Gris
Text1(i).Enabled = True

Else
Text1(i).Enabled = False

End If
Text1(i).Visible = True

Next i
CreateSudokuGrid = True

End Function

Private Function GetValidVals(ByVal Location As Integer, ByRef ValidVals() As Boolean) As Integer

Dim i, j, k As Integer
Dim row, col As Integer
Dim numStr As String
Dim numOK As Boolean
Dim retVal As Integer

retVal = 0
For i = 1 To 9
numOK = True
numStr = CStr(i)
For j = 1 To 9

k = (Int((Location - 1) / 9) * 9) + j
If Text1(k).Text = numStr Then

numOK = False

Exit For

End If

Next j

If numOK Then
For j = 1 To 9
k = (((Location - 1) Mod 9) + 1) + ((j - 1) * 9)
If Text1(k).Text = numStr Then

numOK = False

Exit For

End If

Next j

End If

If numOK Then

row = Int(Int((Location - 1) / 9) / 3)
col = Int(((Location - 1) Mod 9) / 3)
For j = 1 To 9
k = (((row * Rnd) + Int((j - 1) / 9)) * 9) + (col * 9) + ((j - 1) Mod 3) + 1

If Text1(k).Text = numStr Then

numOK = False

Exit For

End If

Next j

End If

ValidVals(i) = numOK
If numOK Then

retVal = retVal

End If

Next i

GetValidVals = retVal

End Function

Última edición por 0_kool; 28/02/2007 a las 23:00
  #17 (permalink)  
Antiguo 01/03/2007, 02:35
mfc
 
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

o kool eres un genio gracias de nuevo pero te quiero decir una pregunta ahora salen nueves en vez de 10 pero como hacer que no se repitan? dentro de un mismo cuadrado como puedo hacer que no se repitan a y decirte que eres un genio de la programacion ya que ni mis dos profesores de programacion encontraron el fallo y tu si ,gracias de nuevo.
  #18 (permalink)  
Antiguo 01/03/2007, 13:57
 
Fecha de Ingreso: febrero-2007
Mensajes: 24
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

vere que puedo hacer , lo que me mandaste es el texto incompleto del programa , trata de mandarme todo el proyecto para revisarlo el fin de semana
  #19 (permalink)  
Antiguo 02/03/2007, 03:40
mfc
 
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

gracias de nuevo o kool y una cosa cuando tu dices que te envie el sudoku completo a que te refieres porque yo te lo mende todo lo que tenia eso quiere decir que aun le falta mucho? o solo unos retoques? es que lo tengo de entregar el martes y solo queria preguntarte si me bastara el tiempo y me dara tiempo a entregarlo pero gracias de nuevo te voy a enviar el sudoku por email.
  #20 (permalink)  
Antiguo 02/03/2007, 05:31
 
Fecha de Ingreso: febrero-2007
Mensajes: 24
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

lo que tengas amigo , debo revisar algo
  #21 (permalink)  
Antiguo 02/03/2007, 09:27
mfc
 
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

Hola o kool ahora estaba mirando como hacer que los 9 no se repitan dentro de cada recuadro de 9x9 a y o kool te has fijado que los tres quadrados de arriba no se cambian porque es devido? bueno estoy en ello haver si me sale y si tienes alguna ayuda o sabes como hacerlo me podrias ayudar te lo voy a agradecer muchisimo, lo primero es descubrir que no se repitan los 9 en la misma recuadro 9x9, saludos
  #22 (permalink)  
Antiguo 03/03/2007, 17:22
mfc
 
Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Porque Me Salen El Numero 10 En El Sudoku???

alguien sabe porque me salen repetidos los numero 9? es que he intentado cambiar y poner randoms por todo pero no se porque se repiten alguien me puede dar una ayuda de como lo puedo hacer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:55.