Título: calcular frecuencias de números aleatorios Publicado por: Gusigusa en 16 Septiembre 2017, 02:30 am Hola a todo el mundo, he credo el siguiente código en el cual se le pide al usuario cuantos números aleatorios quiere y a partir de estos se les de dos archivos donde el primero los ordene de menor a mayor y el segundo de mayor a menor, después se saque la frecuencia de dichos números, el problema es que al calcular la frecuencia me esta dando puros ceros.
Código
· Los códigos deben ir en etiquetas GeSHi · No se debe escribir en mayúsculas >aquí las reglas del foro (http://foro.elhacker.net/reglas.htm) -Engel Lex Título: Re: calcular frecuencias de números aleatorios Publicado por: Serapis en 16 Septiembre 2017, 06:54 am A ver Cristina Gusigusa...
De entrada, no entiendo bien por qué pides dos veces la cantidad de números que se deben generar al azar... Citar printf("¿Cuantos numeros quieres que te genere?: "); scanf("%d",&x); printf("¿Cuantos numeros quieres que te genere?: "); scanf("%d",&p); Luego parece que el array 'a', tendrá el tamaño que el usuario da a 'x', pero el array 'b' tendrá el tamaño dado a 'p'... 'x' y 'p', va a ser que no sean el mismo valor (salvo que tu misma seas quien lo introduce o rara casualidad... Entonces si los arrays no van a ser del mismo tamaño y especialmente si no hay garantías de que el array 'b' sea mayor que el array 'a', acabará dando un error en la línea 53 Código: b[i]=a[i]; La indentación aparece confusa, y no queda claro (de un simple vistazo), que queda dentro de qué... sin un esfuerzo extra revisando llaves (que obvio hacer)... El ordenamiento inverso es redunndante, una vez hecho de mayor a menor o de menor a mayor, el inverso, basta con recorrer el array desde el final hacia atrás, hasta llegar a 0. Así el código queda resumido así para menor.dat Código: final = x-1 Código: Abrir Fichero 1 Aunque para ordenar usas un algoritmo de burbuja... que son muy lentos, pero para ejemplos son perfectamente válidos... Finalmente llegamos a la parte de contar las frecuencias... De entrada, date cuenta que si el array ya está ordenado es superfluo recorrer todo el array, las veces que un valor aparezca, estarán contiguos... ...porque el array está ordenado. Como no sabemos cuantos valores distintos hay, usaremos un bucle indefinido (Mientras... condición...repetir) Código: Abrir fichero Finalmente una aclaración... aquí se están contando el número de apariciones de cada valor, no la frecuencia. La frecuencia en realidad sería dividir el tamaño del array entre la cantidad de apariciones de cada valor... yendo más lejor se podría luego dar en porcentaje. (con luego, no quiero decir en otro bucle si no modificarlo en otro momento). Ojo, que como para Rand, no pones límites... si alguien pide pongamos 20 números es fácil que no se repita ninguna vez... acota Rand a un rango de valores, por ejemplo entre 100 y 110 y que la cantidad de números a generar sea (obligatorio) por lo menos el doble o el triple de lo que es el rango, para que haya 'repes'... ...es decir si 'x' (que introduce el usuario) es menor que el rango entre MinVal y MaxVal, repite la petición... MinVal y MaxVal serían los límites menor y mayor entre los que elegir al azar... Título: Re: calcular frecuencias de números aleatorios Publicado por: ivancea96 en 16 Septiembre 2017, 13:34 pm Código
Aquí estás escribiendo "x" veces la misma variable "y". |