Está en la página 1de 5

------------------- 09 -----------------// Anlisis de encuestas, media, mediana y moda de datos.

#include <iostream>
using std::fixed;
using std::showpoint;
#include <iomanip.h>
void media( const int [], int );
void mediana( int [], int );
void moda( int [], int [], int );
void ordenaBurbuja( int[], int );
void despliegaArreglo( const int[], int );
int main()
{
const int tamanoRespuestas = 99; // tamao del arreglo respuestas
int frecuencia[ 10 ] = { 0 }; // inicializa el arreglo frecuencia
// inicializa el arreglo respuestas
int respuestas[ tamanoRespuestas ] =
{
6, 7, 8, 9, 8, 7, 8, 9, 8, 9,
7, 8, 9, 5, 9, 8, 7, 8, 7, 8,
6, 7, 8, 9, 3, 9, 8, 7, 8, 7,
7, 8, 9, 8, 9, 8, 9, 7, 8, 9,
6, 7, 8, 7, 8, 7, 9, 8, 9, 2,
7, 8, 9, 8, 9, 8, 9, 7, 5, 3,
5, 6, 7, 2, 5, 3, 9, 4, 6, 4,
7, 8, 9, 6, 8, 7, 8, 9, 7, 8,
7, 4, 4, 2, 5, 3, 8, 7, 5, 6,
4, 5, 6, 1, 6, 5, 7, 8, 7
};
// procesa las respuestas
media( respuestas, tamanoRespuestas );
mediana( respuestas, tamanoRespuestas );
moda( frecuencia, respuestas, tamanoRespuestas );
return 0; // indica terminacin exitosa
} // fin de main
// calcula el promedio de todos los valores correspondientes a las respuestas
void media( const int resp[], int tamanoArreglo )
{
int total = 0;
cout << "********\n Media\n********\n";
// total del valor de las respuestas
for ( int i = 0;
i < tamanoArreglo;
i++ )
total += resp[ i ];
// da formato y despliega los resultados
cout << fixed << setprecision( 4 );
cout << "La media es el valor promedio de los elementos\n"
<< "de datos. La media es igual al total de todos \n"
<< "los elementos de datos divididos entre el numero\n"
<< "de elementos de datos (" << tamanoArreglo
<< "). El valor de la media para \nesta ejecucin es: "
<< total << " / " << tamanoArreglo << " = "

<< static_cast< double >( total ) / tamanoArreglo


<< "\n\n";
} // fin de la funcin media
// ordena el arreglo y determina el valor de la mediana de los elementos
void mediana( int resp[], int tamano )
{
cout << "\n********\n Mediana\n********\n"
<< "El arreglo desordenado de respuestas es";
despliegaArreglo( resp, tamano ); // muestra el arreglo desordenado
ordenaBurbuja( resp, tamano ); // ordena el arreglo cout << "\n\nEl
arreglo ordenado es";
despliegaArreglo( resp, tamano ); // muestra el arreglo ordenado
// displiega la mediana
cout << "\n\nLa mediana es el elemento " << tamano / 2
<< " del\narreglo ordenado de " << tamano
<< " elementos.\nPara esta ejecucion la mediana es "
<< resp[ tamano / 2 ] << "\n\n";
} // fin de la funcin mediana
// determina la respuesta ms frecuente
void moda( int frec[], int resp[], int tamano )
{
int masGrande = 0; // representa la frecuencia ms grande
int valorModa = 0; // representa la respuesta ms frecuente
cout << "\n********\n Moda\n********\n";
// inicializa las frecuencias en 0
for ( int i = 1; i <= 9; i++ )
frec[ i ] = 0;
// resume las frecuencias
for ( int j = 0; j < tamano; j++ )
++frec[ resp[ j ] ];
// muestra los encabezados para las columnas de resultados
cout << "Respuestas" << setw(11) << "Frecuencia" << setw(19)<<
"Histograma\n\n" << setw(55)
<< "1 1 2 2\n" << setw( 56 )
<< "5 0 5 0 5\n\n";
// despliega resultados
for ( int rating = 1; rating <= 9; rating++ )
{
cout << setw( 8 ) << rating << setw( 11 )
<< frec[ rating ] << "
";
// da seguimiento al valor de la moda y al valor de la frecuencia ms
grande
if ( frec[ rating ] > masGrande )
{
masGrande = frec[ rating ];
valorModa = rating;
} // fin de if
// muestra las barras del histograma que representa los valores de
frecuencia
for ( int k = 1; k <= frec[ rating ]; k++ )
cout << '*';
cout << '\n'; // comienza una nueva lnea de salida
} // fin del for externo
// despliega el valor de la moda

cout << "La moda es el valor mas frecuente.\n"


<< "Para esta ejecucion la moda es " << valorModa
<< " la cual tiene una ocurrencia de " << masGrande << " veces." <<
endl;
} // fin de la funcin moda
// funcin que ordena el arreglo mediante el algoritmo del mtodo de la
burbuja
void ordenaBurbuja( int a[], int tamano )
{
int mantiene; // ubicacin temporal utilizada para intercambiar elementos
// ciclo para controlar el nmero de pasadas
for ( int pasada = 1; pasada < tamano; pasada++ )
// ciclo para controlar el nmero de comparaciones por pasada
for ( int j = 0; j < tamano - 1; j++ )
// intercambia elementos desordenados
if ( a[ j ] > a[ j + 1 ] )
{
mantiene = a[ j ];
a[ j ] = a[ j + 1 ];
a[ j + 1 ] = mantiene;
} // fin de if
} // fin de la funcin ordenaBurbuja
// muestra el contenido del arreglo (20 valores por fila)
void despliegaArreglo( const int a[], int tamano )
{
for ( int i = 0; i < tamano; i++ )
{
if ( i % 20 == 0 ) // comienza una nueva lnea cada 20 valores
cout << endl;
cout << setw( 2 ) << a[ i ];
} // fin de for
} // fin de la funcin despliegaArreglo
------------------- 10 -----------------// Bsqueda lineal en un arreglo.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int busquedaLineal( const int [], int, int ); // prototipo
int main()
{
const int tamanoArreglo = 100; // tamao del arreglo a
int a[ tamanoArreglo ];
// crea el arreglo a
int claveBusqueda;
// valor a localizar dentro de a
for ( int i = 0; i < tamanoArreglo; i++ ) // crea algunos datos
a[ i ] = 2 * i;
cout << "Introduce la clave de busqueda entera: ";
cin >> claveBusqueda;
// intenta localizar claveBusqueda dentro del arreglo a
int elemento = busquedaLineal( a, claveBusqueda, tamanoArreglo );
// despliega los resultados
if ( elemento != -1 )
cout << "Encontre valor en el elemento " << elemento << endl;
else

cout << "Valor no encontrado" << endl; return 0; // indica


terminacin exitosa
} // Fin de main
// Compara la clave con cada elemento del arreglo hasta encontrar su
// Ubicacin o hasta que se alcanza el final del arreglo; devuelve el subndice
// Del elemento si es la clave o -1 si sta no se encontr
int busquedaLineal( const int arreglo[], int clave, int tamanoDelArreglo )
{
for ( int j = 0; j < tamanoDelArreglo; j++ )
if ( arreglo[ j ] == clave ) // si se encuentra ,
return j;
// devuelve la ubicacin de la clave
return -1; // la clave no se encontr } // fin de la funcin busquedaLineal
------------------- 11 -----------------// Bsqueda binaria dentro de un arreglo.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <iomanip>
using std::setw;
// prototipo de la funcin
int busquedaBinaria( const int [], int, int, int, int );
void despliegaEncabezado( int );
void despliegaFila( const int [], int, int, int, int );
int main()
{
const int tamanoArreglo = 15; // tamao del arreglo a
int a[ tamanoArreglo ];
// crea el arreglo a
int clave;
// valor a localizar en a
for ( int i = 0;
i < tamanoArreglo; i++) // crea algunos datos
a[ i ] = 2 * i;
cout << "Introduzca un numero entre 0 y 28: ";
cin >> clave;
despliegaEncabezado( tamanoArreglo ); // bsqueda de la clave en el
arreglo a
int resultado = busquedaBinaria( a, clave, 0, tamanoArreglo - 1,
tamanoArreglo );
// despliega resultados if ( resultado != -1 )
cout << '\n' << clave << " se encuentra en el elemento del arreglo "
<< resultado << endl;
else
cout << '\n' << clave << " no se encontro" << endl;
return 0; // indica terminacin exitosa
} // fin de main
// funcin para realizar la bsqueda binaria dentro de un arreglo
int busquedaBinaria( const int b[], int claveBusqueda, int bajo, int alto, int
tamano )
{
int central;
// repeticin hasta que el subndice bajo sea mayor que el subndice alto
while ( bajo <= alto )
{
// determina el elemento central del subarreglo en el que se busca

central = ( bajo + alto ) / 2;


// despliega el subarreglo utilizado en este ciclo de la iteracin
despliegaFila( b, bajo, central, alto, tamano );
// si claveBusqueda coincide con el elemento central, devuelve el
elemento central
if ( claveBusqueda == b[ central ] ) // coincide
return central;
else
// si claveBusqueda es menor que el elemento central,
// establece el nuevo elemento alto
if ( claveBusqueda < b[ central ] )
alto = central - 1; // busca bajo hasta el final del arreglo
// si claveBusqueda es mayor que el elemento central,
// establece el nuevo elemento bajo
else
bajo = central + 1; // busca bajo hasta el final del arreglo
}
return -1; // no se encontr claveBusqueda
} // fin de la funcin busquedaBinaria
// despliega el encabezado de salida void despliegaEncabezado( int
tamano )
{
cout << "\nSubindices:\n";
// muestra encabezados de columnas
for ( int j = 0; j < tamano; j++ )
cout << setw( 3 ) << j << ' ';
cout << '\n'; // comienza nueva lnea de salida
// despliega lnea de caracteres
for ( int k = 1; k <= 4 * tamano; k++ )
cout << '-';
cout << endl; // comienza nueva lnea de salida
} // fin de la funcin despliegaEncabezado
// imprime despliega una fila de salida resultados que muestra la paerte
// actual del arreglo que est en proceso
void despliegaFila( const int b[], int bajo, int cen, int alto, int tamano )
{
// repite a travs de todo el arreglo
for ( int m = 0; m < tamano; m++ )
// despliega espacios si se encuentra fuera del rango del subarreglo
if ( m < bajo || m > alto )
cout << " ";
// despliega el elemento central marcado con un *
else
if ( m == cen )
// marca el elemento central
cout << setw( 3 ) << b[ m ] << '*'; // despliega otros elementos del
subarreglo
else
cout << setw( 3 ) << b[ m ] << ' '; cout << endl; // comienza nueva
lnea de salida
} // fin de la funcin despliegaFila

También podría gustarte