::  Prof. Yeniffer Peña Lenguaje  C Presentación Computación I C
Estructura de datos cuyos elementos individuales pueden ser de distinto tipo. Así, una estructura puede contener elementos enteros, flotantes y caracteres.  También pueden incluirse como elementos de una estructura, arreglos, punteros y otras estructuras. A los elementos individuales de una estructura se le denominan miembros. Estructuras
La composición de una estructura puede definirse como: Estructuras struct  identificador  { TipoDeDato  miembro1; TipoDeDato  miembro2; … TipoDeDato  miembroN; } ; Los nombres de los miembros individuales dentro de una estructura deben ser todos diferentes, pero el nombre de un miembro puede ser el mismo que el de una variable definida fuera de la estructura. Los miembros de una estructura no pueden inicializarse dentro de la declaración del tipo de la estructura.
Una vez que la estructura ha sido definida, pueden declararse las variables de tipo de esta estructura. struct  identificador  variable1, variable2, … , variablen ; struct  regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; } ; struct regEquipo  equipo1; struct regEquipo  equipo2={“Tachira”,25,12,100000.0 }; Ejemplo: Estructuras Y al mismo tiempo pueden inicializarse sus miembros:
Los miembros de una estructura se procesan generalmente de forma individual, por eso es importante acceder a cada uno de ellos. Un miembro de una estructura puede ser accedido: variable . miembro Donde variable refiere el nombre de una variable de tipo estructura y miembro el nombre de un miembro dentro de una estructura. El punto (.) es el operador que los separa. struct  regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; } ; struct regEquipo   equipo1 ; Para tener acceso a los miembros de  equipo1 equipo1 . nombre equipo1 . numVictorias equipo1 . numDerrotas equipo1 . costoAfiliacion Estructuras
Estructuras #include <stdio.h> #include <conio.h> struct  datos {  char nom[12]; char ape[12]; float sue; }; void main() {  struct  datos  empleado; printf(&quot;\nNombre: &quot;);  scanf(&quot;%s&quot;, empleado.nom); printf(“\nApellido: &quot;);  scanf(&quot;%s&quot;, empleado.ape); printf(“\nSueldo: &quot;);  scanf(&quot;%f&quot;, &empleado.sue); clrscr(); printf(“\nNombre: %s”, empleado.nom); printf(“\nApellido: %s”, empleado.ape);  printf(“\nSueldo: %.2f”, empleado.sue); getch(); } Ejemplo de uso de una Estructura
Se puede acceder a la dirección de comienzo de una estructura de la misma manera que cualquier otra dirección.  struct   regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; } ; struct regEquipo equipo; struct regEquipo   *aptVar ; aptVar  = &equipo;  //La dirección de comienzo de equipo se asigna a aptVar Estructuras Estructuras y Punteros:
Los miembros individuales de una estructura en términos de su correspondiente variable puntero se pueden acceder: VarPuntero -> miembro Considerando el ejemplo anterior :  struct regEquipo  { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; } ; Estructuras Estructuras y Punteros: struct regEquipo equipo,  *aptVar ; aptVar  = &equipo;  aptVar ->nombre aptVar ->numVictorias aptVar ->numDerrotas aptVar ->costoAfiliacion El acceso a los miembros usando  aptVar  será :
Se puede transferir a una función los miembros individuales o la estructura completa, igualmente se puede devolver desde una función miembros individuales o la estructura completa usando la cláusula return. A continuación se presenta un ejemplo de paso de una estructura como argumento a una función. Estructuras Paso de una Estructura a una Función:
Estructuras #include <stdio.h> #include <conio.h> struct  datos {  char nom[12]; char ape[12]; float sue; }; void leer ( struct datos  *p); void mostrar ( struct datos  p); void main() {  struct  datos  empleado; clrscr(); leer ( &empleado ); clrscr(); mostrar ( empleado ); getch(); } void leer ( struct datos  *p) {  printf(&quot;\nNombre: &quot;);  scanf(&quot;%s&quot;, p->nom); printf(“\nApellido: &quot;);  scanf(&quot;%s&quot;, p->ape); printf(“\nSueldo: &quot;);  scanf(&quot;%f&quot;, &p->sue); } void mostrar ( struct datos  p) {  printf(“\nNombre: %s”, p.nom); printf(“\nApellido: %s”, p.ape); printf(“\nSueldo: %.2f”, p.sue); } Ejemplo de Paso de una Estructura a una Función
A su vez, una estructura puede ser miembro de otra estructura: struct  regDetalles { int golesFavor; int golesContra; int empates; } struct  regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; struct regDetalles  detalles; } ; struct regEquipo  equipo1; struct regEquipo  equipo2={“Tachira”, 25, 12, 100000.0, 47, 32, 11}; Estructuras
Si un miembro de una estructura es a su vez otra estructura, entonces el miembro de la estructura mas interna puede ser accedido: struct  regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; struct regDetalles   detalles ; } ; struct regEquipo  equipo1; Para tener acceso a los miembros del regDetalles de equipo1 : equipo1 . detalles . golesFavor equipo1 . detalles . golesContra equipo1 . detalles . empates struct  regDetalles { int golesFavor; int golesContra; int empates; } Estructuras
También es posible definir un vector de estructuras: struct  regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; struct regDetalles  detalles; }  vEquipos[5] ; ó struct regEquipo  vEquipos[5]; Estructuras Nombre numVictorias numDerrotas costoAfiliacion detalles golesFavor golesContra empates 0  1  2  3  4 vEquipos
Considere el siguiente vector de estructura: vEquipos [pos] . detalles . golesFavor vEquipos [pos] . detalles . golesContra vEquipos [pos] . detalles . empates struct  regDetalles { int golesFavor; int golesContra; int empates; } Estructuras struct  regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; struct regDetalles   detalles ; }; struct regEquipo  vEquipos[5]; vEquipos [pos] . nombre vEquipos [pos] . numVictorias vEquipos [pos] . numDerrotas vEquipos [pos] . costoAfiliacion El acceso a los miembros de un vector de estructura será :
Estructuras #include <stdio.h> #include <conio.h> struct  datos {  char nom[12]; char ape[12]; float sue; }; void main() {  struct  datos  vector[3]; int i; clrscr(); for (i=0;i<3;i++) {  printf(&quot;\nNombre: &quot;);  scanf(&quot;%s&quot;, vector[i].nom); printf(“\nApellido: &quot;);  scanf(&quot;%s”, vector[i].ape); printf(“\nSueldo: &quot;);  scanf(&quot;%f&quot;, & vector[i]. sue); } clrscr(); printf(&quot;Nombre\t Apellido\t Sueldo \n\n&quot;); for (i=0;i<3;i++) printf(&quot;%s\t %s \t  %.2f \n&quot;,  vector[i]. nom,  vector[i]. ape,  vector[i]. sue); getch(); } Ejemplo de Vector de Estructura
Estructuras #include <stdio.h> #include <conio.h> struct  datos {  char nom[12]; char ape[12]; float sue; }; void leer ( struct datos  *p); void mostrar ( struct datos  p); void main() {  struct  datos  vector[3]; clrscr(); leer(vector); clrscr(); mostrar(vector); getch(); } void leer ( struct datos  *p) {  int i;  for (i=0;i<3;i++) {  printf(&quot;\nNombre: &quot;);  scanf(&quot;%s&quot;, p[i].nom); printf(&quot;Apellido: &quot;);  scanf(&quot;%s&quot;, p[i].ape); printf(&quot;Sueldo: &quot;);  scanf(&quot;%f&quot;, &p[i].sue); } } void mostrar ( struct datos  p) {  int i;  printf(&quot;Nombre\t Apellido\t Sueldo \n\n&quot;); for (i=0;i<3;i++) printf(&quot;%s\t %s \t  %.2f \n&quot;, p[i].nom,p[i].ape,p[i].sue); } Ejemplo de Paso de un Vector de Estructuras a una Función

