Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad III:
ESTRUCTURAS
DE
REGISTROS
Correo:
ing.francismarreyesbello@gmail.com
Watsapp:(0424)8537528
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
1 ...
Declaración de estructuras.
struct nombre_estructura {
campo/miembro estructura;
};
Donde:
--- campo/miembro estructura; son tipos de datos que contiene, se les puede llamar
campo ó miembro.
Si deseáramos hacer una agenda telefónica, la forma para declararla podría ser:
struct agenda_entrada {
char nombre[50];
char apellido[60];
char telefono[10];
char edad;
};
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
Declaración de estructuras. 1 ...
struct nombre_estructura {
campo/miembro estructura;
};
Donde:
--- campo/miembro estructura; son tipos de datos que contiene, se les puede llamar campo
ó miembro.
Si desearamos hacer una agenda telefónica, la forma para declararla podría ser:
struct agenda_entrada {
char nombre[50];
char apellido[60];
char telefono[10];
char edad;
};
struct agenda_entrada {
char nombre[50];
char apellido[60];
char telefono[10];
char edad;
}familiar, laboral;
struct {
char nombre[50];
char apellido[60];
char telefono[10];
char edad;
}familiar, laboral;
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
1 ...
En el primer ejemplo estamos declarando la estructura, luego, cuando la necesitemos, le
asignaremos las variables. Para el segundo y tercer ejemplo hemos declarado las variables
junto a la estructura, esto nos trae el inconveniente de no poder declarar más variables a lo
largo del programa pues las estructuras se tienen que declarar antes de la función main.
struct agenda_entrada agenda;
.
seguido de un “ ” Y el nombre del “campo”.
Ejemplo:
agenda.nombre;
Estructura y arreglos.
Aplicando un poco de lógica, nos daremos cuenta que nuestra agenda solo almacenaría
una entrada, cosa poco práctica. Para solucionar esto solo tenemos que declarar un array ó
arreglo de estructura:
struct estructura_agenda agenda[30]
como vemos, hemos declarado que "agenda" sea un vector de 30 elementos. La manera
de acceder a cada elemento sería:
amigo[número_de_elemento].campo_estructura
Donde:
Solución:
struct producto {
int codigo;
char descripcion[41];
float precio;
}; //obligatorio el punto y coma
Hemos declarado un registro llamado "producto" con tres campos uno de tipo int llamado
código, otro de tipo cadena de caracteres llamado descripción y finalmente el campo
"precio" de tipo float.
Como vemos los tres campos están relacionados y hacen referencia a las características
que puede tener todo producto que vende una empresa.
Pero si solo declaramos el registro no nos sirve de nada, debemos definir una o más
variables de dicho tipo.
Es común declarar el registro fuera de cualquier función para luego poder utilizarlo en
muchas funciones (de todos modos la declaración del struct podría estar dentro de la
función main):
struct producto {
int codigo;
char descripcion[41];
float precio;
}; //obligatorio el punto y coma
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
1 ...
Una vez creado el registro procedemos a definir variables de tipo Registro:
Para definir una variable la definimos de tipo "producto" le antecedemos la palabra clave
struct junto con el nombre del struct:
struct producto pro1,pro2;
Estamos definiendo dos variables llamadas pro1 y pro2 de tipo producto. No hay ningún
problema de definir cada variable en una línea distinta:
struct producto pro1;
struct producto pro2;
Cada una de las variables pro1 y pro2 reserva espacio para almacenar tres campos cada
una.
PRO1
PRO1
Una vez definidos el registro y sus variables precedemos a cargar la variable pro1
debemos cargar campo a campo:
scanf("%i",&pro1.codigo);
fflush(stdin);
printf("Ingrese la descripcion:");
gets(pro1.descripcion);
printf("Ingrese el precio:");
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
scanf("%f",&pro1.precio); 1 ...
La carga del segundo registro llamado pro2 es idéntico a la carga del primer registro:
scanf("%i",&pro2.codigo);
fflush(stdin);
printf("Ingrese la descripcion:");
gets(pro2.descripcion);
printf("Ingrese el precio:");
scanf("%f",&pro2.precio);
Para verificar cuál de los dos productos tiene un precio mayor debemos acceder al
campo precio de cada uno de los dos productos:
if (pro1.precio>pro2.precio)
Lo mismo cuando procedemos a imprimir por pantalla debemos indicar que campo
debemos mostrar y no podemos pasar el registro completo:
#include<stdio.h>
#include<conio.h>
struct producto {
int codigo;
char descripcion[41];
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
1 ...
float precio;
}; //obligatorio el punto y coma
int main()
{
struct producto pro1,pro2;
printf("Ingrese el codigo del producto:");
scanf("%i",&pro1.codigo);
fflush(stdin);
printf("Ingrese la descripcion:");
gets(pro1.descripcion);
printf("Ingrese el precio:");
scanf("%f",&pro1.precio);
printf("Ingrese el codigo del producto:");
scanf("%i",&pro2.codigo);
fflush(stdin);
printf("Ingrese la descripcion:");
gets(pro2.descripcion);
printf("Ingrese el precio:");
scanf("%f",&pro2.precio);
if (pro1.precio>pro2.precio)
{
printf("El producto %s tiene un precio mayor",pro1.descripcion);
}
else
{
if (pro2.precio>pro1.precio)
{
printf("El producto %s tiene un precio mayor",pro2.descripcion);
}
else
{
printf("Tienen igual precio");
}
}
getch();
return 0;
}
Ministerio del Poder Popular
Imag Para la Educación Universitaria
Image 0 Imagen
en Universidad Politécnica Territorial n 7 ... ...
“José Antonio Anzoátegui”
1 ...