elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  ARREGLOS VISUAL.NET
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ARREGLOS VISUAL.NET  (Leído 3,005 veces)
rochro

Desconectado Desconectado

Mensajes: 42


Ver Perfil
ARREGLOS VISUAL.NET
« en: 27 Junio 2014, 23:38 pm »

Hola, soy nueva con lo que es el desarrollo pero estoy intentando en que me salga un simulador de semana gps (referencia:  http://gps.geo.upm.es/www/calactal.htm) donde al colocar el día (del 1 al 365) me bote como resultado la semana gps que le corresponde: ejem:  034 corresponde a 1778. El código que generé y el cual no me funciona, es el siguiente:


           
Código
  1. Dim semanagps As Integer
  2.            Dim i As Integer = textbox1.text
  3.            Dim numdia(i) As Integer
  4.  
  5.            numdia(0) = Nothing  
  6.            numdia(1) = 1773          'si nos fijamos en el calendario la semana 1773
  7.            numdia(2) = 1773          'tiene del día 1 al 4 y las demás semanas tendrán
  8.            numdia(3) = 1773          'los siete días que comprende la semana, es por
  9.            numdia(4) = 1773          'ello que genero el for.
  10.            For i = 5 To 365 Step 1
  11.                For k = 1773 To 1825 Step 1
  12.                   For j = 1 To 7 Step 1
  13.                       numdia(i) = k + 1
  14.                    Next
  15.                Next
  16.            Next
  17.  
  18.            semanagps = numdia(i)

De repente mi lógica esta mal, quisiera que me apoyen por favor.

Gracias de antemano.




En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: ARREGLOS VISUAL.NET
« Respuesta #1 en: 28 Junio 2014, 01:05 am »

esto entiendo en tu codigo

por cada i hasta 365
por cada k en el rango
por cada j
numdia en la posicion i es igual a k +1

así que
Código
  1. numdia(5) = 1826
  2. numdia(6) = 1826
... ergo hasta el final...



observa con detalle... i te apunta a la posicion de el array... k genera un numero... j repite 7 veces la operación por cada k asignando el mismo valor de k+1 en el mismo i

creo que es mejor que hagas 2 for...

Código
  1. k = 1773
para i desde 5 hasta 365, step 7 (para ir de 7 en 7)
Código
  1. k = k+1
  2. para j desde 0 a 6
  3. numdia(i+j) es igual k

i te mueve semana a semana... j te mueve entre los días de la semana... como el numero (1773) solo cambia una vez por semana k se suma 1 en el ciclo exterior y j rellena el interior con este valor...


(sorry por lo de las etiquetas :P lo daba por pseudo-psuedo-codigo ya que era solo una explicación XD pero lo tendré en cuenta)


« Última modificación: 28 Junio 2014, 02:57 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: ARREGLOS VISUAL.NET
« Respuesta #2 en: 28 Junio 2014, 02:54 am »

Reacuerdo haber solucionado un tema parecido para VisualBasicScript, quizás te sirva de algo: http://foro.elhacker.net/scripting/batch_obtener_nombre_con_extension-t410321.0.html;msg1926804#msg1926804

Tu metodología no me parece la mas idonea, más si estás empezando, ya que tanto For anidado y además especificando pasos solo puede acabar liandote,
te muestro otro enfoque más liviano que he ideado:



Código
  1.    ' Creo un Array para almacenar como referencia el rango de semanas GPS.
  2.    ' Al valor inicial hay que descontarle un '1' (1772) porque el índice de un array empieza por '0'.
  3.    Private ReadOnly GPSWeeks As Integer() =
  4.        Enumerable.Range(1773 - 1, 1825).ToArray
  5.  
  6.    ' Obtengo la cantidad de dias del año actual.
  7.    ' Esto lo hago por los años bisiestos, que tienen '1' día más (366).
  8.    Private ReadOnly TotalDaysInYear As Integer =
  9.        (From month As Integer In Enumerable.Range(1, 12)
  10.        Select DateTime.DaysInMonth(Now.Year, month)).Sum
  11.  
  12.    ' Ya estamos listos para iterar los elementos ...del modo que uno prefiera :), esto solo es un ejemplo:
  13.    Private Sub Test() Handles MyBase.Shown
  14.  
  15.        Dim sb As New System.Text.StringBuilder
  16.  
  17.        For DayOfYear As Integer = 1 To TotalDaysInYear ' (365 or 366)
  18.  
  19.            ' Obtengo la fecha exacta dado el número del día del año actual.
  20.            Dim DateOfYear As DateTime = New DateTime(Now.Year, 1, 1).AddDays(DayOfYear - 1)
  21.  
  22.            sb.AppendLine(String.Format("Day Of Year: {0}", CStr(DayOfYear)))
  23.            sb.AppendLine(String.Format("Date: {0}", CStr(DateOfYear)))
  24.            sb.AppendLine(String.Format("GPS Week: {0}", CStr(Me.GPSWeeks(DatePart(DateInterval.WeekOfYear, DateOfYear)))))
  25.  
  26.            MessageBox.Show(sb.ToString, "GPS Calendar Info - By Elektro",
  27.                            MessageBoxButtons.OK, MessageBoxIcon.Information)
  28.  
  29.            sb.Clear()
  30.  
  31.        Next DayOfYear
  32.  
  33.    End Sub



@engel lex

Porfavor, ya que tienes el detalle de llevar las normas del foro en tu firma, la próxima vez podrías intentar respetar la utilización de las etiquetas GeShi, no es un muy buen ejemplo :P...
« Última modificación: 28 Junio 2014, 03:03 am por Eleкtro » En línea



rochro

Desconectado Desconectado

Mensajes: 42


Ver Perfil
Re: ARREGLOS VISUAL.NET
« Respuesta #3 en: 30 Junio 2014, 18:31 pm »





Está muy bien, ahora trato de adecuar tu codigo a mi aplicacion, ya que el día lo tendria que ingresar en un text ejem: 52 y que me de como resultado la semana ejem: del dia 52 la semana gps es 1780.

Gracias elektro =)
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: ARREGLOS VISUAL.NET
« Respuesta #4 en: 30 Junio 2014, 18:45 pm »

es muy facil de adaptar, incluso puedes crear una función de uso genérico para devolver todos los datos necesarios (dias, semanas gps) en un objeto, ejemplo:

Código
  1. Public Class GPSTest : Inherits Form
  2.  
  3.    ' TKey   = Day of year
  4.    ' TValue = GPS Week
  5.    Friend ReadOnly GPSDictionary As Dictionary(Of Integer, Integer) = Me.GetGPSDictionary
  6.  
  7.    Private Function GetGPSDictionary() As Dictionary(Of Integer, Integer)
  8.  
  9.        Dim ThisYear As Integer = Now.Year
  10.  
  11.        Dim DaysInThisYear As Integer = (From month As Integer In Enumerable.Range(1, 12)
  12.                                         Select DateTime.DaysInMonth(ThisYear, month)).Sum
  13.  
  14.        Dim GPSWeeks As IEnumerable(Of Integer) = Enumerable.Range(1773 - 1, 1825)
  15.  
  16.        Dim Result As New Dictionary(Of Integer, Integer)
  17.  
  18.        For Day As Integer = 1 To DaysInThisYear
  19.  
  20.            Result.Add(Day, GPSWeeks(DatePart(DateInterval.WeekOfYear,
  21.                                              New DateTime(ThisYear, 1, 1).AddDays(Day - 1))))
  22.  
  23.        Next Day
  24.  
  25.        Return Result
  26.  
  27.    End Function
  28.  
  29.    Private Sub Test() Handles MyBase.Load
  30.  
  31.        MessageBox.Show(Me.GPSDictionary(CInt(InputBox("Intoduce un dia del año", "Dia del año", 1))), "Semana GPS:",
  32.                        MessageBoxButtons.OK, MessageBoxIcon.Information)
  33.  
  34.        Application.Exit()
  35.  
  36.    End Sub
  37.  
  38. End Class

Saludos
« Última modificación: 30 Junio 2014, 20:06 pm por Eleкtro » En línea



rochro

Desconectado Desconectado

Mensajes: 42


Ver Perfil
Re: ARREGLOS VISUAL.NET
« Respuesta #5 en: 3 Julio 2014, 22:34 pm »

es muy facil de adaptar, incluso puedes crear una función de uso genérico para devolver todos los datos necesarios (dias, semanas gps) en un objeto, ejemplo:


Elektro, muchas gracias por apoyarme. Está OK  :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
con arreglos
Java
artang 0 2,244 Último mensaje 31 Marzo 2009, 04:54 am
por artang
arreglos en c
Programación C/C++
el futuro 5 3,460 Último mensaje 21 Mayo 2010, 02:08 am
por @synthesize
Duda:Arreglos en visual Basic 2010 Express - Eliminar, Insertar,Modificar
.NET (C#, VB.NET, ASP)
Mioshi 2 3,410 Último mensaje 4 Octubre 2012, 05:17 am
por Mioshi
Arreglos
Programación C/C++
angel_davidsr 3 2,425 Último mensaje 17 Octubre 2012, 19:46 pm
por Puntoinfinito
Arreglos c++
Programación C/C++
alfonsopf95 2 2,101 Último mensaje 7 Abril 2014, 15:22 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines