Programas en C: Temperaturas y Gestión de Pedidos para Tienda de Vestidos

Enviado por Programa Chuletas y clasificado en Diseño e Ingeniería

Escrito el en español con un tamaño de 7,82 KB

Programa 1: Temperaturas — Generación y registro de temperaturas por mes

Descripción: Programa en C que genera una matriz de temperaturas aleatorias por mes y día, imprime la matriz, determina la temperatura más alta y más baja por mes y calcula la temperatura media mensual.

Prototipos y definiciones

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>

#define MAX 100
#define MESES 12
#define DIAS 10

typedef int matriz[MESES][DIAS];

void iniciar(matriz);
void imprimir(matriz);
void TempMasAlta(matriz);
void TempMasBaja(matriz);
void TempMediaMes(matriz);

Código fuente

int main(void)
{
    /* Inicialización de la semilla para números aleatorios */
    srand((unsigned) time(NULL));
    matriz m1;

    printf("\nBienvenidos al programa de generación de la matriz aleatoria\n");
    iniciar(m1); // Llamada al subprograma
    imprimir(m1);
    TempMasAlta(m1);
    TempMasBaja(m1);
    TempMediaMes(m1);

    printf("\nPulsa una tecla para continuar...");
    getch();
    /* clrscr(); // Si se usa Turbo C / conio, opcional */
    return 0;
}

void imprimir(matriz mat)
{
    int i, j;
    for (i = 0; i < MESES; i++)
    {
        for (j = 0; j < DIAS; j++)
            printf(" %d ", mat[i][j]);
        printf("\n");
    }
}

void iniciar(matriz mat)
{
    int i, j;
    for (i = 0; i < MESES; i++)
    {
        for (j = 0; j < DIAS; j++)
            mat[i][j] = rand() % MAX; /* temperaturas aleatorias entre 0 y MAX-1 */
    }
}

void TempMasAlta(matriz mat)
{
    int i, j;
    int maxima, dia;
    printf("\nMes\tTemp Max\tDia\n");
    for (i = 0; i < MESES; i++)
    {
        maxima = -9999;
        dia = 0;
        for (j = 0; j < DIAS; j++)
        {
            if (mat[i][j] > maxima)
            {
                maxima = mat[i][j];
                dia = j;
            }
        }
        printf(" %d\t %d\t\t %d\n", i + 1, maxima, dia + 1);
    }
}

void TempMasBaja(matriz mat)
{
    int i, j;
    int minima, dia;
    printf("\nMes\tTemp Min\tDia\n");
    for (i = 0; i < MESES; i++)
    {
        minima = 9999;
        dia = 0;
        for (j = 0; j < DIAS; j++)
        {
            if (mat[i][j] < minima)
            {
                minima = mat[i][j];
                dia = j;
            }
        }
        printf(" %d\t %d\t\t %d\n", i + 1, minima, dia + 1);
    }
}

void TempMediaMes(matriz mat)
{
    int i, j;
    int suma, media;
    printf("\nMes\tTemp Media\n");
    for (i = 0; i < MESES; i++)
    {
        suma = 0;
        for (j = 0; j < DIAS; j++)
            suma = suma + mat[i][j];
        media = suma / DIAS;
        printf(" %d\t %d\n", i + 1, media);
    }
}

Programa 2: Tienda de vestidos — Gestión básica de precios y pedidos

Descripción: Programa en C que simula la gestión de una lista de productos (códigos y precios), permite buscar productos, insertar pedidos y ordenar los pedidos por código. Incluye carga aleatoria de precios para ejemplificar su uso.

Prototipos y definiciones

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>

#define N 10       /* cantidad de productos */
#define MAX_PED 3  /* máximo de pedidos */

typedef int matriz[N][2];    /* array de precios: [codigo, precio] */
typedef int Mpedidos[MAX_PED][4]; /* array de pedidos: [codigo, cantidad, precio, coste_total] */

void CARGAR_ARRAY(matriz);
void BUSCAR_ARRAY(matriz);
void IMPRIMIR_ARRAY(matriz);
void INICIALIZAR_PEDIDOS(Mpedidos);
void INSERTAR_PEDIDOS(Mpedidos, matriz);
int BUSCAR_PRECIO(matriz, int);
void IMPRIMIR_PEDIDOS(Mpedidos);
void ordenar_pedidos(Mpedidos);

Código fuente

