• Domingo 22 de Diciembre de 2024, 23:22

Autor Tema:  Datos de Archivo repetidos o Duplicados en el encabezado de  (Leído 2542 veces)

Metodos Numericos

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Datos de Archivo repetidos o Duplicados en el encabezado de
« en: Viernes 2 de Octubre de 2009, 22:33 »
0
Hola a todos
realice un programa con la ayuda de ustedes
mi pregunta es que cargo el archivo que contiene los siguientes datos

75
75
59
43
27
11
10
24
38
52
66
50
34
18
2
1


y el codigo es asi

Private Sub Command5_Click()

Dim FSO As New FileSystemObject
Dim tst As TextStream
Dim n As String
Dim c As Integer
Set tst = FSO.OpenTextFile("C:archivo.txt", ForReading, True)
Me.Picture5.Cls
Do Until tst.AtEndOfStream
n = tst.ReadLine
If CInt(n) >= 60 And CInt(n) <= 75 Then
g = g + 1
Me.Picture5.Print n
If g = 5 Then
Exit Do
End If
End If
Loop

tst.Close
Set FSO = Nothing
End Sub





no hay problema con el
El codigo no genera el archivo
pero en el archivo me muestra solo numeros repetidos/Duplicados en el encabezado del archivo, como ejemplo el 75
yo solo quiero que muestre un solo un numero que en este caso es 75
el archivo lo importo de una base de datos
agradesco sus valiosas ayudas

Exitos a ustedes

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Datos de Archivo repetidos o Duplicados en el encabezado de
« Respuesta #1 en: Sábado 3 de Octubre de 2009, 00:56 »
0
Tu problema es que quieres aprender a base de preguntas y ese modo de aprender puede costarte años, por qué, porque hasta que no te sueceda un problema no tendrás necesidad de preguntar, más aún si tienes un problema intentarás resolverlo por tu cuenta, si se soluciona ya no preguntarás por lo que no profundizas en la raíz de las cuestiones. Esto ocasiona un aprendizaje lleno de lagunas.

Respecto de los que estamos en la 'otra parte', nos fastidia que alguien 'basuree' el foro con preguntas que no son técnicas y cuyo respuesta es básica y se encuentra en los fundamentos sea de la programación o del lenguaje.

Entonces por favor, tómate un manual de programación y estúdialo, pero ya ni siquiera de VB si no de principios de la programación. Tienes carencias tales como que no sabes lo que es un bucle ni un condicional. El foro no está pensado para atender 'programadores de parvulario', hay que tener una base mínima, simepre se podrá responder a una cuestión tonta, pero sólo si es puntual, si se convierte en la norma será mejor emigrar a otro lugar...

Tu dices que quieres obtener 1 único valor pero que te aparecen varios, entonces porque le dices 'if g= 5 then exit do', en que quedamos quieres tomar 1 o 5 (si 'aparecen')... ???????

p.d.:
Por otro lado tampoco sabes preguntar, releyendo tu pregunta me hace dudad de si lo que quieres no es un '1 sólo número', sino que '1 número sólo aparezca 1 vez'... Si no eres capaz de ordenar tus pensamientos para solicitar lo que  necesitas será bastante más difícil que otros entiendan lo que tu quieres decir si tú mismo no sabes lo que quieres preguntar.

en el supuesto de que fuere este caso (tenemos que hablar con hipótesis en situaciones así), lo que tienes que hacer es primero recoger los elementos que cumplen el patrón y luego filtrarlos para que no haya repetidos. en este caso si se trataría de una cuestión técnica, pués aunque la solución es relativamente fácil, la gente no suele encontrarla. Trataré esta resolución en el siguiente mensaje...

Por favor aprende los principios básicos de programación, no puedes pretender correr sin saber primero andar.
«Ma non troppo»
----> ModoVacaciones = False<----

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Datos de Archivo repetidos o Duplicados en el encabezado de
« Respuesta #2 en: Sábado 3 de Octubre de 2009, 02:13 »
0
Filtrar una lista de modo que sólo quede una copia de cada elemento sin repetición... (este o algo parecido es la idea que debería ser el título del mensaje).

Sea una lista de elementos (en el ejemplo consideramos números y más concretamente usaremos byte), dicha lista contiene una cantidad arbitraria de elementos, se desea obtener una lista que incluya única copia de cada eleemnto.

Para crear elcódigo y una demostración visual, vamos a necesitar 2 listbox y 2 botones.
* El lis1 contendrá un volcado con la lista de elementos original,
* El lis2 tendrá un volcado cion la lista de elementos ya filtrados.
* El btn1 crea una lista de elementos aleatoria (nos aseguramos que existan repetidos) y presenta la listas en lis1
* El btn2 lama a la función que filtra la lista y presenta el resultado en el lis2

Código previo:
Código: Visual Basic
  1.  
  2. ' nótese la declaración de la matriz a nivel de formulario...
  3. Dim ElemOrig(0 To 9999) As Byte
  4.  
  5.  
  6. Private Sub Form_Load()
  7.    ' queremos usar el generador aleatorio de números, implantamos una semilla diferente en cada uso.
  8.     Randomize Timer
  9. End Sub
  10.  
  11.  

Código del boton 1:
* El btn1 crea una lista de elementos aleatoria (nos aseguramos que existan repetidos) y presenta la listas en lis1
Código: Visual Basic
  1.  
  2. Private Sub Btn1_Click()
  3.     Dim k As Integer
  4.    
  5.     Lis1.Clear ' vaciamos elcontenido actual
  6.    
  7.     ' un byte tiene un valor cuyo rango oscila entre 0 y 255, si proveemos más de 256 valores
  8.     ' tenemos la certeza de que habrá repetidos.
  9.    
  10.     ' usamos 10.000 elemntos debe haber alrededor de 40 repeticiones de cada elemento
  11.     For k = 0 To 9999
  12.         ElemOrig(k) = Int((255 + 1) * Rnd)
  13.         Lis1.AddItem (ElemOrig(k))
  14.     Next
  15. End Sub
  16.  
  17.  
Debe notarse que el generador aleatorio, porporciona realmente valores  pseudo-aleatorios.

Código del botón 2: * El btn2 lama a la función que filtra la lista y presenta el resultado en el lis2
Código: Visual Basic
  1.  
  2. Private Sub Btn2_Click()
  3.     Dim k As Integer, n As Integer
  4.     Dim ElemFil() As Byte
  5.    
  6.     ' vaciamos elcontenido previo
  7.     Lis2.Clear
  8.    
  9.     ' ejecutamos el filtrado
  10.     ElemFil = FiltrarUnicos(n)
  11.    
  12.     ' volcamos la matriz obtenida en el listbox
  13.     For k = 0 To n - 1
  14.         Lis2.AddItem (ElemFil(k))
  15.     Next
  16.    
  17.     Erase ElemFil ' liberamos memoria ...
  18.  
  19.     ' indicamos cuantos elementos únicos se ha hallado.
  20.     MsgBox "se han encontrado " & n & "  elementos únicos sonre los 10.000 originales."
  21. End Sub
  22.  
  23.  

Código de la función que realiza el filtrado.
Código: Visual Basic
  1.  
  2. ' devuelve el número de elementos únicos
  3. Private Function FiltrarUnicos(ByRef n As Integer) As Byte()
  4.     Dim k As Integer
  5.     Dim ls() As Integer
  6.     Dim ElemFil() As Byte
  7.  
  8.     ' Hacemos que la lista de devolución tenga el mismo tamaño que la original
  9.     ReDim ls(0 To 9999)
  10.     ReDim ElemFil(0 To 999)
  11.      
  12.     ' vamos recreando en una lista intermedia, la cantidad de apariciones de cada elemento
  13.     For k = 0 To 9999
  14.         ls(ElemOrig(k)) = ls(ElemOrig(k)) + 1
  15.     Next
  16.    
  17.     ' si la lista intermedia tiene un valor mayor que 0 ese elemnto existe en la lista original, lo tomamos
  18.     For k = 0 To 9999
  19.         If ls(k) > 0 Then
  20.             ElemFil(n) = k
  21.             n = n + 1
  22.         End If
  23.     Next
  24.     Erase ls
  25.     ' la lista definitiva, tiene espacio no usado lo retiramos
  26.     ReDim Preserve ElemFil(0 To n - 1)
  27.    
  28.     ' devolvemos la lista filtrada ordenada de menor a mayor.
  29.     FiltrarUnicos = ElemFil
  30.     Erase ElemFil
  31. End Function
  32.  
  33.  

