Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define NUM_CIUDADES 3
- #define NUM_SEMANAS 5
- // Estructura para almacenar los datos de lluvia por ciudad
- typedef struct {
- char nombre[50];
- int lluvias[NUM_SEMANAS];
- int total_lluvia; // Para almacenar la suma total de lluvia de la ciudad
- } Ciudad;
- // Función para inicializar los datos de lluvia a cero
- void borrarDatos(Ciudad ciudades[]) {
- for (int i = 0; i < NUM_CIUDADES; i++) {
- for (int j = 0; j < NUM_SEMANAS; j++) {
- ciudades[i].lluvias[j] = 0;
- }
- ciudades[i].total_lluvia = 0;
- }
- printf("Datos borrados exitosamente.\n");
- }
- // Función para cargar datos de lluvia
- void cargarDatos(Ciudad ciudades[]) {
- char nombre_ciudad[50];
- int semana, lluvia;
- printf("Ingrese el nombre de la ciudad: ");
- scanf("%s", nombre_ciudad);
- int ciudad_encontrada = -1;
- for (int i = 0; i < NUM_CIUDADES; i++) {
- if (strcmp(ciudades[i].nombre, nombre_ciudad) == 0) {
- ciudad_encontrada = i;
- break;
- }
- }
- if (ciudad_encontrada != -1) {
- printf("Ingrese el número de semana (1-%d): ", NUM_SEMANAS);
- scanf("%d", &semana);
- if (semana >= 1 && semana <= NUM_SEMANAS) {
- printf("Ingrese la cantidad de mm de lluvia: ");
- scanf("%d", &lluvia);
- ciudades[ciudad_encontrada].lluvias[semana - 1] += lluvia;
- printf("Datos cargados exitosamente.\n");
- } else {
- printf("Número de semana inválido.\n");
- }
- } else {
- printf("Ciudad no encontrada.\n");
- }
- }
- // Función de comparación para ordenar por nombre de ciudad (ASCII)
- int compararCiudades(const void *a, const void *b) {
- return strcmp(((Ciudad *)a)->nombre, ((Ciudad *)b)->nombre);
- }
- // Función para ordenar por nombre de ciudad
- void ordenarPorCiudad(Ciudad ciudades[]) {
- qsort(ciudades, NUM_CIUDADES, sizeof(Ciudad), compararCiudades);
- printf("Datos ordenados por ciudad.\n");
- }
- // Función para ordenar por semana (en realidad, esto reorganiza las semanas para cada ciudad)
- void ordenarPorSemana(Ciudad ciudades[]) {
- // No es posible "ordenar por semana" el cuadro de la manera tradicional.
- // Lo que se puede hacer es mostrar los datos agrupados por semana.
- printf("Los datos se mostrarán agrupados por semana en la opción 'Mostrar datos'.\n");
- }
- // Función para mostrar los datos del cuadro
- void mostrarDatos(Ciudad ciudades[]) {
- printf("\n%-15s", "Ciudad");
- for (int i = 1; i <= NUM_SEMANAS; i++) {
- printf("%-8s", "Semana");
- printf("%d", i);
- }
- printf("%-10s\n", "Total");
- printf("---------------------------------------------------------------------------\n");
- for (int i = 0; i < NUM_CIUDADES; i++) {
- printf("%-15s", ciudades[i].nombre);
- ciudades[i].total_lluvia = 0; // Reiniciar el total antes de calcular
- for (int j = 0; j < NUM_SEMANAS; j++) {
- printf("%-8d", ciudades[i].lluvias[j]);
- ciudades[i].total_lluvia += ciudades[i].lluvias[j];
- }
- printf("%-10d\n", ciudades[i].total_lluvia);
- }
- printf("\n");
- }
- // Función para mostrar el resumen de lluvias por ciudad
- void mostrarResumen(Ciudad ciudades[]) {
- printf("\nResumen de lluvias por ciudad:\n");
- for (int i = 0; i < NUM_CIUDADES; i++) {
- printf("%-15s: %d mm\n", ciudades[i].nombre, ciudades[i].total_lluvia);
- }
- printf("\n");
- }
- // Función para mostrar estadísticas de lluvia por ciudad y semana
- void mostrarEstadisticas(Ciudad ciudades[]) {
- printf("\nEstadísticas de lluvia:\n");
- // Suma de todas las semanas para cada ciudad
- printf("\nTotal de lluvia por ciudad:\n");
- for (int i = 0; i < NUM_CIUDADES; i++) {
- printf("%-15s: %d mm\n", ciudades[i].nombre, ciudades[i].total_lluvia);
- }
- // Suma de cada semana entre todas las ciudades
- printf("\nTotal de lluvia por semana:\n");
- for (int j = 0; j < NUM_SEMANAS; j++) {
- int total_semana = 0;
- for (int i = 0; i < NUM_CIUDADES; i++) {
- total_semana += ciudades[i].lluvias[j];
- }
- printf("Semana %d: %d mm\n", j + 1, total_semana);
- }
- printf("\n");
- }
- int main() {
- Ciudad ciudades[NUM_CIUDADES] = {
- {"Buenos Aires", {0}},
- {"Córdoba", {0}},
- {"Rosario", {0}}
- };
- int opcion;
- do {
- printf("\n--- Menú ---\n");
- printf("1. Borrar datos\n");
- printf("2. Cargar datos\n");
- printf("3. Ordenar por ciudad\n");
- printf("4. Ordenar por semana\n");
- printf("5. Mostrar datos\n");
- printf("6. Mostrar resumen\n");
- printf("7. Mostrar estadísticas\n");
- printf("0. Salir\n");
- printf("Ingrese una opción: ");
- scanf("%d", &opcion);
- switch (opcion) {
- case 1:
- borrarDatos(ciudades);
- break;
- case 2:
- cargarDatos(ciudades);
- break;
- case 3:
- ordenarPorCiudad(ciudades);
- break;
- case 4:
- ordenarPorSemana(ciudades);
- break;
- case 5:
- mostrarDatos(ciudades);
- break;
- case 6:
- mostrarResumen(ciudades);
- break;
- case 7:
- mostrarEstadisticas(ciudades);
- break;
- case 0:
- printf("Saliendo del programa.\n");
- break;
- default:
- printf("Opción inválida. Intente nuevamente.\n");
- }
- } while (opcion != 0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement