Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Martin96 en 13 Octubre 2018, 17:27 pm



Título: MODA
Publicado por: Martin96 en 13 Octubre 2018, 17:27 pm
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!  ;-)


Código:
#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;
}


Título: Re: MODA
Publicado por: Beginner Web en 13 Octubre 2018, 19:01 pm
Si hay dos iguales o mas MODA, sino NOMODA, de nada


Título: Re: MODA
Publicado por: Martin96 en 15 Octubre 2018, 16:05 pm
¡Gracias!  ;D

Código:
#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;
}