UPE: Programando Structs en ANSI C - I
El Objetivo de este TP es practicar y resolver ejercicios vinculados al tema STRUCTS
. Para poder resolverlos es necesario tener claro algunos conceptos:
• Librerías
• Variables
• Tipos de datos
• Estructuras de control
• Structs
• Vectores
En la programación de soluciones para algunos problemas vamos a necesitar agrupar datos de diferente tipo o de manejar datos que serian muy difícil de describir en los tipos de datos primitivos, en esta situación debemos aprovecharnos de las características que hacen al lenguaje C, o sea el uso de estructuras, uniones y punteros.
Una estructura contiene varios datos. La forma de definir una estructura es haciendo uso de la palabra clave struct. Aquí hay ejemplo de la declaración de una estructura:
struct estructuraDemo
{
int soyentero;
double soydoble;
char soychar[25];
} variable;
Para poner en practica estructuras vamos a basarnos un ejemplo de la vida real y escribir el programa base paso a paso.
Escribiendo el programa base
Nuestro cliente se llama Alexander, dueño de un depósito de mercadería. Su negocio consiste en recibir cajas de los mayoristas y luego distribuirlas a los minoristas.
El primer pedido que nos hace, consiste en desarrollar un sistema que le permita inventariar las cajas que le ingresan a su depósito. Generalmente las cajas son muy parecidas y solo varían en su tamaño y el cliente; Por tanto cada caja tiene como atributos:
• Cliente (50 caracteres)
• Ancho (en cm)
• Alto (en cm)
• Peso (en gramos)
Inicio
Debemos hacer un programa, que permita ingresar al menos 3 cajas con sus atributos y luego imprimirlos en pantalla.
- La cantidad de cajas a ingresar se define mediante una constante
- Solo se puede usar tipos de datos específicos (long, short, chat, etc)
- Debemos usar una estructura para contener todos los atributos de una caja
#include<stdio.h>
#define cantidad 3
// Declaramos la estructura con sus atributos y la llamamos "caja"
struct caja
{
char cliente[50]; // tipo char de 50 posiciones.
short alto;
short ancho;
short peso;
};
int main(void)
{
struct caja cajas[cantidad]; // Inicializamos un vector que se llamara "cajas" y sera del tipo "caja"
short i=0;
printf("Bienvenido al sistema *Cajita IN/OUT* \n"); // printf: nos permite mostrar texto en la consola
for (i=0;i<cantidad;i++)
{
printf("Carga de datos para el cliente %hd: \n",i+1); // Porque i+1? Porque queremos mostrar el orden del cliente que cargamos... la variable I al inicio esta en cero.
printf(" > Ingrese el nombre del cliente: ");
scanf("%s", cajas[i].cliente); // scanf: nos permite obtener texto desde la consola
// &cajas[i].cliente: guardamos lo que obtenemos desde la consola en la posicion "i" del vector de cajas y dentro el atributo cliente
printf(" > Ingrese el alto de la caja: ");
scanf("%hd", &cajas[i].alto);
printf(" > Ingrese el ancho de la caja: ");
scanf("%hd", &cajas[i].ancho);
printf(" > Ingrese el peso de la caja: ");
scanf("%hd", &cajas[i].peso);
printf(" \n"); // Salto de linea para separar el texto del próximo cliente
i = i++; // Sumamos 1 al contador de posición del vector
}
// Imprimimos el listado de las cajas que se cargaron:
printf("*** Listado de cajas: ***\n\n");
for (i=0;i<cantidad;i++)
{
printf(" > Cliente %s \n", cajas[i].cliente);
printf(" Alto Caja %d \n", cajas[i].alto);
printf(" Ancho Caja %d \n", cajas[i].ancho);
printf(" Peso Caja %d \n", cajas[i].peso);
printf(" \n");
}
// Finalizamos la función.
return(0);
}
Calcular promedios y porcentajes
Modifiquemos el programa anterior para que nos permita lo siguiente:
- Que me permita ingresar 10 cajas.
- Calcular el promedio del peso y mostrarlo en la impresion final.
- Calcular el porcentaje de cajas que superan la longitud de 480cm.
Material:
“The GNU tutorial”, páginas 19-22.
Aprendiendo Structs en c++