Descifrar operaciones en resultados correlativos, ( hoy sabado jej a programar)
la idea es saber como se llega de un numero inicial al segundo numero y como desde el segundo numero al tercero
y asi susecivamente con toda la muestra en el txt
estos numeros estan en un txt.el procedimiento que hago es, tomo el primer numero y lo comparo con el segundo para
saber que operaciones matematicas hay entre numero y numero.a mano se hacerlo pero npi para hacerlo en net
ejemplo :
01 07 08 20 23 39 <---numero inicial en el txt (pueden ser miles)
+ 18 + 15 + 19 + 9 + 10 + 7 <------- operaciones para llegar al segundo numero
19 22 27 29 33 46 <---segundo numero
- 18 - 18 - 16 - 12 - 11 -15 <--operaciones para llegar al tercer numero
01 04 11 17 22 31 <- tercer numero
En otro txt mostrar:
solo las operaciones encontradas
ejemplo
+ 18 + 15 + 19 + 9 + 10 + 7
- 18 - 18 - 16 - 12 - 11 -15
saludos
Luis
Solo tienes que obtener la diferencia, no se que tipo de complicación le encuentras para realizar lo mismo en un código.
Prueba así:
Public Class Form1
Private Shadows Sub Load() Handles MyBase.Load
Dim sb As New System.Text.StringBuilder
Dim Values As New List(Of Integer()) From
{
({1I, 19, 1I}),
({7I, 22, 4I}),
({8I, 27, 11}),
({20, 29, 17}),
({23, 33, 22}),
({39, 46, 31})
}
For Each ValueCol() As Integer In Values
Dim Value1 As Integer = ValueCol(0)
Dim Value2 As Integer = ValueCol(1)
Dim Value3 As Integer = ValueCol(2)
Dim Diff1 As String = GetDifferenceExpression(Value1, Value2)
Dim Diff2 As String = GetDifferenceExpression(Value2, Value3)
sb.AppendLine(String.Format("{0} -> {1} = {2}",
Value1.ToString("00"), Value2.ToString("00"), Diff1))
sb.AppendLine(String.Format("{0} -> {1} = {2}",
Value2.ToString("00"), Value3.ToString("00"), Diff2))
sb.AppendLine()
Next ValueCol
MessageBox.Show(sb.ToString)
Application.Exit()
End Sub
' Get Difference expression
' ( By Elektro )
'
' Usage Examples:
' MessageBox.Show(GetDifferenceExpression(5, 10))
'
''' <summary>
''' Gets the arithmetic sum/rest difference expression between two values.
''' </summary>
''' <param name="Value1">The first value.</param>
''' <param name="Value2">The second value.</param>
''' <returns>The arithmetic expression.</returns>
Friend Function GetDifferenceExpression(ByVal Value1 As Long, ByVal Value2 As Long) As String
Select Case Value2
Case Is > Value1 ' Value2 is bigger than Value1.
Return String.Format("+{0}", CStr(Value2 - Value1))
Case Is < Value1 ' Value2 is lower than Value1.
Return String.Format("-{0}", CStr(Value1 - Value2))
Case Else ' Value2 is equals to Value1.
Return "0"
End Select
End Function
End Class
(http://i.imgur.com/nGzS9VY.png)
Saludos.
Bueno no se que ha pasado que no entraba el foro,me imagino que una caida de servidor :)
Gracias elektro lo revizo :)
Luis
Cita de: luis456 en 5 Octubre 2014, 17:49 PM
Bueno no se que ha pasado que no entraba el foro,me imagino que una caida de servidor :)
Gracias elektro lo revizo :)
Luis
Dímelo a mi, a los 10 minutos de leer tu pregunta (ayer sabado por la noche) ya habia escrito el ejemplo de arriba para ti y te lo quería mostrar para que tuvieras algo con lo que programar '
por que era sábado' como dijiste ;), pero hasta hoy por la mañana no pude postear el code xD.
PD: Todo es por culpa de un individuo o una panda de Juanckers que se dedican a Ddosear el foro, pero bueno, en este mundo debemos aprender a convivir con gente (y gentuza) de todo tipo.Saludos!
Cita de: Eleкtro en 5 Octubre 2014, 09:58 AM
Solo tienes que obtener la diferencia, no se que tipo de complicación le encuentras para realizar lo mismo en un código.
Prueba así:
Public Class Form1
Private Shadows Sub Load() Handles MyBase.Load
Dim sb As New System.Text.StringBuilder
Dim Values As New List(Of Integer()) From
{
({1I, 19, 1I}),
({7I, 22, 4I}),
({8I, 27, 11}),
({20, 29, 17}),
({23, 33, 22}),
({39, 46, 31})
}
For Each ValueCol() As Integer In Values
Dim Value1 As Integer = ValueCol(0)
Dim Value2 As Integer = ValueCol(1)
Dim Value3 As Integer = ValueCol(2)
Dim Diff1 As String = GetDifferenceExpression(Value1, Value2)
Dim Diff2 As String = GetDifferenceExpression(Value2, Value3)
sb.AppendLine(String.Format("{0} -> {1} = {2}",
Value1.ToString("00"), Value2.ToString("00"), Diff1))
sb.AppendLine(String.Format("{0} -> {1} = {2}",
Value2.ToString("00"), Value3.ToString("00"), Diff2))
sb.AppendLine()
Next ValueCol
MessageBox.Show(sb.ToString)
Application.Exit()
End Sub
' Get Difference expression
' ( By Elektro )
'
' Usage Examples:
' MessageBox.Show(GetDifferenceExpression(5, 10))
'
''' <summary>
''' Gets the arithmetic sum/rest difference expression between two values.
''' </summary>
''' <param name="Value1">The first value.</param>
''' <param name="Value2">The second value.</param>
''' <returns>The arithmetic expression.</returns>
Friend Function GetDifferenceExpression(ByVal Value1 As Long, ByVal Value2 As Long) As String
Select Case Value2
Case Is > Value1 ' Value2 is bigger than Value1.
Return String.Format("+{0}", CStr(Value2 - Value1))
Case Is < Value1 ' Value2 is lower than Value1.
Return String.Format("-{0}", CStr(Value1 - Value2))
Case Else ' Value2 is equals to Value1.
Return "0"
End Select
End Function
End Class
(http://i.imgur.com/nGzS9VY.png)
Saludos.
En si el código hace lo que quería exactamente ,pero como no puedo meter miles de números a mano :) ¿ como y por donde empiezo a romperme el coco para que pueda hacerlo desde un txt que tenga ya estos números ? estos números pueden de de cuatro números ( 10 20 30 80 ) hasta 10 números ( 01 05 06 20 25 40 50 55 60 90 ) por ejemplo y que devuelva los resultados ademas de pantalla en otro txt ?
Luis
Cita de: luis456 en 6 Octubre 2014, 06:12 AM¿ como y por donde empiezo a romperme el coco para que pueda hacerlo desde un txt que tenga ya estos números ?
->
File.ReadAllLines(String) (http://msdn.microsoft.com/en-us/library/system.io.file.readalllines%28v=vs.110%29.aspx)
Cita de: luis456 en 6 Octubre 2014, 06:12 AMestos números pueden de de cuatro números ( 10 20 30 80 ) hasta 10 números ( 01 05 06 20 25 40 50 55 60 90 ) por ejemplo
->
For Each...Next (http://msdn.microsoft.com/en-us/library/5ebk1751.aspx)
+
->
String().Count (http://msdn.microsoft.com/en-us/library/vstudio/bb919303%28v=vs.90%29.aspx)
+
GetDifferenceExpression(Long, Long) by Elektro (http://foro.elhacker.net/net/descifrar_operaciones_en_resultados_correlativos-t422491.0.html;msg1969649#msg1969649)
Saludos!
:) Bueno en el poquito rato he modificado para crear el archivo pero no se que hago mal .ya que me da error de ruta y la he cambiado varias veces ?? y voy a pie jeje
Public Class Form1
Private Shadows Sub Load() Handles MyBase.Load
Dim sb As New System.Text.StringBuilder
Dim Values As New List(Of Integer()) From
{
({1I, 20, 1I}),
({7I, 22, 4I}),
({8I, 27, 11}),
({20, 29, 17}),
({23, 33, 22}),
({39, 46, 31})
}
For Each ValueCol() As Integer In Values
Dim Value1 As Integer = ValueCol(0)
Dim Value2 As Integer = ValueCol(1)
Dim Value3 As Integer = ValueCol(2)
Dim Diff1 As String = GetDifferenceExpression(Value1, Value2)
Dim Diff2 As String = GetDifferenceExpression(Value2, Value3)
sb.AppendLine(String.Format("{0} -> {1} = {2}",
Value1.ToString("00"), Value2.ToString("00"), Diff1))
sb.AppendLine(String.Format("{0} -> {1} = {2}",
Value2.ToString("00"), Value3.ToString("00"), Diff2))
sb.AppendLine()
Next ValueCol
MessageBox.Show(sb.ToString)
Application.Exit()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Try
Dim Archivo As System.IO.FileStream
' crea un archivo vacio prueba.txt
Archivo = System.IO.File.Create("c:Documentos\Prueba.txt")
' error
Catch oe As Exception
MsgBox(oe.Message, MsgBoxStyle.Critical)
End Try
End Sub
' Get Difference expression
' ( By Elektro )
'
' Usage Examples:
' MessageBox.Show(GetDifferenceExpression(5, 10))
'
''' <summary>
''' Gets the arithmetic sum/rest difference expression between two values.
''' </summary>
''' <param name="Value1">The first value.</param>
''' <param name="Value2">The second value.</param>
''' <returns>The arithmetic expression.</returns>
Friend Function GetDifferenceExpression(ByVal Value1 As Long, ByVal Value2 As Long) As String
Select Case Value2
Case Is > Value1 ' Value2 is bigger than Value1.
Return String.Format("+{0}", CStr(Value2 - Value1))
Case Is < Value1 ' Value2 is lower than Value1.
Return String.Format("-{0}", CStr(Value1 - Value2))
Case Else ' Value2 is equals to Value1.
Return "0"
End Select
End Function
End Class
ya que en programacion no da error solo una pantalla que dice " no se puede encontrar parte de la ruta ) lo que me estraña es que dice " PARTE " no lo habia visto antes :)
luis
Cita de: luis456 en 7 Octubre 2014, 13:42 PMme da error de ruta
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Try
Dim Archivo As System.IO.FileStream
' crea un archivo vacio prueba.txt
Archivo = System.IO.File.Create("c:Documentos\Prueba.txt")
' error
Catch oe As Exception
MsgBox(oe.Message, MsgBoxStyle.Critical)
End Try
End Sub
Estoy harto de repetir que porfavor cuando tengas una excepción muestres el mensaje de error tal y como es.
Te faltó por añadir un backslash en la ruta, después de la letra del dispositivo:
c:\Documentos\Prueba.txtAdemás, ten en cuenta que si el directorio no existe, primero deberás crearlo.
Saludos!
????
c:\Prueba.txt
Excepción del tipo 'System.IO.DirectoryNotFoundException' en mscorlib.dll
Eso si que es raro xD
Quizás estás intentando procesar la ruta como directorio, y no como archivo, porque de otra forma es ilógico que te de ese error. Muestra el código donde te salta esa excepción :-/
Solucionado
Archivo = System.IO.File.Create("c:\asi\Prueba.txt") ya lo crea :) lo que pasa creo yo es que como siempre que quiero hacer algo en c: siempre me pide permisos de administrador y de esta forma no me lo pide ,bien ahora a ver como me la monto para abrir el que tiene los datos :)
luis