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.hsi se desea usargetch()oclrscr()en entornos compatibles (Turbo C u otros).