int main(void)
{
    matriz precios;
    Mpedidos pedidos;

    srand((unsigned) time(NULL));
    /* clrscr(); // Opcional si se usa conio.h/Turbo C */

    printf("\nCarga de precios (aleatorio)...\n");
    CARGAR_ARRAY(precios);

    printf("\nLista de precios...\n");
    IMPRIMIR_ARRAY(precios);

    printf("\n\nBuscar un precio...\n");
    BUSCAR_ARRAY(precios);

    INICIALIZAR_PEDIDOS(pedidos);

    printf("\nInsertar pedidos...\n");
    INSERTAR_PEDIDOS(pedidos, precios);

    printf("\nImprimir pedidos...\n");
    IMPRIMIR_PEDIDOS(pedidos);

    ordenar_pedidos(pedidos);

    printf("\nPedidos ordenados por código:\n");
    IMPRIMIR_PEDIDOS(pedidos);

    printf("\nFinalizar...\n");
    getch();
    return 0;
}

void CARGAR_ARRAY(matriz precios)
{
    int contador;
    for (contador = 0; contador < N; contador++)
    {
        precios[contador][0] = rand() % 1000; /* código */
        precios[contador][1] = rand() % 100 + 1; /* precio */
    }
}

void BUSCAR_ARRAY(matriz precios)
{
    int i = 0, codigo;
    do
    {
        printf("\nIntroduzca el código (0-999): ");
        scanf("%d", &codigo);
        fflush(stdin);
    } while (codigo < 0 || codigo > 999);

    i = 0;
    while ((i < N) && (precios[i][0] != codigo))
        i++;

    if (i >= N)
        printf("\nEl elemento no está en el array.\n");
    else
        printf("\nEl elemento ha sido encontrado en la posición %d\n", i + 1);
    getch();
}

int BUSCAR_PRECIO(matriz precios, int codigo)
{
    int i = 0;
    while ((i < N) && (precios[i][0] != codigo))
        i++;
    if (i >= N) return 0; /* Si no existe, precio 0 */
    return precios[i][1];
}

void IMPRIMIR_ARRAY(matriz precios)
{
    int contador;
    printf("\nCOD\tPRECIO\n");
    for (contador = 0; contador < N; contador++)
        printf(" %d\t %d\n", precios[contador][0], precios[contador][1]);
}

void INICIALIZAR_PEDIDOS(Mpedidos pedidos)
{
    int i, j;
    for (i = 0; i < MAX_PED; ++i)
    {
        for (j = 0; j < 4; ++j)
            pedidos[i][j] = 0; /* codigo, cantidad, precio, coste total */
    }
}

void INSERTAR_PEDIDOS(Mpedidos pedidos, matriz precios)
{
    int i, cod, cant, precio;
    for (i = 0; i < MAX_PED; ++i)
    {
        printf("\nPedido %d\n", i + 1);
        printf("Código: ");
        scanf("%d", &cod);
        printf("Cantidad: ");
        scanf("%d", &cant);

        pedidos[i][0] = cod;
        pedidos[i][1] = cant;
        precio = BUSCAR_PRECIO(precios, cod);

        pedidos[i][2] = precio;
        pedidos[i][3] = cant * precio;
    }
}

void IMPRIMIR_PEDIDOS(Mpedidos pedidos)
{
    int i, j;
    printf("\nCOD\tCANT\tPRECIO\tTOTAL\n");
    for (i = 0; i < MAX_PED; ++i)
    {
        for (j = 0; j < 4; ++j)
            printf("%d\t", pedidos[i][j]);
        printf("\n");
    }
}

void ordenar_pedidos(Mpedidos pedidos)
{
    int i, j, min;
    int aux0, aux1, aux2, aux3;
    int pos_min;

    for (i = 0; i < MAX_PED - 1; ++i)
    {
        min = 1000000;
        pos_min = i;
        for (j = i; j < MAX_PED; ++j)
        {
            if (min > pedidos[j][0])
            {
                pos_min = j;
                min = pedidos[j][0];
            }
        }
        if (pos_min != i)
        { /* intercambio de fila del array */
            aux0 = pedidos[i][0]; pedidos[i][0] = pedidos[pos_min][0]; pedidos[pos_min][0] = aux0;
            aux1 = pedidos[i][1]; pedidos[i][1] = pedidos[pos_min][1]; pedidos[pos_min][1] = aux1;
            aux2 = pedidos[i][2]; pedidos[i][2] = pedidos[pos_min][2]; pedidos[pos_min][2] = aux2;
            aux3 = pedidos[i][3]; pedidos[i][3] = pedidos[pos_min][3]; pedidos[pos_min][3] = aux3;
        }
    }
}
Notas finales
  • Mejoras sugeridas: validación de entradas, manejo de errores, y ampliación dinámica de pedidos y productos.
  • Los ejemplos usan funciones estándar de C para la generación aleatoria y asumen el uso de conio.h si se desea usar getch() o clrscr() en entornos compatibles (Turbo C u otros).

Entradas relacionadas: