Os dejo el algoritmo para saber si hay algún elemento mayoritario en un vector. Es un ejemplo sencillo, se puede modificar la forma de conseguir el vector. Yo lo tengo para un problema que era "PROBLEMA DE RODAMIENTOS". Está realizado por el método de Divide y Vence en C. Espero que os sea útil.
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX 5
bool xmayoritario (float T [MAX] , float x );
float buscar (float T[MAX]);
int main(int argc, char *argv[])
{
float arrayM[MAX],arrayNM[MAX];
arrayM[0]=1.6;
arrayNM[0]=1.1;
arrayM[1]=1.6;
arrayNM[1]=2.2;
arrayM[2]=1.4;
arrayNM[2]=3.3;
arrayM[3]=1.6;
arrayNM[3]=4.4;
arrayM[4]=1.1;
arrayNM[4]=5.5;
int i;
printf("PROBLEMA DE LOS RODAMIENTOS \n\n");
printf("\nLos rodamientos de la caja 1 tienen el siguiente tamaño\n");
for (i=0;i<MAX;i++){
printf("\n %f",arrayM[i]);
}
printf("\n\nLos rodamientos de la caja 2 tienen el siguiente tamaño\n\n");
for (i=0;i<MAX;i++){
printf("\n %f",arrayNM[i]);
}
float solok=buscar(arrayM);
if (solok>0){
printf("\n\nSe ha encontrado el tamaño de un rodamiento mayoritario en la caja 1 y es: %f\n\n",solok);
}else{
printf("\n\nNo hay tamaño de rodamiento mayoritario en la caja 1\n\n");
}
solok=buscar(arrayNM);
if (solok>0){
printf("\n\nSe ha encontrado el tamaño de un rodamiento mayoritario en la caja 2 y es: %f\n\n",solok);
}else{
printf("\n\nNo hay tamaño de rodamiento mayoritario en la caja 2\n\n");
}
system("PAUSE");
return 0;
}
bool xmayoritario (float T [MAX] , float x ){
int k=0;
int j;
for (j=0;j<MAX;j++)
if(T[j]==x)
k++;
return(k>=MAX/2);
}
float buscar(float T[MAX]){
int i;
for (i=0;(i<MAX/2);i++)
if (xmayoritario (T ,T[i]))
return T[i];
return -1;
}
No hay comentarios:
Publicar un comentario