algoritmo en c++

necesito un programa que me calcule las formulas estadisticas(promedio,moda,media,etc) utilizando void y  otro con #define en c++

1 respuesta

1
Respuesta de
/* 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);
   }
   nMedia = media(V, elementos);
   printf("\nMedia = %0.2f\n", nMedia);
   contador = 1;
   for(i=1; i<elementos; i++)
   {
      if((float)V>nMedia)
      {
         printf("V [%d] = %d\n", i, V);
         contador++;
       }
   }
   nModa = moda(V, elementos);
   if(nModa==-1)
      printf("\n\nNo existe moda");
   else
   {
      printf("\n\nModa = %d\n", nModa);
      contador = 0;
      for(i=0; i<elementos; i++)
      {
         if(V>nModa)
         {
            printf("V [%d] = %d\n", i, V);
            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;
   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=V;
   /* Saca numeros distintos */
   total = elementos;
   for(i=0;i<elementos;i++)
   {
      for(j=i+1;j<elementos;j++)
      {
      /* Si encuentra numero repetido */
      if(N==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 = 0;
   for(i=0; i<elementos; i++)
       for(j=0;j<total;j++)
      if(N==V[j])
         Rep++;
   /* Halla indice del elemento que mayor numero de veces se repite */
   indice = 0;
   for(i=1; i<elementos; i++)
      if(Rep>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==Rep[indice])
      {
         existeModa = 0;
         break;
       }
   }
     if(existeModa==1)
   nModa = N[indice];
     else
   nModa = -1;
     return nModa;
}
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje