Sei sulla pagina 1di 19

Estructuras

Ing. Manuel Castaeda

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

Podremos declarar arreglos de tipo estructura,


recordando que es necesario especificar su tamao
struct nombre_struct variable_tipo_struct[100];

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>

void imprimir(char nom[],int ed,float pes);


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].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);

printf("\n Dame el cel del amigo %d:


",i);
scanf("%i",&a[i].cel);
}
for(i=0;i<n;i++){
printf("\nNombre: ");
puts(a[i].nombre);

printf("\n Dame la edad del amigo


%d: ",i);
printf("\nedad: %d",a[i].edad);
scanf("%d",&a[i].edad);
printf("\npeso: %f",a[i].peso);
printf("\nsexo: %s",a[i].sexo);
printf("\n Dame el peso del amigo printf("\ncel: %d",a[i].cel);
%d: ",i);
}
scanf("%f",&a[i].peso);
printf("\n");
system("PAUSE");
fflush(stdin);
printf("\n Dame el sexo del amigo }
%d: ",i);
gets(a[i].sexo);

Ejemplo estructura con malloc


(memoria dinmica)
#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;
a=(struct amigos *)malloc(n*sizeof(struct amigos));
for(i=0;i<n;i++){
fflush(stdin);
printf("\n Dame el nombre completo del amigo %d ",i);
gets(a[i].nombre);

printf("\n Dame la edad del amigo %d: ",i);


scanf("%d",&a[i].edad);
printf("\n Dame el peso del amigo %d: ",i);
scanf("%f",&a[i].peso);
fflush(stdin);
printf("\n Dame el sexo del amigo %d: ",i);
gets(a[i].sexo);
printf("\n Dame el cel del amigo %d: ",i);
scanf("%i",&a[i].cel);
}
for(i=0;i<n;i++){
printf("\nNombre: ");
puts(a[i].nombre);
printf("\nedad: %d",a[i].edad);
printf("\npeso: %f",a[i].peso);
printf("\nsexo: %s",a[i].sexo);
printf("\ncel: %d\n",a[i].cel);
}
printf("\n");
system("PAUSE");

Bibliografa
Cmo programar en C y C++ - Deitel [2da
Edicin]
El Lenguaje de Programacon C, Kernighan y
Ritchie - Pearson education

Potrebbero piacerti anche