AYUDA PARA LEER DATOS DE UN TXT CON AUTOIT.......

Iniciado por markus_bitman, 30 Marzo 2010, 07:55 AM

0 Miembros y 1 Visitante están viendo este tema.

markus_bitman

Hola buenas noches, mi duda es la siguiente...
Realice un pequeño programita que simula 100.000 jugadas de una ruleta Inglesa y que los resultados me los guardara en un archivo llamado Resultados.txt, el programa trabaja a la perfección pero mi objetivo no es solamente obtener las 100.000 simulaciones sino que me arroje resultados estadisticos. Solo para empezar me gustaria que me dijera el programa cuantas veces se repiten los numeros y para ello una vez que generé los 100.000 resultados lo que hice fue hacer otro programa que me leyera esos datos y  me dijera cuantas veces se repite cada numero. Aca les muestro el programita para generar o simular 100.000 jugadas:


$file= FileOpen("Resultados.txt", 1)
Dim $k
For $i = 1 to 100 Step 1
$k = Random(0,37,1)
if $k = 37 Then
$k = "00"
EndIf
FileWriteLine($file, $k & @CRLF)
Next
FileClose($file)


Ahora realice otro script para analizar y les  muestro los pequeños avances que logre para capturar cada una de los resultados en cada linea.

$file = FileOpen("Resultados.txt", 0)

While 1
   $line = FileReadLine($file)
   If @error = -1 Then ExitLoop
   MsgBox(0, "Jugadas:", $line)
Wend

FileClose($file)


Como se podrán dar cuenta, solo me muestra por un Msgbox el resultado por cada linea. Lo que deseo hacer es que me guarde en otro txt llamado analisis.txt el analisis de repeticion de cada numero. Supongo que esto se hace con el uso de contadores y Arrays pero no se como!!!!

Les agradeceria de antemano si alguien me puede ayudar..

Saludosssss......


Novlucker

#1
Dos opciones :P

1- Descartar autoit para el tema de las estísticas ... Excel > Datos > Obtener datos externos > Importar datos, y buscas el archivo txt, te preguntará donde "volcarlo" y te lo generará dentro de tu planilla.

Le agregas un nombre a la columna, como por ejemplo "Numeros", y generas una tabla dinámica con el recuento de los valores

2- Utilizar ObjCreate("Scripting.Dictionary") y generar un diccionario con cada número que sacas

Por si acaso, un diccionario es una colección por pares, algo como

A = 1
B = 2
C = 3

Y lo que te estoy diciendo sería más o menos así en pseudocódigo:

  • Saco número
  • Número esta dentro de diccionario?
  • SI: busco el número en el diccionario y reviso su valor, sumo uno a su valor
  • NO: agrego número en el diccionario y le asigno 1 como valor

Al terminar tendrás en memoria una colección que te dirá que X valor salió 8 veces, y que el número Z salió 14, etc

Esto también es conveniente hacerlo durante la generación del listado principal ;)

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

markus_bitman

#2
Ok podria ser pero tengo una duda. yo tengo idea de que se pueda hacer con algo mas o menos asi:

$file = FileOpen("Resultados.txt", 0)
for $i = 1 to UBound($file) - 1
$line = FileReadLine($file, $i)
       MsgBox(0, "Line read:", $line)
Next
FileClose($file)


pero no me funciona, yo lo que pienso es ver si se puede utilizar el For ... to... Next.
Haber como seria un script que me cuente cuantas lineas tiene el archivo txt llamado en este caso resultados? Yo previamente le meti 10 lineas de datos. Como hago un contador de lineas?

Por favor..

Novlucker

No tengo para probar y no recuerdo muchas cosas de Autoit, pero no tienes la opción de readall?

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

markus_bitman

#4
Bueno por lo menos ya me funciona en parte este codigo.

$file = FileOpen("Resultados.txt", 0)
for $i = 1 to 10
$line = FileReadLine($file, $i)
       MsgBox(0, "Line read:", $line)
Next
FileClose($file)


Pero ahi vamos dandole!!!!!

leogtz

Cita de: markus_bitman en 30 Marzo 2010, 21:56 PM
Bueno por lo menos ya me funciona en parte este codigo.

$file = FileOpen("Resultados.txt", 0)
for $i = 1 to 10
$line = FileReadLine($file, $i)
       MsgBox(0, "Line read:", $line)
Next
FileClose($file)

Pero ahi vamos dandole!!!!!

Utiliza la etiqueta de código o cerraré tu post.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com