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.
· Los códigos deben ir en etiquetas GeSHi
· No se debe escribir en mayúsculas
>aquí las reglas del foro
-Engel Lex
Código (c) [Seleccionar]
//PROGRAMA CRISTINA!!//
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int i,f,g,x,p;//Estas variables son usadas en los dos FILE//
int j;//Estas variables son usadas en el apartado de la frecuencia relativa//
int main ()
{
printf ("%4s\n%4s\n%4s\n","**********","CRISTINA","**********");
printf("¿Cuantos numeros quieres que te genere?: ");
scanf("%d",&x);
printf("¿Cuantos numeros quieres que te genere?: ");
scanf("%d",&p);
int a[x],b[p], luca[x],r,s,y;//Las variables locales que seran usadas tanto para ordenar los datos como para sacar la frecuencia//
srand( time(NULL) );
for (i=0;i<=x-1;i=i+1)
{
a[i]=rand();
}
FILE *m;
m= fopen ("mayor.dat","w");
for(f=1;f<=x-1;f++) /*En este for, es importante que no se vuelva ha establecer la variable i
pues al momento de hacer la cuenta lo confunde y no hace el ordenamiento.*/
{
for (i=0;i<=x-2;i++)
{
if (a[i]<a[i+1])
{
g=a[i];
a[i]=a[i+1];
a[i+1]=g;
}
}
}
for (i=0;i<=x-1;i++)
{
fprintf(m,"\n %4d\n",a[i]);
fprintf(m,"\n");
b[i]=a[i];
}
fclose (m); //El primer archivo ya ha sido creado, este tiene un ordenamiento de mayor a menor//
//Para crear el segundo ordenamiento se puede usar la misma estructura solo se cambia la desigualdad y el nombre interno der archivo//
FILE *n;
n= fopen ("menor.dat","w");
for(f=1;f<=x-1;f++)
{
for (i=0;i<=x-2;i++)
{
if (a[i]>a[i+1])
{
g=a[i];
a[i]=a[i+1];
a[i+1]=g;
}
}
}
for (i=0;i<=x-1;i++)
{
fprintf(n,"\n %4d\n",a[i]);
fprintf(n,"\n");
}
fclose (n);
FILE *t;
t=fopen("frecuencia.dat","w");
for (i=0;i<x;i++){
for(j=1;j<p;j++){
if(a[i]==j){
y=a[i]=a[i]+1;
}
}
}
for (i=0;i<x;i++){
fprintf(t," %7d",y);
}
fclose(t);
return 0;
}
· Los códigos deben ir en etiquetas GeSHi
· No se debe escribir en mayúsculas
>aquí las reglas del foro
-Engel Lex