Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Estructuras
Conjunto de datos o variables de diferentes
tipos.
Estos datos o variables no se referencia
bajo un mismo nombre, el nombre de la
estructura es un nuevo tipo de dato
definido por el usuario.
Estructuras
Los datos de una estructura se les puede
llamar miembros, elementos, campos.
A la estructura tambin como una plantilla
de datos
Estructura
Miembro1
Miembro2
MiembroN
Estructuras
Sintaxis
Struct [nombre de estructura]
{
tipo variable1;
tipo variable2;
.
.
.
tipo variablen
} variables de tipo estructura;
Estructuras
Una estructura nos permite mantener junta y organizada
cierta informacin relacionada
Ej.
struct ejemplo{
char c;
Int i;
}muestra1, muestra2;
muestra1 es una veriable de estructura de tipo ejemplo.
Estructuras
La palabra reservada struct presenta la definicin de estructura.
Tiene dos elementos uno de tipo carcter(c) y otro de tipo entero (i)
Adems se han declarado dos variables de tipo estructura ejemplo muestra 1
y muestra2.
Tambin se pueden declarar variables de tipo estructura dentro de la funcin
main().
Ej.
struct ejemplo{
char c;
Int i;
}muestra1, muestra2;
Estructuras
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct amigos //La estructura se llama amigos
{
char nombre[15]; //elemento de la estructura: nombre
int edad;
//elemento de la estructura: edad
float peso;
//elemento de la estructura: peso
char sexo[5]; //elemento de la estructura: sexo
int cel;
//elemento de la estructura: cel
}a1,a2;
//Variables de tipo estructura: a1,a2
//Estas dos variables tendran todos los elementos de la estructura
main(){
struct amigos a3; //Se declara una variable de tipo estructura dentro de main()
printf("Se creo la estructura correctamente\n");
printf("\n");
system("PAUSE");
}
Estructuras
Se pueden inicializar los miembros de una
estructura en el momento de declarar la variable
de tipo estructura
struct ejemplo a = (c, 123);
Estructuras
//Inicializacin de una variable de tipo estructura amigos
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct amigos //La estructura se llama amigos
{
char nombre[15]; //elemento de la estructura: nombre
int edad;
//elemento de la estructura: edad
float peso;
//elemento de la estructura: peso
char sexo[5]; //elemento de la estructura: sexo
int cel;
//elemento de la estructura: cel
}a1,a2;
//Variables de tipo estructura: a1,a2
//Estas dos variables tendran todos los elementos de la estructura
main(){
struct amigos a3={"pepe",15,82.31,"m",123456}; //Se declara una variable de tipo estructura dentro de main()
printf("Se creo la estructura correctamente\n");
printf("\n");
system("PAUSE");
}
Estructuras
Acceso a elementos de una estructura.
Los miembros de una estructura se pueden
manipular individualmente
Para acceder a elementos de una estructura se
utiliza el operador (.) y el operador apuntador
de una estructura (->), tambin llamado
operador flecha.
Estructuras
//Inicializacin de una variable de tipo estructura amigos
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct amigos //La estructura se llama amigos
{
char nombre[15]; //elemento de la estructura: nombre
int edad;
//elemento de la estructura: edad
float peso;
//elemento de la estructura: peso
char sexo[5]; //elemento de la estructura: sexo
int cel;
//elemento de la estructura: cel
}a1,a2;
//Variables de tipo estructura: a1,a2
//Estas dos variables tendran todos los elementos de la estructura
main(){
struct amigos a3={"pepe",15,82.31,"m",123456}; //Se declara una variable de tipo estructura dentro de main()
fflush(stdin); //Limpiar el buffer de entrada del teclado
printf("\n Dame el nombre completo del amigo ");
gets(a1.nombre); //Adquiere una cadena del teclado y la almacena en el elemento nombre de la variable a1 de tipo amigos
Estructuras
gets(a1.nombre); //Adquiere una cadena del teclado y la
almacena en el elemento nombre de la variable a1 de tipo
amigos
printf("\nsexo: %s",a1.sexo);
printf("\ncel: %d\n",a1.cel);
printf("\nNombre: ");
printf("\n Dame la edad del amigo ");
puts(a3.nombre);
scanf("%d",&a1.edad); //Adquiere una dato int del teclado y la printf("\nedad: %d",a3.edad);
almacena en el elemento edad de la variable a1 de tipo amigos
printf("\npeso: %f",a3.peso);
printf("\nsexo: %s",a3.sexo);
printf("\n Dame el peso del amigo ");
printf("\ncel: %d",a3.cel);
scanf("%f",&a1.peso); //Adquiere una dato float del teclado y la
almacena en el elemento peso de la variable a1 de tipo amigos
fflush(stdin);
printf("\n");
printf("\n Dame el sexo del amigo ");
gets(a1.sexo); //Adquiere un caracter del teclado y la almacena system("PAUSE");
}
en el elemento nombre de la variable a1 de tipo amigos
printf("\n Dame el cel del amigo ");
scanf("%i",&a1.cel); //Adquiere una dato int del teclado y la
almacena en el elemento edad de la variable a1 de tipo amigos
printf("\nNombre: ");
//Se imprimen los datos de los
amigos 1 y 3
puts(a1.nombre);
printf("\nedad: %d",a1.edad);
printf("\npeso: %f",a1.peso);
Estructuras
Arreglos de estructuras
Como puede verse en ejemplo anterior existen
problemas en donde sera imposible realizar un
programa sin la utilizacin de arreglos
Estructuras y funciones
Es posible pasar estructuras completas a
una funcin o elementos individuales de
una estructura
Tambin es posible pasarlos por valor y por
referencia, basta usar apuntadores
Estructuras y funciones
//Pasando miembros, campos, elemento de una
estructura a una funcion
#include <stdio.h>
#include <stdlib.h>
for(i=0;i<n;i++){
printf("\nDame el nombre del cuate %d: ",i+1);
scanf("%s",&c[i].nombre);
printf("\nDame la edad del cuate %d: ",i+1);
scanf("%d",&c[i].edad);
printf("\nDame el peso del cuate %d: ",i+1);
scanf("%f",&c[i].peso);
}
for(i=0;i<n;i++)
imprimir(c[i].nombre,c[i].edad,c[i].peso);
system("PAUSE");
}
void imprimir(char nom[],int ed,float pes){
printf("\nEl nombre del cuate es: %s tiene %d aos
y pesa %f kilos\n",nom,ed,pes);
}
Estructuras y funciones
//Pasando estructura completa a una funcion
#include <stdio.h>
#include <stdlib.h>
void imprimir(struct cuates a);
struct cuates{
char nombre[30];
int edad;
float peso;
};
main(){
int n,i;
printf("Cuantos cuates tienes?");
scanf("%d",&n);
struct cuates c[n];
for(i=0;i<n;i++){
printf("\nDame el nombre del cuate %d: ",i+1);
scanf("%s",&c[i].nombre);
printf("\nDame la edad del cuate %d: ",i+1);
scanf("%d",&c[i].edad);
printf("\nDame el peso del cuate %d: ",i+1);
scanf("%f",&c[i].peso);
}
for(i=0;i<n;i++)
imprimir(c[i]);
system("PAUSE");
}
void imprimir(struct cuates a){
printf("\nEl nombre del cuate es: %s tiene %d aos
y pesa %f kilos\n",a.nombre,a.edad,a.peso);
}
ejemplo
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct amigos
{
char nombre[15];
int edad;
float peso;
char sexo[5];
int cel;
};
main(){
int i;
int n;
printf("\nCuantos amigos tienes?:
");
scanf("%d",&n);
struct amigos a[n];
for(i=0;i<n;i++){
fflush(stdin);
printf("\n Dame el nombre
completo del amigo %d ",i);
gets(a[i].nombre);
Bibliografa
Cmo programar en C y C++ - Deitel [2da
Edicin]
El Lenguaje de Programacon C, Kernighan y
Ritchie - Pearson education