Computacion estructuras

  • 1.
    :: Prof.Yeniffer Peña Lenguaje C Presentación Computación I C
  • 2.
    Estructura de datoscuyos elementos individuales pueden ser de distinto tipo. Así, una estructura puede contener elementos enteros, flotantes y caracteres. También pueden incluirse como elementos de una estructura, arreglos, punteros y otras estructuras. A los elementos individuales de una estructura se le denominan miembros. Estructuras
  • 3.
    La composición deuna estructura puede definirse como: Estructuras struct identificador { TipoDeDato miembro1; TipoDeDato miembro2; … TipoDeDato miembroN; } ; Los nombres de los miembros individuales dentro de una estructura deben ser todos diferentes, pero el nombre de un miembro puede ser el mismo que el de una variable definida fuera de la estructura. Los miembros de una estructura no pueden inicializarse dentro de la declaración del tipo de la estructura.
  • 4.
    Una vez quela estructura ha sido definida, pueden declararse las variables de tipo de esta estructura. struct identificador variable1, variable2, … , variablen ; struct regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; } ; struct regEquipo equipo1; struct regEquipo equipo2={“Tachira”,25,12,100000.0 }; Ejemplo: Estructuras Y al mismo tiempo pueden inicializarse sus miembros:
  • 5.
    Los miembros deuna estructura se procesan generalmente de forma individual, por eso es importante acceder a cada uno de ellos. Un miembro de una estructura puede ser accedido: variable . miembro Donde variable refiere el nombre de una variable de tipo estructura y miembro el nombre de un miembro dentro de una estructura. El punto (.) es el operador que los separa. struct regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; } ; struct regEquipo equipo1 ; Para tener acceso a los miembros de equipo1 equipo1 . nombre equipo1 . numVictorias equipo1 . numDerrotas equipo1 . costoAfiliacion Estructuras
  • 6.
    Estructuras #include <stdio.h>#include <conio.h> struct datos { char nom[12]; char ape[12]; float sue; }; void main() { struct datos empleado; printf(&quot;\nNombre: &quot;); scanf(&quot;%s&quot;, empleado.nom); printf(“\nApellido: &quot;); scanf(&quot;%s&quot;, empleado.ape); printf(“\nSueldo: &quot;); scanf(&quot;%f&quot;, &empleado.sue); clrscr(); printf(“\nNombre: %s”, empleado.nom); printf(“\nApellido: %s”, empleado.ape); printf(“\nSueldo: %.2f”, empleado.sue); getch(); } Ejemplo de uso de una Estructura
  • 7.
    Se puede accedera la dirección de comienzo de una estructura de la misma manera que cualquier otra dirección. struct regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; } ; struct regEquipo equipo; struct regEquipo *aptVar ; aptVar = &equipo; //La dirección de comienzo de equipo se asigna a aptVar Estructuras Estructuras y Punteros:
  • 8.
    Los miembros individualesde una estructura en términos de su correspondiente variable puntero se pueden acceder: VarPuntero -> miembro Considerando el ejemplo anterior : struct regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; } ; Estructuras Estructuras y Punteros: struct regEquipo equipo, *aptVar ; aptVar = &equipo; aptVar ->nombre aptVar ->numVictorias aptVar ->numDerrotas aptVar ->costoAfiliacion El acceso a los miembros usando aptVar será :
  • 9.
    Se puede transferira una función los miembros individuales o la estructura completa, igualmente se puede devolver desde una función miembros individuales o la estructura completa usando la cláusula return. A continuación se presenta un ejemplo de paso de una estructura como argumento a una función. Estructuras Paso de una Estructura a una Función:
  • 10.
    Estructuras #include <stdio.h>#include <conio.h> struct datos { char nom[12]; char ape[12]; float sue; }; void leer ( struct datos *p); void mostrar ( struct datos p); void main() { struct datos empleado; clrscr(); leer ( &empleado ); clrscr(); mostrar ( empleado ); getch(); } void leer ( struct datos *p) { printf(&quot;\nNombre: &quot;); scanf(&quot;%s&quot;, p->nom); printf(“\nApellido: &quot;); scanf(&quot;%s&quot;, p->ape); printf(“\nSueldo: &quot;); scanf(&quot;%f&quot;, &p->sue); } void mostrar ( struct datos p) { printf(“\nNombre: %s”, p.nom); printf(“\nApellido: %s”, p.ape); printf(“\nSueldo: %.2f”, p.sue); } Ejemplo de Paso de una Estructura a una Función
  • 11.
    A su vez,una estructura puede ser miembro de otra estructura: struct regDetalles { int golesFavor; int golesContra; int empates; } struct regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; struct regDetalles detalles; } ; struct regEquipo equipo1; struct regEquipo equipo2={“Tachira”, 25, 12, 100000.0, 47, 32, 11}; Estructuras
  • 12.
    Si un miembrode una estructura es a su vez otra estructura, entonces el miembro de la estructura mas interna puede ser accedido: struct regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; struct regDetalles detalles ; } ; struct regEquipo equipo1; Para tener acceso a los miembros del regDetalles de equipo1 : equipo1 . detalles . golesFavor equipo1 . detalles . golesContra equipo1 . detalles . empates struct regDetalles { int golesFavor; int golesContra; int empates; } Estructuras
  • 13.
    También es posibledefinir un vector de estructuras: struct regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; struct regDetalles detalles; } vEquipos[5] ; ó struct regEquipo vEquipos[5]; Estructuras Nombre numVictorias numDerrotas costoAfiliacion detalles golesFavor golesContra empates 0 1 2 3 4 vEquipos
  • 14.
    Considere el siguientevector de estructura: vEquipos [pos] . detalles . golesFavor vEquipos [pos] . detalles . golesContra vEquipos [pos] . detalles . empates struct regDetalles { int golesFavor; int golesContra; int empates; } Estructuras struct regEquipo { char nombre[40]; int numVictorias; int numDerrotas; float costoAfiliacion; struct regDetalles detalles ; }; struct regEquipo vEquipos[5]; vEquipos [pos] . nombre vEquipos [pos] . numVictorias vEquipos [pos] . numDerrotas vEquipos [pos] . costoAfiliacion El acceso a los miembros de un vector de estructura será :
  • 15.
    Estructuras #include <stdio.h>#include <conio.h> struct datos { char nom[12]; char ape[12]; float sue; }; void main() { struct datos vector[3]; int i; clrscr(); for (i=0;i<3;i++) { printf(&quot;\nNombre: &quot;); scanf(&quot;%s&quot;, vector[i].nom); printf(“\nApellido: &quot;); scanf(&quot;%s”, vector[i].ape); printf(“\nSueldo: &quot;); scanf(&quot;%f&quot;, & vector[i]. sue); } clrscr(); printf(&quot;Nombre\t Apellido\t Sueldo \n\n&quot;); for (i=0;i<3;i++) printf(&quot;%s\t %s \t %.2f \n&quot;, vector[i]. nom, vector[i]. ape, vector[i]. sue); getch(); } Ejemplo de Vector de Estructura
  • 16.
    Estructuras #include <stdio.h>#include <conio.h> struct datos { char nom[12]; char ape[12]; float sue; }; void leer ( struct datos *p); void mostrar ( struct datos p); void main() { struct datos vector[3]; clrscr(); leer(vector); clrscr(); mostrar(vector); getch(); } void leer ( struct datos *p) { int i; for (i=0;i<3;i++) { printf(&quot;\nNombre: &quot;); scanf(&quot;%s&quot;, p[i].nom); printf(&quot;Apellido: &quot;); scanf(&quot;%s&quot;, p[i].ape); printf(&quot;Sueldo: &quot;); scanf(&quot;%f&quot;, &p[i].sue); } } void mostrar ( struct datos p) { int i; printf(&quot;Nombre\t Apellido\t Sueldo \n\n&quot;); for (i=0;i<3;i++) printf(&quot;%s\t %s \t %.2f \n&quot;, p[i].nom,p[i].ape,p[i].sue); } Ejemplo de Paso de un Vector de Estructuras a una Función