Estructuras en C

Estructuras en C

En este tema exploramos en C la estructura más común de representación de datos la llamada estructura.

Variables simples o escalares pueden almacenar un dato de información y arreglos pueden almacenar conjuntos de ellos del mismo tipo y al mismo tiempo, estos dos mecanismos pueden manejar una gran variedad de situaciones pero a menudo se necesita trabajar sobre datos de diversos tipos en este caso ni variables escalares ni arreglos son adecuados.


Para resolver este problema C provee de un tipo de dato especial llamado estructura.

Una estructura (tambien llamada registro), es un tipo de dato que puede almacenar una cantidad N de variables, las cuales pueden ser de varios tipos.

Una estructura es bastante parecido a una tabla de una base de datos. A cada una de las variables que conforman una estructura se les llama campos.

La forma de definir una estructura es haciendo uso de la palabra clave STRUCT.


EL FORMATO GENERAL DE UNA ESTRUCTURA ES:


struct nombre_de_la_estructura
{
tipo campo1;
tipo campo2;
.
.
 tipo campoN;
} instancia de la estructura o variable;
 
EJEMPLO:
  
struct estructura_amigo
{
char nombre[30];
char apellido[40];
char telefono[10];
}; amigo

Para acceder al nombre de amigo usamos:

amigo.nombre


-----------------------------------------------------------------------------------------------------------

#include <stdio.h>
#include <conio.h>
#include <string.h>
struct { int matricula;
char nombre[30];
int edad; } alumno;
void main() {
clrscr();

// captura de campos

printf("dame matricula :"); 
scanf("%d",&alumno.matricula);getchar();
printf("dame nombre :"); gets(alumno.nombre);
printf("dame edad :"); scanf("%d",&alumno.edad);

// area de operaciones

alumno.edad = alumno.edad * 12;

// area de salida

printf("MATRICULA =%d \n",alumno.matricula);
printf("NOMBRE =%s \n",alumno.nombre);
printf("MESES =%d \n",alumno.edad);getchar();
}
-----------------------------------------------------------------------------------------------------------

Arrays de estructuras 

Es posible agrupar un conjunto de elementos de tipo estructura en un arreglo. Esto se conoce como array de estructuras.



Supongamos que queremos almacenar en un vector, la informacion de 20 obreros de una empresa. Lo hariamos de la manera siguiente:

struct trabajador
{
char nombre[20];
char apellidos[40];
int edad;
  float salario;
}; trabajadores[20]; /* almacenar los datos de 20 trabajadores */

Ejemplo sobre como acceder a los campos y sus elementos:

para ver el nombre del cuarto trabajador:


trabajadores[3].nombre;

Ejemplos de arrays de estructuras:

 /* Lista los campos de una agenda construida en el programa */

#include <stdio.h>
#define N 3
{
struct agenda
{
char nombre[25];
char telefono[10];
int edad;
};amigos[N]={{"Pepe","913472314",18},{"Juan","915547623",19}, {"Rosa","917456778",21}};

main()
{
int i;
for (i=0; i<N; ++i)
{
printf("\nAmigo %s\t telefono %s\t edad %d",amigos[i].nombre,
amigos[i].telefono,amigos[i].edad);
}
printf("\n");
}
getch();
}
-----------------------------------------------------------------------------------------------------------

 /* Muestra los datos de 6 estudiantes y determina si el estudiante aprobó o reprobó una materia */

 #include<stdio.h>
#include <conio.h>
#include <string.h>
#define N 6

struct estudiante
{
int matricula;
char nombre[30];
int nota1,nota2,nota3;
float promedio;
} est[N];

Main()
{
int i=0, T=0;
for (i=0; i<N; i++)
{
printf (“Digite la matricula: \n”);
scanf(“%d”,&est[i].matricula);
printf (“Digite el nombre: \n”);
getchar();
gets (est[i].nombre);
printf (“Digite las notas: \n”);
scanf(“%d %d %d”,&est[i].nota1,&est[i].nota2,&est[i].nota3);
T=est[i].nota1 + est[i].nota2 + est[i].nota3;
est[i].promedio=T/3;
}

for (i=0; i<N: i++)
{
printf (“Estudiante %d : \n”, i);
printf (“Matricula: %d \n Nombre: %s \n Nota 1: %d \n Nota 2: %d \n Nota 3: %d \n”, est[i].matricula,
 est[i].nombre, est[i].nota1,est[i].nota2, est[i].nota3)
printf (“El Promedio del estudiante es %f”, est[i].Promedio)
if (est[i].Promedio>70)
printf (“El estudiante aprobo”);
else
printf (“El estudiante reprobo”);
}
getch();
}

Entradas más populares de este blog

Vectores en C y C++ - Ejercicios Resueltos

▷ Matrices en C y C++ - Ejercicios Resueltos

▷ Ejercicios Resueltos Funciones en C / C++