Tutorial de Lenguaje C                                                                                               Dr. Roberto Gómez


LOS REGISTROS O ESTRUCTURAS


1. estructura es el nombre en C de los registros;

2. REGISTRO: grupo de información relacionada que se usa para almacenar datos acerca de un tema o actividad;

3. una colección de registros constituye un archivo;

4. los registros estan divididos en campos;

5. un campo es una variable de un tipo determinado.

Sintáxis:

1.)                                                   2.)                                                                 3.)
        struct <nombre>                      struct <nombre>                                     struct <nombre>
            Bloquev;                                      <var1>,...,<varN>;                                     Bloquev <var1>,...,<varN>

1. define un registro de nombre <nombre> donde los diferentes campos son definidos dentro de Bloquev. Este bloque solo debe contener definición de variables;

2. define los las variables <var1> a <varN> como de tipo: struct <nombre>. Se puede definir una variable de tipo, de una estructura dada, donde quiera que la estructura este definida;

3. es una abreviación de 1.) y 2.).
 

Operaciones estructuras y acceso campos

Operaciones estructuras:

1. operaciones sobre un campo en partícular;

2. el paso de una estructura como parámetro;

3. afectaciones y comparaciones entre estructuras son prohibidas.

Uso de un campo:

struct libro {

                        char titulo[20]; /* título del libro */
                        char autor[20]; /* autor del libro */
                        int num; /* número de libro */
                      };

struct libro lib1,lib2;

Para accesar los campos de lib1 y lib2 se usa el operador . de la forma siguiente:

        lib1.titulo[i] o lib2.titulo[i]
                        para accesar el (i+1) caracter del título
 
        lib1.autori[i] o lib2.autor[i]
                        para accesar el (i+1) caracter del autor

        lib1.num o lib2.num
                        para el número del libro
 

progReg1.c Ejemplo estructuras


#include <stdio.h>
int main()
{
         struct triangulo {
              int  base;
              int altura;
              int l1, l2, l3;
              float area;
              float perimetro;
         }

         struct triangulo fig1, fig2;

         printf("Proporcione las longitudes de los lados del primer triangulo:")
         scanf("%d %d %d", &fig1.l1, &fig1.l2, &fig1.l3)    
         printf("Proporcione el valor de la base y la altura del primer triangulo")
         scanf ("%d %d",&fig1.base, &fig1.altura);
         fig1.area = (fig1.base * fig1.altura)/2
         fig1.perimetro = fig1. l1 + fig1.l2 + fig1.l3;

         printf("Proporcione las longitudes de los lados del segundo triangulo:")
         scanf("%d %d %d", &fig2.l1, &fig2.l2, &fig2.l3)    
         printf("Proporcione el valor de la base y la altura del segundo triangulo")
         scanf("%d %d",&fig2.base, &fig2.altura);
         fig2.area = (fig2.base * fig2.altura)/2
         fig2.perimetro = fig2. l1 + fig2.l2 + fig2.l3;

         if (fig1.area > fig2.area)
             printf("El primer triangulo tiene un area mas grande: %.3f \n",fig1.area );
        else
             printf("El segundo triangulo tiene un area mas grande: %.3f \n",fig2.area);

          if (fig1.perimetro > fig2.perimetro)
             printf("El primer triangulo tiene un perimetro mas grande: %.f \n",fig1.perimetro );
        else
             printf("El segundo triangulo tiene un perimetro mas grande: %.1f \n",fig2.perimetro);

}


Ejercicio estructura

  1. Escriba un programa que calcule la distancia entre dos puntos p1 y p2, que se encuentren en un espacio tridimensional. El programa debe capturar las coordenas de los dos puntos (x,y,z) y almacenarlas en dos variables. Cada variable es una estructura que almacena las coordenadas (x,y,z). La distancia entre el punto (x1,y1,z1) y el punto (x2, y2, z2)  se calcula de la siguiente forma: D=((X2-X1)^2+(Y2-Y1)^2+(Z2-Z1)^2)^1/2.

MENÚ PRINCIPAL