Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructuras en C
Estructuras en C
tipo, ahora nos enfocaremos en las estructuras (tambin conocidas como registros) que son estructuras de datos cuyos elementos individuales pueden ser de distinto tipo. Estos elementos individuales dentro de una estructura se llaman miembros. Para utilizar estructuras en C se requieren de 2 cosas: 1. Declarar la estructura con todos sus miembros. 2. Declarar la variable del nuevo tipo de dato creado. 1. Struct identificador { Tipo 1, miembro 1; Tipo 2, miembro 2; . . . Tipo n, miembro n; Donde struct es una palabra reservada de C, la cual es requerida siempre, ya que hace referencia a que es una estructura. Identificador es el nombre del tipo de dato. Tipo 1 es el tipo de dato del miembro. miembro, es el nombre de la variable que pertenece a la estructura.
2. Para declarar una variable de tipo estructura seria: Struct identificador nom_variable; O tambin se podra definir asi: Struct identificador { Tipo 1, miembro 1; Tipo 2, miembro 2; . . . Tipo n, miembro n;
Declarando esta estructura en C quedara: Struct tienda { Int Id_empleado; char nombre[40]; float sueldo; char depto; };
Ahora bien, cabe mencionar que estructuras diferentes pueden contener nombres de miembros iguales, por ejemplo: Struct uno { Int b; char c; float a; }; Struct dos { char a; float b, c; };
Estructuras en C
Estructuras en C
Struct tienda { Int Id_empleado; char nombre[40]; float sueldo; char depto; } empleados[3];
Struct tienda { Int Id_empleado; char nombre[40]; float sueldo; char depto; }empleados[20];
Y as sucesivamente hasta 20 veces la misma estructura, con esto podemos manejar 20 empleados (o dependiendo del tamao en que se declare el array) con las caractersticas sealadas en el registro (miembros).
Estructuras en C
Ahora pues sabiendo esto, agrego varios ejemplitos, en los cuales se utiliza el acceso a 1 miembro y se procesa con los tipos de sentencias. printf(Cual es el sueldo: ); scanf(%f,&altas.sueldo); printf(Nombre del empleado: %s, altas.nombre[i]); altas.depto=A; if (altas.sueldo<50) { altas.sueldo *=10; }
Estructuras en C Agrego un ejemplo realizado por su servidor, este consiste en dar de altas, bajas, hacer cambios, consultas, etc. de alumnos en una escuela, utilizando estructuras. Ejemplo completo en C.
#include "myli.h" #include <string.h> void inicia (void); void alta (void); void baja (void); void cambio(void); void cons_uno(void); void cons_todos (void); void elige(entero op); entero menu(void); struct talu { entero clave; car descri[35]; deci calif[3]; deci prom; car sexo; }alumnos[16],reg_alu; entero opc,i; entero ren,col,cve; car resp; deci prome; void main() { pantalla(); inicia(); do { opc= menu(); elige(opc); }while(opc!=6); } void inicia(void) { reg_alu.clave=0; for(i=0;i<35;i++){ reg_alu.descri[i]=' '; } for(i=0;i<3;i++) { reg_alu.calif[i]=0.0; reg_alu.prom=0.0; reg_alu.sexo=' '; } for(i=1;i<=15;i++) { alumnos[i]=reg_alu; } }
Estructuras en C
entero menu(void) { entero ops; printf("\t\t\t 1.Altas 2.Bajas \n"); printf("\t\t\t 3.Cambios 4.Consulta uno \n"); printf("\t\t\t 5.Consulta todos 6.Terminar \n"); printf("\n\t\t\t Dame opcion (1-6) "); ren=wherey(); col=wherex(); ops=v_rango(1,6,col,ren); return(ops); } void alta(void) { textbackground (BLUE); textcolor(WHITE); clrscr(); printf("Dame clave : "); ren=wherey(); col=wherex(); cve=v_rango(1,15,col,ren); prome=0; if(alumnos[cve].clave==cve) { printf("El alumno con clave %d ya existe",cve); getch(); } else { reg_alu.clave=cve; puts("\nDame nombre: "); scanf(" %[^\n]",reg_alu.descri); puts ("\nDame calificaciones: "); for (i=0;i<3;i++){ scanf("%f",®_alu.calif[i]); prome+=reg_alu.calif[i]; } reg_alu.prom=(prome/3.0); printf("\nSexo: "); scanf("%s",&resp); reg_alu.sexo=toupper(resp); printf("\nProcede a la alta? S/N "); resp=getche(); if(toupper(resp)=='S'){ alumnos[cve]=reg_alu; } } pantalla(); }
Estructuras en C
void baja (void) { struct talu reg_aux; textbackground (GREEN); textcolor(YELLOW); clrscr(); printf("Dame clave:"); ren=wherey(); col=wherex(); cve=v_rango(1,15,col,ren); if(alumnos[cve].clave==cve) { printf("Nombre:%s",alumnos[cve].descri); puts("\nCalificaciones"); for(i=0;i<3;i++){ printf("%4.1f\t",alumnos[cve].calif[i]); } printf("\n Promedio %4.1f\n",alumnos[cve].prom); printf("Sexo: %c\n",alumnos[cve].sexo); puts("Procede la baja? S/N"); scanf("%c",&resp); if (toupper(resp)=='S') {reg_aux.clave=0; alumnos[cve]=reg_aux; }getch(); } else { printf("El alumno con clave %d no existe",cve);getch(); }pantalla(); } void cons_uno(void) { textbackground (RED); textcolor(WHITE);clrscr(); printf("Dame clave:"); ren=wherey(); col=wherex(); cve=v_rango(1,15,col,ren); if(alumnos[cve].clave==cve) { printf("Nombre:%s",alumnos[cve].descri); puts("Calificaciones"); for(i=0;i<3;i++) { printf("%4.1f",alumnos[cve].calif[i]); } printf("Promedio%4.1f",alumnos[cve].prom); printf("Sexo:%c\n",alumnos[cve].sexo); getch(); } else { printf("El alumno con clave %d no existe",cve); getch(); } pantalla(); }
Estructuras en C
void cons_todos(void) { entero k; textbackground(0); textcolor(2); clrscr(); i=1; printf("clave: Nombre\t\t Calificaciones Promedio Sexo\n"); do { if(alumnos[i].clave==i) { printf(" %2d\t ",i); printf("%-35s",alumnos[i].descri); for (k=0;k<3;k++) { printf("%4.1f",alumnos[i].calif[k]); } printf(" %4.1f",alumnos[i].prom); printf("\t %c\n",alumnos[i].sexo); } else { if (i==16) { printf("\n\t\t\t!!!!No hay mas registros!!!!"); } } i++; }while(i!=16); getch(); pantalla(); } void elige(entero op) { switch(op) { case 1: alta(); break; case 2: baja (); break; case 3: cambio(); break; case 4: cons_uno(); break; case 5: cons_todos(); break; } }
Estructuras en C
void cambio(void) { textbackground (3); textcolor(13); clrscr(); printf("Dame clave : "); ren=wherey(); col=wherex(); cve=v_rango(1,15,col,ren); reg_alu.clave=0; for(i=0;i<35;i++){ reg_alu.descri[i]=' '; } for(i=0;i<3;i++) { reg_alu.calif[i]=0.0; reg_alu.prom=0.0; reg_alu.sexo=' '; } alumnos[cve]=reg_alu; prome=0; if(alumnos[cve].clave==cve) { } else { reg_alu.clave=cve; puts("\nDame nombre: "); scanf(" %[^\n]",reg_alu.descri); puts ("\nDame calificaciones: "); for (i=0;i<3;i++) { scanf("%f",®_alu.calif[i]); prome+=reg_alu.calif[i]; } reg_alu.prom=(prome/3.0); printf("\nSexo: "); scanf("%s",&resp); reg_alu.sexo=toupper(resp); printf("\nProcede a la alta? S/N "); resp=getche(); if(toupper(resp)=='S'){ alumnos[cve]=reg_alu; } } pantalla(); }
Estructuras en C
Cualquier duda, aclaracin o sugerencia ser bien recibida y me podrs contactar Va mail: paul_d.luffy@hotmail.com