En este video se enseña que son y el uso de las Estructuras de Estrucuturas y se realiza un ejemplo donde se gestiona la creacion de varias bibliotecas y varios libros a estas a su vez y su consulta.
Codigo con el que se Empieza el Ejercicio (pinchar en descargar enlace como o copiar y pegar a vuestro codigo:
https://www.dropbox.com/s/47vze1l24j66el8/Bloque%206.4.c?dl=0
Aqui teneis el PDF con las funciones mas importantes de String.h:
https://www.dropbox.com/s/zcjlmfq295uqxaa/String.pdf?dl=0
PDF con Ejercicios se pueden hacer del 26 al 29:
https://www.dropbox.com/s/ooponbywy7wlpv0/tema%204.-%20Tipos%20de%20Datos.pdf?dl=0
source
/*
Esta es mi version del programa, esta ligeramente mejorada y con casi las mismas instrucciones. Espero les sirva.
Bloque 06.04: Estructuras de estructuras y ejemplo de gestion de varias bibliotecas
Version por: Cesar Gamboa
Fecha de creacion: 10/11/18
*/
#include <stdio.h>
#include <string.h>
#define const_LongMax 50
//Prototipos de funciones
void func_vaciar_cadena();
void funcAgregaBiblioteca();
void funcAgregaLibro();
void funcConsultaLibro();
void funcCambiarCadena(char cCadena[const_LongMax]);
typedef struct{
char nombre_libro[const_LongMax];
char nombre_autor[const_LongMax];
int iLleno_libro;
}libro;
typedef struct{
char nombre_biblioteca[const_LongMax];
libro li[10]; // Se definen 10 libros maximo por biblioteca
int iLleno_biblioteca;
}biblioteca;
biblioteca bi[3]; //Se definen 3 bibliotecas que es una estructura dentro de una estructura
int main(){
system("color 0A"); //Fondo negro y letras verde claro
func_vaciar_cadena();
int iOpcion;
char cKey;
do{
do{
system("cls");
printf("n[ 1 ] Agregar una nueva biblioteca");
printf("n[ 2 ] Agregar un libro a una biblioteca");
printf("n[ 3 ] Consultar un libro");
printf("n[ 4 ] Terminarnn");
printf("nnSu opcion:");
scanf("%i",&iOpcion);
}while(iOpcion<1||iOpcion>4);
switch(iOpcion){
case 1:{
funcAgregaBiblioteca();
break;
}
case 2:{
funcAgregaLibro();
break;
}
case 3:{
funcConsultaLibro();
break;
}
case 4:{
system("cls");
printf("nMuchas gracias por usar nuestro software. ");
//system("pause");
return 0;
break;
}
}
}while(iOpcion!=4);
}
void func_vaciar_cadena(){
//Vacia las estructuras escribiendo 0 en el campo lleno de cada registro
int i,j;
for(i=0;i<3;i++){ //3 por que hay 3 bibliotecas
for(j=0;j<10;j++){ //10 por que hay 10 libros por cada biblioteca
bi[i].li[j].iLleno_libro=0;
}
}
}
void funcCambiarCadena(char cCadena[const_LongMax]){
int i;
for(i=0;i<const_LongMax;i++){
if(cCadena[i]=='n'){
cCadena[i]='