Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: luis456 en 4 Octubre 2014, 20:55 PM

Título: Descifrar operaciones en resultados correlativos
Publicado por: luis456 en 4 Octubre 2014, 20:55 PM
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
Título: Re: Descifrar operaciones en resultados correlativos
Publicado por: 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í:

Código (vbnet) [Seleccionar]
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.
Título: Re: Descifrar operaciones en resultados correlativos
Publicado por: 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
Título: Re: Descifrar operaciones en resultados correlativos
Publicado por: Eleкtro en 5 Octubre 2014, 19:33 PM
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!
Título: Re: Descifrar operaciones en resultados correlativos
Publicado por: luis456 en 6 Octubre 2014, 06:12 AM
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í:

Código (vbnet) [Seleccionar]
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



Título: Re: Descifrar operaciones en resultados correlativos
Publicado por: Eleкtro en 6 Octubre 2014, 15:32 PM
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!
Título: Re: Descifrar operaciones en resultados correlativos
Publicado por: luis456 en 7 Octubre 2014, 13:42 PM
:) 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

Código (vbnet) [Seleccionar]
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

Título: Re: Descifrar operaciones en resultados correlativos
Publicado por: Eleкtro en 7 Octubre 2014, 18:34 PM
Cita de: luis456 en  7 Octubre 2014, 13:42 PMme da error de ruta

Código (vbnet,6) [Seleccionar]

   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.txt

Además, ten en cuenta que si el directorio no existe, primero deberás crearlo.

Saludos!
Título: Re: Descifrar operaciones en resultados correlativos
Publicado por: luis456 en 7 Octubre 2014, 19:48 PM
????


c:\Prueba.txt

Excepción del tipo 'System.IO.DirectoryNotFoundException' en mscorlib.dll
Título: Re: Descifrar operaciones en resultados correlativos
Publicado por: Eleкtro en 7 Octubre 2014, 20:04 PM
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 :-/
Título: Re: Descifrar operaciones en resultados correlativos
Publicado por: luis456 en 7 Octubre 2014, 20:22 PM
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