Algoritmia - URGENTE ALGORITMO

 
Vista:

URGENTE ALGORITMO

Publicado por Tatiana  (1 intervención) el 16/05/2009 16:35:14
compañeros me estan pididiendo desarrollar un programa con las siguientes caracteristicas, yo estoy viendo C++
Desarrollar un programa que permita manejar una muestra de datos. Una
muestra de una secuencia de valores entero que se encuentran en un rango dado
(por simplicidad vamos a suponer que el límite inferior del rango es siempre 1).
Piense por ejemplo en los resultados de una encuesta, en la cual las personas
califican el desempeño del presidente con un valor entre 1 y 10. O piense también
en los números de la tarjeta de identidad de todos los niños nacidos en el país entre
1999 y 2001. Las operaciones que nos interesan sobre una muestra tienen que ver
con ordenamientos y búsqueda de información, y con el tiempo que utilizan los
distintos algoritmos disponibles para cumplir dichas tareas. El programa que vamos
a desarrollar debe ofrecer las siguientes opciones:
1. Crear una nueva muestra de manera aleatoria de un tamaño y con un límite
superior definidos por el usuario (el usuario podría por ejemplo, pedir una
muestra de 200.000 elementos, en el rango de 1 a 200.000;
2. Ordenar la muestra utilizando uno de los siguientes algoritmos: inserción,
selección o intercambio (burbuja), y mostrar el tiempo que gasta el
computador en ejecutar dicha tarea;
3. Mostrar la eficiencia de los algoritmos de búsqueda secuencial y binaria para
esto, el programa debe calcular el tiempo que utiliza en buscar cada uno de
los elementos del rango de la muestra y dividirlo por el número de elementos
que busco. Por ejemplo, si la muestra está en el rango de 1 a 200.000, el
programa debe buscar cada uno de esos valores en la muestra, calcular el
tiempo total del proceso y dividir por 200.000.
4. Calcular el número de elementos que se encuentran en el rango dentro de la
muestra ordenada (por ejemplo, determinar cuantos valores de la muestra
están entre 50.000 y 100.000
5. Calcular el número de veces que aparece un valor dado en la muestra
ordenada (por ejemplo, cuantas veces aparece en la muestra el valor de
30.000)
6. Calcular el número de valores distintos en la muestra ordenada
7. Encontrar el valor que más veces aparece en la muestra ordenada
8. Dar información estadística de la muestra no ordenada, incluyendo el mayor
valor, el menor valor y el promedio.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Manejar una muestra de datos en C++

Publicado por Alejandro (307 intervenciones) el 13/03/2024 23:23:33
Para abordar este problema, podemos seguir estos pasos:

1. Crear una nueva muestra de manera aleatoria: Utilizaremos la función `rand()` de C++ para generar números aleatorios dentro del rango especificado por el usuario.
2. Ordenar la muestra: Implementaremos los algoritmos de ordenamiento (inserción, selección o burbuja) y mediremos el tiempo de ejecución de cada uno.
3. Mostrar la eficiencia de los algoritmos de búsqueda: Implementaremos la búsqueda secuencial y binaria y calcularemos el tiempo promedio de búsqueda por elemento.
4. Calcular el número de elementos dentro de un rango: Recorreremos la muestra ordenada y contaremos los elementos dentro del rango especificado.
5. Calcular el número de veces que aparece un valor dado: Realizaremos una búsqueda binaria para encontrar el valor dado y contaremos su frecuencia.
6. Calcular el número de valores distintos: Utilizaremos un enfoque de conteo para determinar la cantidad de valores únicos.
7. Encontrar el valor que más veces aparece: Iteraremos sobre la muestra ordenada para encontrar el valor con la mayor frecuencia.
8. Dar información estadística de la muestra no ordenada: Mantendremos un seguimiento del mayor, menor y sumaremos los valores para calcular el promedio.

A continuación, te proporciono un esquema básico de cómo podrías implementar este programa en C++:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
 
using namespace std;
 
// Función para generar una muestra aleatoria
vector<int> generarMuestra(int tamano, int limite_superior) {
    vector<int> muestra;
    srand(time(nullptr)); // Inicializar la semilla de aleatoriedad
 
    for (int i = 0; i < tamano; ++i) {
        muestra.push_back(rand() % limite_superior + 1);
    }
 
    return muestra;
}
 
// Función para imprimir la muestra
void imprimirMuestra(const vector<int>& muestra) {
    for (int num : muestra) {
        cout << num << " ";
    }
    cout << endl;
}
 
// Función para calcular el tiempo de ejecución de un algoritmo de ordenamiento
template<typename Func>
double medirTiempo(Func func, vector<int>& muestra) {
    clock_t inicio = clock();
    func(muestra);
    clock_t fin = clock();
    return double(fin - inicio) / CLOCKS_PER_SEC;
}
 
// Funciones de ordenamiento
void insercion(vector<int>& muestra) {
    // Implementación del algoritmo de ordenamiento por inserción
}
 
void seleccion(vector<int>& muestra) {
    // Implementación del algoritmo de ordenamiento por selección
}
 
void burbuja(vector<int>& muestra) {
    // Implementación del algoritmo de ordenamiento burbuja
}
 
int main() {
    // Aquí puedes implementar el menú con las opciones solicitadas
    // y utilizar las funciones definidas anteriormente.
    return 0;
}

Este es solo un esquema básico para ayudarte a empezar. Deberás completar las implementaciones de las funciones de ordenamiento, búsqueda, etc., según las necesidades específicas del programa. Además, deberás agregar el manejo de errores, la interacción con el usuario y las demás funcionalidades requeridas. ¡Buena suerte con tu proyecto, Tatiana!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar