Algoritmia - Ayuda para resolver el algortimo

 
Vista:

Ayuda para resolver el algortimo

Publicado por Agustin (1 intervención) el 13/06/2007 00:59:21
En un contexto de datos más complejo que en el primer TP, el objetivo de
este TP es optimizar el código desarrollado en el TP anterior con nuevas herramientas de
programación tales como subalgoritmos, arreglos, registros y archivos.
Condiciones generales
- Pantallas de salida: deben ser explícitas, con carteles aclaratorios
- Debe verificarse el correcto funcionamiento del programa.

Evaluación Preguntas por escrito en el segundo parcial.
Preguntas frente a máquina (después del 2º parcial).
Enunciado de la situación problemática
Un Servicio de Banda Ancha de Internet puede llegar a tener hasta 500 clientes.
Los clientes se identifican por números enteros del 1 al 500.
Se aclara que NO se sabe cuantas conexiones diarias hace cada cliente.
El administrador del servicio dispone al finalizar el mes un archivo de nombre
ACCESOS.dat con la siguiente información por cada conexión que se hace a su servidor.
Nro. de cliente (entero 1- 500)
Nro. de día (1-31)
Hora de conexión (entero 0-23)
Tiempo conectado (entero en segundos)
2
No necesariamente todos los clientes debieron haberse conectado en este lapso
La hora de conexión es sólo la hora del día, no se registraron ni los minutos ni los
segundos.
El tiempo conectado está expresado en segundos.
La empresa también dispone de un archivo llamado NOMBRES.DAT, el cual se encuentra
ordenado por número de cliente, cuyo registro tiene los siguientes campos:
Nro de cliente (1-500)
Apellido y nombres (hasta 30 caracteres)
El administrador necesita hacer una estadística con los datos del archivo ACCESOS.dat.
Para ello pide desarrollar un algoritmo/programa que, mediante el uso reiterado de un
menú de opciones, permita:
· Emitir un listado ordenado por Nro. de cliente donde figure el tiempo
promedio de conexión de cada cliente (tiempo total de conexión/cantidad de
conexiones), e informe por cada uno de ellos: apellido y nombre y el promedio
calculados (en segundos).
· Determinar e informar quienes son los 20 clientes que más tiempo se
conectaron y los 20 menos conectados. En el listado de salida debe figurar Nro
de cliente y tiempo expresado en: hs. min. seg.
· Ingresar un número de día y hora, válidos y determinar la cantidad de
conexiones.
· Ingresar un número de día válido y determine cual es la hora de ese día con
menos conexiones, y con más conexiones

Observaciones:
o Cada uno de los puntos del menú de opciones debe implementarse por medio de
un subalgoritmo.
o No emplear variables globales.
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

Estadísticas de accesos a banda ancha

Publicado por Alejandro (307 intervenciones) el 11/03/2024 19:50:52
Agustín, a continuación, se presenta un esquema básico del programa que cumple con los requerimientos especificados. El programa utiliza subalgoritmos para cada una de las opciones del menú.

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAX_CLIENTES 500
#define MAX_DIAS 31
#define MAX_NOMBRE 30
 
typedef struct {
    int cliente;
    int dia;
    int hora;
    int tiempo;
} Acceso;
 
typedef struct {
    int cliente;
    char nombre[MAX_NOMBRE];
} ClienteInfo;
 
// Funciones prototipo
void leerAccesos(Acceso accesos[], int* totalAccesos);
void leerNombres(ClienteInfo clientes[], int* totalClientes);
void listadoTiempoPromedio(Acceso accesos[], int totalAccesos, ClienteInfo clientes[], int totalClientes);
void listadoClientesTiempoExtremo(Acceso accesos[], int totalAccesos, ClienteInfo clientes[], int totalClientes, int opcion);
void cantidadConexionesDiaHora(Acceso accesos[], int totalAccesos);
void horasConMenosYMasConexiones(Acceso accesos[], int totalAccesos, int dia);
 
// Función principal
int main() {
    Acceso accesos[MAX_CLIENTES];
    ClienteInfo clientes[MAX_CLIENTES];
    int totalAccesos = 0;
    int totalClientes = 0;
 
    leerAccesos(accesos, &totalAccesos);
    leerNombres(clientes, &totalClientes);
 
    int opcion;
 
    do {
        printf("\nMENÚ DE OPCIONES\n");
        printf("1. Listado tiempo promedio de conexión por cliente\n");
        printf("2. 20 clientes más/menos conectados\n");
        printf("3. Cantidad de conexiones en un día y hora\n");
        printf("4. Horas con menos y más conexiones en un día\n");
        printf("5. Salir\n");
        printf("Ingrese su opción: ");
        scanf("%d", &opcion);
 
        switch (opcion) {
            case 1:
                listadoTiempoPromedio(accesos, totalAccesos, clientes, totalClientes);
                break;
            case 2:
                listadoClientesTiempoExtremo(accesos, totalAccesos, clientes, totalClientes, 1);
                listadoClientesTiempoExtremo(accesos, totalAccesos, clientes, totalClientes, 0);
                break;
            case 3:
                cantidadConexionesDiaHora(accesos, totalAccesos);
                break;
            case 4:
                {
                    int dia;
                    printf("Ingrese el número de día: ");
                    scanf("%d", &dia);
                    horasConMenosYMasConexiones(accesos, totalAccesos, dia);
                }
                break;
            case 5:
                printf("Saliendo del programa. Hasta luego.\n");
                break;
            default:
                printf("Opción no válida. Intente nuevamente.\n");
        }
    } while (opcion != 5);
 
    return 0;
}
 
// Implementación de los subalgoritmos...

Este es solo un esquema inicial, y los subalgoritmos (funciones) necesitan ser implementados según los requerimientos específicos de cada opción del menú. La lectura de archivos, la manipulación de datos y las operaciones estadísticas deben integrarse en cada subalgoritmo correspondiente.
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