Como verás sólo podrás aplicarlo a tu código si logras entenderlo y por tanto sabes como implementarlo... esto es, no te voy a dar el código exacto a tu problema, el objetivo es que aprendas para resolver por tí mismo los problemas que se presenten no resolver un problema puntual a base copiar y pegar.

Esta solución tiene algunos inconvenientes que detallo.
Utiliza memoria adicional por loque si una lista tiene pongamos 100 millones de elementos puede suponer un gran consumo de memoria en el equipo. Debe tenerse en cuenta...
No vale para casos donde los elementos tienen valores decimales (se puede modificar para lograr que valga, pero la memoria a usar se dispara * 10 por cada decimal usado, es decir si tienes una matriz de 10.000 elementos la matriz intermedia para 4 decimales (por ejemplo un tipo de datos currency) usaría 10.000 * (10^4) elemntos es decir : 10.000.000 (10 millones). Este valor se duplica por que la matriz de salida inicalmente debe contemplar el mismo número de elemtnos que la matriz intermedia.

En definitiva sólo es útil para números enteros y atendiendo al tamaño de la matriz para vigilar la memoria usada. Tiene a favor que es el más rápido.
Este algoritmo es una implementación del algoritmo conocido como 'counting', que se utiliza para ordenar números (que tiene las mismas limitaciones descritas), sólo que en este caso hay una modificación dirigida a filtrar elementos repetidos.
«Ma non troppo»
----> ModoVacaciones = False<----

Metodos Numericos

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: Datos de Archivo repetidos o Duplicados en el encabezado de
« Respuesta #3 en: Domingo 4 de Octubre de 2009, 02:27 »
0
Bueno peimero que todo señor estoy preguntado una cosa que si YO NOSE Y ES CIERTO
Y SABEN QUE SEÑORES MIS PREGUNTAS FUERON PARA QUE RESOLVIERAN A SE SEAN SIMPLES Y UNA COSA PARA LOS MIENBROS NO DOY MAS A ESTE FORO
Y USTED SEÑOR RESPECTE A LAS PERSONAS A SI SE QUE USTED SEA EL MEJOR DE ESTE MUNDO EN PROGRAMACION PERO COMO PERSONA ES UNA PERSONA DESPOTA EN MI PAIS  PARA RESUMIRLO USTED EN UNA PROQUERIA Y RESPESTE SEÑOR
QUE SOLO PEDI UNA PREGUNTA SI SE PARECIO MUY ABURRIDA ERA MEJOR QUE NO LA CONTESTARA Y NO MIRE BIEN SU CODIGO PORQUE NO MEGUSTO LA FORMA DE DIRIGIR A UNA PERSONA QUE NECESITABA AYUDA NO REGAÑOS
NO NO NO SERE MAS MIEMBRO DE ESTE FORO asi que al moderador le envio un correo para no ser mas de este miembro y perdone por lo demas

GRACIAS

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Datos de Archivo repetidos o Duplicados en el encabezado de
« Respuesta #4 en: Domingo 4 de Octubre de 2009, 11:03 »
0
Si, así se hace.
Insultar a quien no ha hecho otra cosa que darte consejos (no verás que te haya insultado en ninguna parte) y despreciar el tiempo que te he dedicado... y todo sólo porque tu orgullo es más grande que tu entusiasmo por la programación. La programación la tendrás a un nivel bajo, pero el orgullo está al tope. Una palabra que no te gusta y rebosas y eso que sólo te doy consejos y te lo pido por favor.

Sé noble e inteligente: toma la ayuda que te he ofrecido para resolver tu problema, tómate un manual y tiempo al menos para leerlo (siempre se queda algo) y no sueltes espumarajos por la boca...  careces de ambas, ni nobleza ni inteligencia, pero lleno  de ego  ...Vaya lobo enfundado en piel de cordero...

Tú mismo...
«Ma non troppo»
----> ModoVacaciones = False<----

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Datos de Archivo repetidos o Duplicados en el encabezado de
« Respuesta #5 en: Lunes 5 de Octubre de 2009, 13:43 »
0
Totalmente de acuerdo con Nebire (para variar  :lol: ).

Metodos Numericos  :bad:

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Datos de Archivo repetidos o Duplicados en el encabezado de
« Respuesta #6 en: Miércoles 7 de Octubre de 2009, 20:17 »
0
No pasa nada companieros, creo que es un mal entendido, animo vamos a aportar  :beer:  B)  

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================