| |||
Respuesta: como sacar la moda de n elementos Sugerencia: Utiliza una tabla hash en la que la clave sea el elemento y el valor sea la cuenta (que ira cambiando) de las veces que aparece dicho elemento. |
| |||
Respuesta: como sacar la moda de n elementos mmm... lo veo muy dificil, por lo menos de hacer con variables, porque deberias tener una variable para cada numero y los numeros son infinitos 0.o Tal vez exista una forma de hacerla, pero no la conozco, tal vez si fuera de tal numero a otro numero te podria ayudar |
| ||||
Respuesta: como sacar la moda de n elementos Se me ocurren dos formas
De cualquiera de las dos maneras deberás recorrer el conjunto de registros cada vez que el usuario ingresa un nuevo valor para saber si existe y sólo sumar repeticiones o si no existe y agregarlo. Por último deberás recorrer el conjunto de registros para conocer cuál es el que se repite más (número mayor en campo repeticiones). Es un ejercicio interesante así que ya está en mi lista de ejercicios a resolver En los días por venir puedo postear la solución si así lo deseas, pero es mejor si lo haces tú solo ya que te sentirás mejor contigo mismo al momento de resolverlo.
__________________ http://www.danasoft.com/sig/darkzanzaa.jpg |
| |||
Respuesta: como sacar la moda de n elementos
Código:
Gracias a adrianvaca /* medidas.c */ #include <stdio.h> #include <conio.h> #define MAX 100 float media(int V[], int elementos); int moda(int V[], int elementos); void main() { int V[MAX], nModa, i, elementos, contador; float nMedia; clrscr(); /* Lectura de numeros */ printf("--- Medidas ---\n"); printf("Numero de elementos: "); scanf("%d", &elementos); for(i=0; i<elementos; i++) { printf("V [%d] = ", i); scanf("%d", &V[i]); } /* Calcula media y obtiene numeros mayores */ nMedia = media(V, elementos); printf("\nMedia = %0.2f\n", nMedia); printf("Elementos mayores que la media:\n"); contador = 0; for(i=0; i<elementos; i++) { if((float)V[i]>nMedia) { printf("V [%d] = %d\n", i, V[i]); contador++; } } printf("Total = %d", contador); /* Calcula moda y obtiene numeros mayores */ nModa = moda(V, elementos); if(nModa==-1) printf("\n\nNo existe moda"); else { printf("\n\nModa = %d\n", nModa); printf("Elementos mayores que la moda:\n"); contador = 0; for(i=0; i<elementos; i++) { if(V[i]>nModa) { printf("V [%d] = %d\n", i, V[i]); contador++; } } printf("Total = %d", contador); } getch(); } float media(int V[], int elementos) { int i; float nMedia; float suma = 0; /* Obtiene suma */ for(i=0;i<elementos;i++) suma += V[i]; nMedia = suma / elementos; return nMedia; } int moda(int V[], int elementos) { int i, j, k, total, indice, existeModa, N[MAX], Rep[MAX]; int nModa; /* Saca copia del arreglo */ for(i=0;i<elementos;i++) N[i]=V[i]; /* Saca numeros distintos */ total = elementos; for(i=0;i<elementos;i++) { for(j=i+1;j<elementos;j++) { /* Si encuentra numero repetido */ if(N[i]==N[j]) { /* Recorre una posicion elementos posteriores */ for(k=j+1;k<elementos;k++) N[k-1]=N[k]; elementos--; j--; } } } /* Halla repeticiones de cada numero distinto */ for(i=0; i<elementos; i++) Rep[i] = 0; for(i=0; i<elementos; i++) for(j=0;j<total;j++) if(N[i]==V[j]) Rep[i]++; /* Halla indice del elemento que mayor numero de veces se repite */ indice = 0; for(i=1; i<elementos; i++) if(Rep[i]>Rep[indice]) indice = i; /* Verificacion por si 2 numeros se repiten igual numero de veces */ existeModa=1; for(i=0;i<elementos;i++) if(i!=indice) { if(Rep[i]==Rep[indice]) { existeModa = 0; break; } } if(existeModa==1) nModa = N[indice]; else nModa = -1; return nModa; } |
| |||
Respuesta: como sacar la moda de n elementos Otro ejemplo de como calcular moda el input es el vector con los datos a evaluar y el número de datos del vector. el output es la moda
Código:
Vuelvo a escribir cuado consiga otro codigo ;) float EncontrarModa(float *Datos, int N) { //PRUEBA ESCRITORIO register int t, w; //Contadores dentor del vector float md, AnteriorModa; //moda temporal y moda anterior al ciclo int cont, antcont; //Contadores de la repeticion del dato AnteriorModa=0; antcont=0; for (t=0; t< N; ++t) { md = Datos[t]; cont = 1; for(w=t+1; w < N; ++w) if(md == Datos[w]) cont++; if(cont > antcont) { AnteriorModa = md; antcont = cont; } } return AnteriorModa; } |