MODA

Iniciado por Martin96, 13 Octubre 2018, 17:27 PM

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

Martin96

Hola, tengo un problema tratando de crear un programa en Cque lea multimodas, dado que al leer cuando se repiten las modas, lo hace muy bien, pero cuando no hay moda, me las lee a todas; es decir: ingreso 1,2,3,4,5 y me tira como moda 1,2,3,4,5 en vez de tirarme un NO HAY MODA. Si me pudieran ayudar a encontrar en qué estoy fallando se los agradecería!  ;-)


#include <stdio.h>

int main() {
int i,l,j,aux=0;
printf("Ingrese la cantidad de números que desea ingresar:");
scanf("%d",&l);
int v[l],c[l],MODA[l];
printf("Ingrese los números:");
for(i=0;i<l;i++){
scanf("%d",&v[i]);
}
for(i=0; i<(l-1); i++){
for(j=i+1; j<l; j++) {
if(i!=j && v[i]==v[j]){
{aux=v[j];
v[j]=v[i];
v[i]=aux;}
}
}

}
//ARREGLO DE MODA EN 1
for(i=0;i<l;i++){
MODA[i]=0;
}
/* COMPARACION */
for (i=0;i<(l-1);i++){
for(j=i+1;j<l;j++){
if(v[i]==v[j]){
MODA[i]=MODA[i]+1;
}
}
}
for (i=0;i<l;i++){
c[i]=MODA[i];
}
for (i=0;i<(l-1);i++){
for(j=i+1;j<l;j++){
if(MODA[j]<MODA[i]){
aux=MODA[j];
MODA[j]=MODA[i];
MODA[i]=aux;
}
}
}
for (i=0;i<l;i++){
if(c[i]==1){
aux++;
}
}
if(MODA[l-1]==MODA[l-2]){
printf("Las modas son:\n");
for(i=0;i<l;i++){
if(MODA[l-1]==c[i]){
printf("%i\n",v[i]);
}
}
}
else {
if(MODA[l-1]!=MODA[l-2]){
printf("Las modas son:\n");
for(i=0;i<l;i++){
if((MODA[l-i]==c[i]) && aux<1){
printf("%i",v[i]);
}
}
}
else {
if (aux==l){
printf("No hay moda.");
}
}
}
return 0;
}

Beginner Web

Si hay dos iguales o mas MODA, sino NOMODA, de nada
7w7

Martin96

¡Gracias!  ;D

#include <stdio.h>

int main() {
int i,l,j,aux=0;
printf("Ingrese la cantidad de números que desea ingresar:");
scanf("%d",&l);
int v[l],c[l],MODA[l];
printf("Ingrese los números:");
//SCAN DE NÚMEROS.
for(i=0;i<l;i++){
scanf("%d",&v[i]);
}
//ORDENAMIENTO POR BURBÚJA.
for(i=0; i<(l-1); i++){
for(j=i+1; j<l; j++) {
if(i!=j && v[i]==v[j]){
{aux=v[j];
v[j]=v[i];
v[i]=aux;}
}
}
}
//ARREGLO DE MODA EN 1
for(i=0;i<l;i++){
MODA[i]=1;
}
//COMPARACION DE LA PRIMERA CONTRA LA SEGUNDA. SI IGUALES, SE SUMA LA MODA.
for (i=0;i<(l-1);i++){
for(j=i+1;j<l;j++){
if(v[i]==v[j]){
MODA[i]=MODA[i]+1;
}
}
}
//GUARDO MODA EN NUEVO ARREGLO, PORQUE VOY A MODIFICAR MODA
for (i=0;i<l;i++){
c[i]=MODA[i];
}
//ORDENAMIENTO DE MODAS POR BURBUJAS.
for (i=0;i<(l-1);i++){
for(j=i+1;j<l;j++){
if(MODA[j]<MODA[i]){
aux=MODA[j];
MODA[j]=MODA[i];
MODA[i]=aux;
}
}
}
//MODAS IGUALES PERO DISTINTAS DE 1.
if((MODA[l-1]==MODA[l-2]) && (MODA[l-1]!=1) && (MODA[l-2]!=1) ){
printf("Las modas son:\n");
for(i=0;i<l;i++){
if(MODA[l-1]==c[i]){
printf("%i\n",v[i]);
}
}
}
else {
printf("No hay moda.");
}

return 0;
}