Bloque 6.4: Estructuras de Estructuras y Ejemplo de Gestion de varias Bibliotecas

Поділитися
Вставка
  • Опубліковано 15 гру 2024

КОМЕНТАРІ • 102

  • @jorgeb2789
    @jorgeb2789 7 років тому +17

    ¡Qué bonita es la informática..!

  • @motoralexandria
    @motoralexandria 8 років тому

    Ante todo una felicitación a los creadores de este canal. Me han ayudado a entender muchas cosas.
    En efecto, pude detectar un par de detalles, el primero cuando se llenan los libros no avisa eso es muy simple. La que realmente me puso a pensar es como solucionar el problema de añadir un libro cuando una biblioteca no existe, para ello solo condicione con
    for(j = 0; j < 1; j++){
    aux2 = bi[1].lleno_bi; // dentro de corchetes pongo 1 ya que basta con que una biblioteca este creada para que
    // se cumpla la condición
    }
    y todo el contenido de anadelib a partir del scanf lo condiciono con
    if(aux2 == 1){
    .
    .
    .
    }
    else{
    printf("Debes introducir primero una biblioteca.
    ");
    }
    automáticamente el vuelve a preguntar si deseas realizar si quieres otra operación.

  • @cucudrulo9471
    @cucudrulo9471 8 років тому +29

    de 400 000 personas que vieron el video 1 ya solo quedamos 12 500 en este XD que facil se rinde la gente, con lo bien explicado que esta

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  8 років тому +21

      Lo cierto es que la gente empieza con muchas ganas, pero lo van dejando poco a poco, una pena :(.

    • @alejoquinones9871
      @alejoquinones9871 7 років тому +1

      con esfuerzo he llegado hasta este video,gracias emilio

    • @alejo3771
      @alejo3771 7 років тому +3

      en realidad veo que poca gente continua el primer video miles de visitas y ahora menos yo me veré la serie entera pero me tomo mi tiempo para entender solo tengo 14 y aunque no es muy complicado por que tu lo explicas muy bien

    • @pedrogarciaferrera3671
      @pedrogarciaferrera3671 7 років тому

      Me vas a decir que ha sido fácil! Y más después del, por otro lado magistral, bloque 6.3! Aquí llegamos la vieja guardia.

    • @hernianbedac5804
      @hernianbedac5804 7 років тому

      tienes razon, lo que pasa es que debe haber algunos en videos anteriores que todavia no llegaron a este nivel. Es decir, uno empieza en el video 1(y continua aprendiendo) generando 1 visita; luego en el video 2 lo vio, genera otra visita, pero llego por ejemplo hasta el bloque 2 y mañana sigue el programa. en este caso la diferencia deberia ser menor.
      pd igual hay muchisimos que lo dejan.

  • @oscarvera9007
    @oscarvera9007 9 років тому +11

    Este vídeo violó por completo mi cerebro xD

  • @ClaudioBOsorio
    @ClaudioBOsorio 6 років тому

    Que buen video. Ojala nunca le pierdas las ganas ni el amor a lo que haces. Despues de tantos años ayudas a muchos. Siempre le doy Like a tus video por tus muy buenas explicaciones! Sea lo que sea que estas haciendo ahora - el que persevera triunfa- Mucha suerte y feliz 2019

  • @josesandoval5879
    @josesandoval5879 8 років тому

    De verdad gracias por realizar estos vídeos se que hace tiempo que los publicaste pero igual me son de utilidad, en este encontré un detalle que al correr el programa y es que si solo he añadido una biblioteca y decido agregar un libro me aparece un menú para elegir a que biblioteca agregarlo con los números 0,1,2 como opciones en 0 la biblioteca que agregue y las que están vacías sin nombre pero igual me permite agregar libros sin haber creado las bibliotecas y consultarlos. por eso se me ocurrió crear una condición en anadelib() en la parte del menú if(bi[i].lleno_bi==1){ ...} para que solo muestre las bibliotecas que se han creado. Excelentes vídeos (y)

  • @Juststudy-cc4ow
    @Juststudy-cc4ow 7 місяців тому

    bueno al ser basicamente un refrito del video anterior, logrte entender muchisimo mas de lo que habia entendido el video anterior, bastante bien estructurado el video aunque en si me gustaria que se explicara un poco mas los tipos de estructuras que se deben hacer en estos casos

  • @andreicharpentierquesada4530
    @andreicharpentierquesada4530 5 років тому +2

    Buen video aunque extenso bastante bien explicado, creo que la repeticion prolongada de como acceder a las bibliotecas me dejo bastante claro como utilizar estructuras anidadas, apesar de que no las uso para programar microcontroladores, en algun momento sera muy util.
    Dejo aqui mi codigo como buen samaritano por si a alguien le sirviese o lo desea comparar:
    #include
    #include
    #define N 50
    typedef struct{
    char nombre_lib[N];
    char autor[N];
    int lleno;
    }libro;
    typedef struct{
    char nombre_bi[N];
    libro lib[10];
    int lleno_bi;
    }biblioteca;
    biblioteca bi[3];
    void vacio();
    void cambio(char palabra[N]);
    void anadebi();
    void anadelib();
    void consulta();
    int main(){
    int op;
    char key;

    vacio();

    do{
    do{
    printf("\tElige una opcion a realizar
    ");
    printf("(1) Anadir una nueva biblioteca.
    ");
    printf("(2) Anadir un libro a una biblioteca.
    ");
    printf("(3) Consultar un libro.
    ");
    fflush(stdin);
    scanf("%i",&op);
    }while(op3);

    switch(op){
    case 1:
    anadebi();
    break;
    case 2:
    anadelib();
    break;
    case 3:
    consulta();
    break;
    }
    printf("Quieres realizar alguna otra operacion?");
    printf("
    \t\t");
    fflush(stdin);
    scanf("%c",&key);

    }while(key =='S' || key == 's');
    return 0;
    }
    void vacio(){
    int i, j;
    for(i=0 ; i

  • @joselunar
    @joselunar 9 років тому

    Buenas tardes, Emilio este curso me ha parecedio muy excelente, voy por este video y he aprovechado mucho las explicaciones, ya tenia algo de conocimiento en c pero esto me ha servido de mucho, he agregado algunas cosas a tu codigo y lo comprato para que me des tu opinion:
    //Realizar un programa para controlar varias bibliotecas usando estructuras dentro de estructuras
    #include
    #include
    #define N 50
    typedef struct{ // Tipo estructura para crear un libro nuevo
    char nombrelib[N];
    char autorlib[N];
    int liblleno;
    }libros;
    typedef struct{ // Tipo estructura para crear una estructura nueva
    char nombrebib[N];
    libros libro[10];
    int bibllena;
    }biblioteca;
    biblioteca bib[3]; //Función para crear las bibliotecas, en este caso 3
    //Prototipos de las funciones
    void vacio();
    void cambio(char texto[N]);
    void agbiblioteca();
    void aglibro();
    void agrega(int cont);
    void consulta();
    //Función principal
    int main(){
    int op;
    char key;
    vacio();
    do{
    do{
    system("cls");
    printf("** ** ** ** Menu Principal ** ** **
    ");
    printf("** **
    ");
    printf("** 1 Agregar una nueva biblioteca. **
    ");
    printf("** 2 Agregar un libro a una biblioteca **
    ");
    printf("** 3 Consultar un libro. **
    ");
    printf("** **
    ");
    printf("** ** ** ** Menu Principal ** ** **

    ");
    printf("Que operacion desea realizar: ");
    scanf("%i",&op);
    }while(op < 1 || op > 3);
    switch(op){
    case 1:{
    agbiblioteca();
    break;
    }
    case 2:{
    aglibro();
    break;
    }
    case 3:{
    consulta();
    break;
    }
    }
    printf("

    Quieres realizar alguna operacion mas? (S/N): ");
    fflush(stdin);
    scanf("%c",&key);
    }while(key == 'S' || key == 's');
    return 0;
    }
    //Función para inicializar las bibliotecas y los libros en cada una de ellas
    void vacio(){
    int i,j;
    for (i = 0; i < 3; i++){
    bib[i].bibllena=0;
    for (j = 0; j < 10; j++){
    bib[i].libro[i].liblleno=0;
    }
    }
    }
    //Función para cambias los
    por \0 en los string ingresasdos por teclado y recogidas on fgets
    void cambio(char texto[N]){
    int i;
    for (i = 0; i < N; i++){
    if (texto[i] == '
    '){
    texto[i] = '\0';
    }
    }
    }
    //Función para agregar bibliotecas
    void agbiblioteca(){
    int i,aux;
    aux=0;
    for (i=0;i

  • @adonaygutierrez7679
    @adonaygutierrez7679 4 роки тому

    Eres un crak, eres mi idolo, maquina, saludos desde El Slavador

  • @aitorhm9536
    @aitorhm9536 7 років тому +2

    Algunos habrán pensado que si el libro que se consulta o el autor no están en la biblioteca, ¿Qué pasa?
    Yo he utilizado un contador el la función consultar, cada vez que se encuentra un libro o un autor el contador aumenta. al final, si no hay libros o autores con ese nombre el contador será igual a cero (o a lo que sea) y con un if podemos mostrar por pantalla que no se ha encontrado nada.
    Gracias al creador de este contenido y saludos.
    FUNCIÓN CONSULTAR() :
    void consulta(){
    int op,i,j,aux,contador;
    char buscar[N];
    contador=0;
    do{
    printf("Que quieres buscar nombre del libro o nombre del autor
    ");
    printf("(1)Nombre Libro
    ");
    printf("(2)Nombre Autor
    ");
    scanf("%d",&op);
    }while(op2);
    switch(op){
    case 1:{
    printf("Introduce el nombre del libro:
    ");
    fflush(stdin);
    fgets(buscar,N,stdin);
    cambio(buscar);
    for(i=0;i

  • @elarcademan
    @elarcademan 9 років тому

    hola compañero quiero darte las gracias por este curso desde que empece a programar con javascript y php soy esclavo de mi ordenador XD en el curso
    de desarrollo de aplicaciones que hice nos dieron una ligera intro de C y el profesor
    afirmo que conprendiendo la logica y los conceptos basicos de programacion podriamos comprender cualquier lenguage de programacion buscando videos tutoriales o cursos como este que la verdad esta genial te as lucido me encanta C cuando acabe de ver tus videos practicare un tiempo y luego ire a por C++ para pasarme a java que es el que me interesa de verdad El curso que hice estaba enfocado al desarrollo y diseño de paginas web ya saves HTML CSS etc.. y bueno
    estoy haciendo una web pero la e detenido para salir de el navegador y pulir mas la parte de la programacion.. e tenido un problemilla en este ejemplo (ejercisio) y es que no me muestra el nombre de la biblioteca en los resultados te paso el codigo aver si lo encuentras el compilador no me da errores y se ejecuta perfectamente todo lo demas anterior mente usaba geany en linux pero ya estoy en dev c++ por que tube un problemilla con el depurador de geany muchas gracias por todo un saludo.

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  9 років тому +1

      EL ARCADEMAN Lo primero, en vez de estudiar C++ para luego pasarte a Java, hazlo al reves, primero Java (que aqui tienes el curso de iniciacion completo) y luego cuando comprendas los conceptos podras saltar a C++ que es mucho mas complejo si quieres.
      Sobre tu error en el codigo, pasale el depurador, si el problema no es de compilacion, depurador siempre.
      Un saludo.

    • @elarcademan
      @elarcademan 9 років тому

      muchas gracias necesitaba esa orientacion iba a buscar esa comparacion asi que lo mas probable es que empezace por java de todas formas me as ahorado mucho tiempo boy a depurara el programa y ver si doy con el fallo
      un saludo..

  • @elarcademan
    @elarcademan 9 років тому

    Eres un maquina esplicando muchas gracias tio

  • @alejandropereyra438
    @alejandropereyra438 5 років тому

    En el minuto 30:00 , no seria mejor generar una ruta de escape una vez que aux valga 0 en el primer ciclo for ya hacer que salga de ahi el programa??

  • @elarcademan
    @elarcademan 9 років тому

    hola amigo creias que abia abandonado jejeje nooo es que e estado ocupado con
    un prllecto de php que me encargaron continuo desde aqui pero pienso repasar todos los ideos nuevamente un saludo

  • @pablito5807
    @pablito5807 10 років тому +2

    explicas muy muy bien

  • @angelorellana111
    @angelorellana111 7 років тому

    una duda, si en vez de crear una ruta de escape utilizo break, habrá algún problema?

  • @fran90093
    @fran90093 7 років тому

    ¿la funcion vacio siempre vamos a tener que usarla cuando utilicemos vectores de estructuras y estructuras de estructuras?

  • @j.e.c.b5628
    @j.e.c.b5628 5 років тому

    Hola Emilio, en primer lugar enhorabuena por el curso. Te doy un 10!
    Tengo un par de preguntas que me surgen desde hace varios vídeos:
    ¿Existe alguna diferencia importante si uso la sentencia "break" para salir de un bucle en vez de usar una ruta de escape con una variable "aux"?
    Y otra:
    ¿Por qué introduces strings con fgets y usas cambio() en vez de scanf("%longitud[^
    ]", array)? ¿No es más sencillo?
    Espero tu respuesta!
    Muchas gracias por todo!

    • @melakugarciabonacho234
      @melakugarciabonacho234 5 років тому

      break solo se puede usar en el switch y usa fgets para poder llenar el array de caracteres y limitar el numero de caracteres que va a coger la funcion de la entrada estandar para evitar asi que escriba sobre posiciones de memoria que no se han reservado para el array. con scanf solo puedes meter los elementos 1 a 1 y es mucho mas tedioso.

    • @j.e.c.b5628
      @j.e.c.b5628 5 років тому

      @@melakugarciabonacho234 break solo en un switch? Por qué? Yo lo uso en bucles for y me va divinamente... Me gustaría saber el motivo, tal vez esté incurriendo en un error garrafal que desconozco. Y scanf con el formato que he dado antes: scanf("%longitud[^
      ]", array) donde pone longitud pones el numero de caracteres que coge la funcion de entrada, y con [^
      ] le estas indicando que siga cogiendo caracteres hasta encontrar un salto de linea, por lo tanto coge espacios.
      ¿?

  • @charly-ic2dd
    @charly-ic2dd 6 років тому

    una preg mas, para q sirve la ruta de escape en 12:08 porque a lo mejor quisiera poner mas bibliotecas y con la ruta de escape meto solo una y entonces el for como q estaria de mas pues solo haria un ciclo,no??

  • @cesargamboa13
    @cesargamboa13 6 років тому

    /*
    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
    #include
    #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("
    [ 1 ] Agregar una nueva biblioteca");
    printf("
    [ 2 ] Agregar un libro a una biblioteca");
    printf("
    [ 3 ] Consultar un libro");
    printf("
    [ 4 ] Terminar

    ");
    printf("

    Su opcion:");
    scanf("%i",&iOpcion);
    }while(iOpcion4);
    switch(iOpcion){
    case 1:{
    funcAgregaBiblioteca();
    break;
    }
    case 2:{
    funcAgregaLibro();
    break;
    }
    case 3:{
    funcConsultaLibro();
    break;
    }
    case 4:{
    system("cls");
    printf("
    Muchas 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

  • @FranXcoT
    @FranXcoT 8 років тому

    En la función consulta, se define aux = 1 para que "no quede en cero" y así no entre al if del otro ciclo for, pero justo antes del if, aux esta definida como una comparación que devuelve (-1, 0 ó 1), de modo que no hacía falta definirla en el anterior ciclo for puesto que no va a quedar siempre en cero.

  • @TukaPlay
    @TukaPlay 8 років тому

    Emilio, ayuda, pliss, cuando realizo la consulta de la biblioteca que ingrese y el libro que ingrese, buscando por nombre del libro o autor no me sale el nombre de la biblioteca :(
    #include
    #include
    #define N 50
    typedef struct{
    char nombre_lib[N];
    char autor[N];
    int lleno_lib;
    }libro;
    typedef struct{
    char nombre_bi[N];
    libro lib[10];
    int lleno_bi;
    }biblioteca;
    biblioteca bi[3];
    void vacio();
    void cambio(char palabra[N]);
    void anadebi();
    void anadelib();
    void consulta();
    int main (){
    int op;
    char key;
    vacio();
    system ("cls");
    do{
    do{
    printf ("

    Elije que deseas hacer:

    ");
    printf (" (1) Anadir una nueva biblioteca.
    ");
    printf (" (2) Anadir un libro a una biblioteca.
    ");
    printf (" (3) Consultar un libro.
    ");
    printf ("
    Opcion: ");
    scanf ("%i",&op);
    }while (op < 1 || op > 3);
    switch (op){
    case 1: {
    anadebi ();
    break;
    }
    case 2:{
    anadelib();
    break;
    }
    case 3:{
    consulta();
    break;
    }
    }
    printf ("
    Introduce si deseas realizar otra operacion: (S/N) ");
    fflush (stdin);
    scanf ("%c",&key);
    system ("cls");
    }while (key == 'S' || key == 's' );
    system ("pause");
    return 0;
    }
    void vacio(){
    int i,j;
    for (i = 0; i < 3 ; i++){
    bi[i].lleno_bi = 0;
    for(j = 0; j < 3; j++){
    bi[i].lib[j].lleno_lib = 0;
    }
    }
    }
    void cambio(char palabra[N]){
    int i;
    for (i = 0; i < N; i++){
    if (palabra[i] == '
    '){
    palabra[i] = '\0';
    }
    }
    }
    void anadebi(){
    int i, aux;
    aux = 0;
    for (i = 0; i < 3 && aux == 0; i++){
    if (bi[i].lleno_bi == 0){
    printf ("
    Introduce un nombre para la biblioteca: ");
    fflush (stdin);
    fgets (bi[i].nombre_bi, N, stdin);
    cambio(bi[i].nombre_bi);
    bi[i].lleno_bi = 1;
    aux = 1;
    }
    }
    if (aux == 0){
    printf ("

    No queda ningun hueco libre para una nueva biblioteca.
    ");
    }
    }
    void anadelib (){
    int i, op, aux;
    aux = 0;
    for (i = 0; i < 3 && aux == 0; i++){
    if (bi[i].lleno_bi == 1){
    printf ("
    (%i) %s.", i+1, bi[i].nombre_bi);
    }
    }
    printf ("

    Opcion: ");
    scanf ("%i",&op);
    for (i = 0; i < 10 && aux == 0; i++){
    if (bi[op].lib[i].lleno_lib == 0){
    printf ("
    Introduce el nombre del libro: ");
    fflush (stdin);
    fgets (bi[op].lib[i].nombre_lib, N, stdin);
    cambio(bi[op].lib[i].nombre_lib);
    printf ("
    Introduce el nombre del autor: ");
    fflush (stdin);
    fgets (bi[op].lib[i].autor, N, stdin);
    cambio(bi[op].lib[i].autor);
    bi[op].lib[i].lleno_lib = 1;
    aux = 1;
    }
    }
    }
    void consulta (){
    int i, j, op, aux;
    char buscar[N];
    aux = 1;
    do{
    printf (" Buscar:

    ");
    printf (" (1) Nombre del Libro
    ");
    printf (" (2) Nombre del Autor
    ");
    printf ("
    Opcion: ");
    scanf ("%i",&op);
    }while (op < 1 || op > 2);
    switch (op){
    case 1: {
    printf ("
    Introduce el nombre del libro: ");
    fflush (stdin);
    fgets (buscar, N, stdin);
    cambio(buscar);
    for (i = 0; i < 3 ; i++){
    aux == 1;
    for (j = 0; j < 10 ; j++){
    aux = strcmp (buscar, bi[i].lib[j].nombre_lib);
    if (aux == 0){
    printf ("

    El libro %s se encuentra en la biblioteca %s .
    ", buscar, bi[i].nombre_bi);
    printf (" El autor del libro es %s.

    ",bi[i].lib[j].autor);
    }
    }
    }
    break;
    }
    case 2: {
    printf ("
    Introduce el nombre del autor: ");
    fflush (stdin);
    fgets (buscar, N, stdin);
    cambio(buscar);
    for (i = 0; i < 3 ; i++){
    aux == 1;
    for (j = 0; j < 10 ; j++){
    aux = strcmp (buscar, bi[i].lib[j].autor);
    if (aux == 0){
    printf ("

    El libro del autor %s se llama %s
    y esta en la biblioteca %s .
    ", buscar, bi[i].lib[j].nombre_lib, bi[i].nombre_bi);
    }
    }
    }
    break;
    }
    }
    }

  • @agustinlyon8173
    @agustinlyon8173 3 роки тому

    Excelente video, esto parece tal cual un proyecto de programación que pondrían en mi universidad jeje

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  3 роки тому +3

      Son ejercicios de primero de mi universidad xD, asi que no vas muy desencaminado.

    • @agustinlyon8173
      @agustinlyon8173 3 роки тому

      @@EmpiezaAProgramar Muchas gracias por tus videos , de verdad me estan sirviendo mucho, me ha tocado repetir desgraciadamente la materia de Algoritmos Y Programación 2 por el tema de la memoria dinamica , listas enlazadas y eso... pero contigo esta vez me siento mejor encaminado para aprobar ya que estoy puliendo las bases

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  3 роки тому +1

      ​@@agustinlyon8173 Me alegro. Ahora mismo estoy haciendo videos de listas enlazadas en Java y tengo ya hechos de pilas enlazadas y otros tipos de pilas, vamos es una lista de estructuras de datos, te lo pongo aqui por si te interesa: ua-cam.com/play/PLw8RQJQ8K1yTwy6YBA6pHTrpaLzhDUvWI.html

    • @agustinlyon8173
      @agustinlyon8173 3 роки тому

      @@EmpiezaAProgramar Excelente gracias !! Solo hay una cosa y es que en la materia solo vemos C como lenguaje de programación xD :( . Java lo veo es después de esta materia para ver lo que es POO básicamente . Pero igual seguramente los veré llegado el momento , gracias de nuevo por tus aportes 👍🏻🙌🏻

  • @axelcolamarino2768
    @axelcolamarino2768 3 роки тому

    La verdad que excelente el contenido, solo quería preguntar algo, no entiendo muy bien para que sirve que hagas un bucle for y después le pongas una ruta de escape con aux=0 si después de usar una sola vez el bucle se cambia a aux=1 para salir, es decir, mi duda es porque utilizar un bucle for si solo se hará una repetición?

  • @charly-ic2dd
    @charly-ic2dd 6 років тому

    para no usar la funcion cambio no puedes cambiar la funcion fgets por otra?? como gets??

  • @Cecilneff
    @Cecilneff 8 років тому

    Una pregunta y si por ejemplo quisieras borrar un libro, como se podria realizar, un libro o un item entero del struct. Muchisimas gracias por tus videos

  • @ogrordg
    @ogrordg 9 років тому

    Hola, en primera medida queria agradecerte lo bien que explicas y la onda que le pones, segui asi. En segundo lugar va la consulta jeje. En el momento de comparar los array de string discrimina la mayusculas de las minusculas; por ejemplo al cargar el nombre del libro El nombre del viento y luego buscamos el nombre del viento. no lo encuentra ¿hay manera de preever esto? o una solucion. Gracias.

  • @pablito5807
    @pablito5807 10 років тому +1

    emilio eres idolo

  • @luis3664
    @luis3664 8 років тому

    Hola tengo un problema... ejecuto el problema y da error, y hago depuracion y corre normal, cual sera el problema?

  • @portichuelo2
    @portichuelo2 6 років тому

    Me sale el programa, pero cuando le doy a la opción 2, la primera vez no sale nada, me hace un salto de línea y no se ejecuta, tengo que volver a poner nuevamente la opción 2 y a la segunda si me sale, ¿por qué?

  • @javierrioortega6234
    @javierrioortega6234 9 років тому

    Tengo una pregunta, por qué en la función añadelib solo introduces una variable ( i ) para recorrer las bibliotecas y los libros con los bucles for, y en la función consulta introduces dos variables ( i , j ), que es lo que yo creo que es lo correcto

    • @FranXcoT
      @FranXcoT 8 років тому

      +Javier Rio Ortega En añadelib no se utilizan dos variables porque sólo se recorren los libros, el numero de la biblioteca en donde se quiere añadir un libro es ingresado por teclado, por lo que no es necesario recorrer las 3. En consulta si se recorren las tres bibliotecas y a su vez los libros de cada una, por eso hacen falta dos variables, una para las bibliotecas y una para los libros :)

  • @atrodennfifa6231
    @atrodennfifa6231 4 роки тому

    Hola, como estas? No se seguiras atendiendo esto pero tengo un unico problema al compilar. Me dice "undefined reference to WinMain" en una linea en la cual no hay nada. Que puede ser?. Muchisimas gracias por los videos!

  • @carlosven2409
    @carlosven2409 7 років тому

    Tengo una pregunta, cuando llego a 3 bibliotecas y quiero añadir otra, me tira el printf pero despues me saca del programa automaticamente ¿Por que ?

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  7 років тому

      Utiliza el depurador y si no te funciona, utiliza otro IDE como Codeblocks.
      Un saludo.

    • @hernianbedac5804
      @hernianbedac5804 7 років тому

      hola emilio, yo tengo un problema con el depurador, segui todos tus pasos que diste (creo que era a eso del bloque 5 o 4) y añado los vigilantes, esto lo otro y cuando le doy para depurar me dice que tengo que ejecutar el programa, hasta ahi todo correcto... ejecuto el programa y se me crashea, me dice que dejo de responder, y cuando pongo aceptar se me cierra el dev-c++. si tienes alguna idea de que es lo que causa esto lo agradecería. PD ya probre haciendo eso que ponias la linea de codigo en rojo y aun asi no funciona.
      espero tu respuesta,
      saludos.

  • @alexiscabvb
    @alexiscabvb 4 роки тому

    Tremendo

  • @juancarlosrelloso1302
    @juancarlosrelloso1302 3 роки тому

    Hola el código da error en la linea 52 y ademas está incompleto, podrías pasar el código completo. Muchas gracias

    • @agustinlyon8173
      @agustinlyon8173 3 роки тому

      A mi no me da error, que es lo que te sale?

  • @Nicostoc
    @Nicostoc 9 років тому +3

    Si apruebo te lo dedico ;)

  • @alejoquinones9871
    @alejoquinones9871 7 років тому

    ¿como puedo depurar en codeblocks?

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  7 років тому +3

      Recuerda lo que digo en el video 1.1.1, no preguntes por otros IDEs.
      Un saludo.

  • @Guille5381
    @Guille5381 9 років тому

    por que no usar la instrucción break simplemente para salir del bucle ?

    • @gerardocencia
      @gerardocencia 8 років тому

      +Guille5381 los break "rompen" con el concepto de programación estructurada, digamos que es más recomendable usar variables de control. Además, si usas el brake es más complicado después saber por qué salió

  • @chavakseya
    @chavakseya 9 років тому

    buen video aun ue en partes me perdi y tenia que regresar el video ya que es un programa mas conplejo

  • @agusratto7436
    @agusratto7436 9 років тому

    una pregunta, al usar la letra ñ el compilador me tira error, por que me sucede esto ??
    desde ya gracias

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  9 років тому +2

      +agus ratto Por qué crees tu?

    • @Alan-fu2vx
      @Alan-fu2vx 9 років тому

      +Empieza A Programar aaayy lmao

    • @carlossantaella139
      @carlossantaella139 8 років тому

      +Empieza A Programar jajajaj no tienes pasiencia para explicar a quien tiene alguna duda si no la explicas es xq nos mandas a ir a los videos anteriores

    • @Alan-fu2vx
      @Alan-fu2vx 8 років тому

      Carlos Santaella No tiene sentido explicar una duda que se despeja con (literalmente) 0.34 segundos buscando en Google...
      Ademas, tampoco hay que quedarse con una sola fuente, cualquier programador decente VIVE consultando paginas web como stackexchange, APIs, etc...

    • @carlossantaella139
      @carlossantaella139 8 років тому

      mmm no sabia que existian esas pags

  • @charly-ic2dd
    @charly-ic2dd 6 років тому

    y en 13:20 si aux== 0 seria xq no he ingresado nunca nada con fgets y por lo tanto SI tendria los huecos libres, no entiendo xq dices lo contrario..

  • @jeancmarte
    @jeancmarte 9 років тому

    Hola amigo, soy estudiante de ingenieria en sistemas y tengo una tarea muy parecida a este algoritmo, para mi seria de gran ayuda que me dijeras como puedo agregar el mismo libro en varias bibliotecas? cuando inserto el mismo libro en distintas bibliotecas al momento de buscar el libro me dice que no esta en la biblioteca. Gracias de ante mano

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  9 років тому +1

      Jean Carlos Marte Gomez Para aprender a hacerlo todo por ti mismo estan tooooodos los videos.
      Un saludo.

    • @hernianbedac5804
      @hernianbedac5804 7 років тому

      fijate que este codigo esta mejor hecho, cuando buscas un libro o autor te da lo que es referido a ese libro o autor, si encuentra 2 libros con el mismo nombre o mismo autor te los imprime(tambien funciona si estan en dif bibliotecas).
      //Bloque 6.4: Estructuras de Estructuras y Ejemplo de Gestion de varias Bibliotecas
      #include
      #include
      #define N 50
      typedef struct{
      char nombre_lib[N];
      char autor[N];
      int lleno_lib;
      }libro;
      typedef struct{
      char nombre_bi[N];
      libro lib[10];
      int lleno_bi;
      }biblioteca;
      biblioteca bi[3];
      void vacio();
      void cambio(char palabra[N]);
      void anadebi();
      void anadelib();
      void consulta ();
      void BuscarLibro();
      void BuscarAutor();
      int main(){
      int op;
      char key;
      vacio();
      do{
      do{
      printf("Elige una opcion a realizar:
      ");
      printf("(1) Anadir una nueva biblioteca.
      ");
      printf("(2) Anadir un libro a una biblioteca.
      ");
      printf("(3) Consultar un libro.
      ");
      scanf("%i",&op);
      }while(op3);
      switch(op){
      case 1:{
      anadebi();
      break;
      }
      case 2:{
      anadelib();
      break;
      }
      case 3:{
      consulta();
      break;
      }
      }
      system("pause");
      system("cls");
      printf("Quieres realizar alguna operacion mas? [S/N]: ");
      fflush(stdin);
      scanf("%c",&key);
      system("cls");
      }while(key=='S' || key =='s' || (key!= 'n' && key !='N'));
      system ("pause");
      return 0;
      }
      void vacio(){
      int i,j;
      for(i=0;i

  • @LionsLite
    @LionsLite 9 років тому

    Ademas el codigo asi simple como esta no es eficiente por que diferencia entre mayusculas y minusculas. y al hacer una busqueda si escribimos el nombre del libro o el autor sin mayusculas no lo encuentra o viceversa (dependiendo de como esta guardado el libro). en el pdf que el dejo el esta una funcion que nos ayuda a solucionar eso :3 me lei todo el pdf y me lo acuerdo xD desde hace 4 cap

    • @Alan-fu2vx
      @Alan-fu2vx 9 років тому +1

      +LionsLite Hahaha si, viste que bueno que esta terminar un ejercicio y pensar como podrías hacerlo más eficiente y/o entendible? :P

  • @MrManu896
    @MrManu896 10 років тому

    Hola, Emilio, te resultará muy tostón si te envió todo mi código? Le he dado mil vueltas, y no consigo ver el error... Al compilar, y poner el número 1, por ejemplo, me sale "Quieres realizar alguna operacion mas? (S/N)", pero tecleando 2 y 3, también falla. Ayuda! :(
    //Realizar un programa para controlar varias bibliotecas usando estructuras dentro de estructuras
    #include
    #include
    #define N 50
    typedef struct {
    char nombre_lib[N];
    char autor [N];
    int lleno_lib;
    }libro;
    typedef struct{
    char nombre_bi[N];
    libro lib[10];
    int lleno_bi;
    }biblioteca;
    biblioteca bi [3];
    void vacio();
    void cambio (char palabra [N]);
    void anadebi();
    void anadelib();
    void consulta();
    int main (){
    int op;
    char key;
    vacio();
    do{
    do{
    printf("Elige una opcion a realizar:
    ");
    printf("(1) Anadir una nueva biblioteca.
    ");
    printf("(2) Anadir un libro a una biblioteca.
    ");
    printf("(3) Consultar un libro.
    ");
    scanf("%i", &op);
    }while(op3);
    switch(op){
    case 1:{
    anadebi();
    break;}
    case 2:{
    anadelib();
    break;}
    case 3:{
    consulta();
    break;
    }
    }
    printf("
    -------------
    ");
    printf("Quieres realizar alguna operacion mas? (S/N):
    ");
    fflush(stdin);
    scanf("%c", &key);
    }while (key == 'S' || key == 's');
    system("pause");
    return 0;
    }
    void vacio(){
    int i, j;
    for(i=0; i

  • @EnBuenChileno24
    @EnBuenChileno24 4 роки тому +1

    Ahi esta el codigo sin agregar nada de mi parte:
    //Realizar un programa para controlar varia bibliotecas usando estructuras dentro de estructuras.
    #include
    #include
    #define N 50
    typedef struct{
    char nombre_lib[N];
    char autor[N];
    int lleno_lib;
    }libro;
    typedef struct{
    char nombre_bi[N];
    libro lib[10];
    int lleno_bi;
    }biblioteca;
    biblioteca bi[3];
    void vacio ();
    void cambio(char palabra[N]);
    void anadebi ();
    void anadelib();
    void consulta ();
    int main(){
    int op;
    char key;

    vacio();

    do{
    do{
    printf("Elige una opcion a realizar:
    ");
    printf("(1) Anadir una nueva biblioteca.
    ");
    printf("(2) Anadir un libro a tu coleccion.
    ");
    printf("(3) Consultar un libro.
    ");
    scanf("%i",&op);

    }while(op < 1 || op > 3);

    switch (op){
    case 1:{
    anadebi();
    break;
    }
    case 2:{
    anadelib();
    break;
    }
    case 3:{
    consulta();
    break;
    }

    }
    printf ("Deseas realizar otra operacion: (S/N)
    ");
    fflush (stdin);
    scanf("%c",&key);
    }while(key == 'S' || key == 's');

    system("pause");
    return 0;
    }
    void vacio (){//Nuestra variable lleno la pone a 0
    int i,j;

    for (i = 0; i < 3; i++){
    bi[i].lleno_bi = 0;
    for (j = 0; j < 10; j++){
    bi[i].lib[j].lleno_lib = 0;
    }
    }
    }
    void cambio (char palabra[N]){
    int i;
    for (i = 0; i < N; i++){
    if (palabra[i]== '
    '){
    palabra[i]= '\0';
    }
    }
    }
    void anadebi (){
    int i,aux;
    aux = 0;
    for (i = 0; i < 3 && aux == 0;i++){
    if (bi[i].lleno_bi == 0){
    printf ("Introduce un nombre para la biblioteca: ");
    fflush(stdin);
    fgets (bi[i].nombre_bi,N,stdin);
    cambio(bi[i].nombre_bi);

    bi[i].lleno_bi = 1;
    aux = 1;
    }
    }

    if (aux == 0){
    printf ("No queda ningun hueco libre para una nueva biblioteca.
    ");
    }
    }
    void anadelib(){
    int i,op,aux;
    aux = 0;

    for (i = 0;i < 3; i++){
    if (bi[i].lleno_bi == 1);
    printf("(%i) %s.
    ",i,bi[i].nombre_bi);
    }
    scanf("%i",&op);

    for(i = 0; i < 10 && aux == 0;i++){
    if (bi[op].lib[i].lleno_lib == 0){
    printf ("Introduce el nombre del libro: ");
    fflush(stdin);
    fgets(bi[op].lib[i].nombre_lib,N,stdin);
    cambio (bi[op].lib[i].nombre_lib);

    printf ("Introduce el nombre del autor: ");
    fflush(stdin);
    fgets(bi[op].lib[i].autor,N,stdin);
    cambio (bi[op].lib[i].autor);

    bi[op].lib[i].lleno_lib = 1;
    aux = 1;
    }
    }
    }
    void consulta (){
    int i,j,op,aux;
    char buscar[N];
    aux = 1;

    do{
    printf ("Que quieres buscar, nombre libro o nombre autor:
    ");
    printf ("(1)Nombre libro.
    ");
    printf ("(2)Nombre autor.
    ");
    scanf ("%i",&op);
    }while(op < 1 || op > 2);

    switch(op){
    case 1: {
    printf("Introduce el nombre del libro: ");
    fflush(stdin);
    fgets(buscar, N, stdin);
    cambio(buscar);

    for (i = 0; i < 3; i++){
    aux = 1;
    for(j = 0;j < 10; j++){
    aux = strcmp(buscar,bi[i].lib[j].nombre_lib);
    if (aux == 0 ){
    printf ("El libro %s se encuentra en la biblioteca %s.
    ",buscar,bi[i].nombre_bi);
    printf ("El autor del libro es %s.
    ",bi[i].lib[j].autor);
    }
    }
    }
    break;
    }
    case 2:{
    printf("Introduce el nombre del autor: ");
    fflush(stdin);
    fgets(buscar, N, stdin);
    cambio(buscar);

    for (i = 0; i < 3; i++){
    aux = 1;
    for(j = 0;j < 10; j++){
    aux = strcmp(buscar,bi[i].lib[j].autor);
    if (aux == 0 ){
    printf ("El libro %s se encuentra en la biblioteca %s.
    ",bi[i].lib[j].nombre_lib,bi[i].nombre_bi);

    }
    }
    }
    break;
    }
    }
    }

  • @xadrianc
    @xadrianc 8 років тому

    Hola!
    lo primero muchas gracias por el vídeo.
    he copiado el código tal cual intentando hacerlo por mi parte y revisando unas cuantas veces y creo que lo tengo idéntico a ti pero aún así cuando ejecuto el programa y después de haber añadido libros y bibliotecas cuando intento buscar realiza la búsqueda me imprime el resultado pero se cierra la consola con un error de windows... podríais ayudarme de alguna manera?

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  8 років тому

      depurador y veras donde esta el error.

    • @xadrianc
      @xadrianc 8 років тому

      +Empieza A Programar
      creo que esta después del bucle de búsqueda pero no me lo explico...
      se cierra igual que cuando falta un aspersan

  • @javiercatalan4238
    @javiercatalan4238 9 років тому

    Me da un error, no se cual es
    //Realizar un programa para controlar varias bibliotecas usando estructuras dentro de las estructuras.
    #include
    #include
    #define N 50
    typedef struct {
    char nombre_lib[N];
    char autor[N];
    int lleno_lib;
    }libro;
    typedef struct {
    char nombre_bi[N];
    libro lib[10];
    int lleno_bi;
    }biblioteca;
    biblioteca bi[3];
    void vacio ();
    void cambio (char palabra[N]);
    void anadebi ();
    void anadelib ();
    int main (){
    int op;
    char key;
    vacio ();
    do {
    do{
    printf ("Elige una opcion a realizar:
    ");
    printf ("(1) Añadir una nueva biblioteca.
    ");
    printf ("(2) Añadir un libro a una biblioteca.
    ");
    printf ("(3) Consultar un libro.
    ");
    scanf ("%i",&op);
    }while (op < 1 || op > 3);
    switch (op) {
    case 1: {
    anadebi ();
    break;
    }
    case 2: {
    anadelib ();
    break;
    }
    case 3: {
    consulta ();
    break;
    }
    }
    printf ("Quieres realizar alguna operacion mas? (S/N): ");
    fflush (stdin);
    scanf ("%c",&key);
    }while (key == 's' || key == 's');
    system ("pause");
    return 0;
    }
    void vacio () {
    int i, j;
    for (i = 0; i < 3; i++) {
    bi[i].lleno_bi = 0;
    for (j = 0; j < 10; j++) {
    bi[i].lib[j].lleno_lib = 0;
    }
    }
    }
    void cambio (char palabra[N]) {
    int i;
    for (i = 0; i < N; i++) {
    if (palabra[i] == '
    ') {
    palabra[i] = '\0';
    }
    }
    }
    void anadebi () {
    int i, aux;
    aux = 0;
    for (i = 0; i < 3 && aux == 0; i++) {
    if (bi[i].lleno_bi == 0) {
    printf ("Introduce un nombre para la biblioteca: ");
    fflush (stdin);
    fgets (bi[i].nombre_bi, N, stdin);
    cambio (bi[i].nombre_bi);
    bi[i].lleno_bo = 1;
    aux = 1;
    }
    }
    if (aux == 0) {
    printf ("No queda ningun hueco libre para nueva biblioteca.
    ");
    }
    }
    void anadelib () {
    int i, op, aux;
    aux = 0;
    for (i = 0; i < 3; i++) {
    if (bi[i].lleno_bi == 1) {
    printf ("(%i) %s.
    ",i, bi[i].nombre_bi);
    }
    }
    scanf ("%i",&op);
    for (i = 0; i < 10 && aux == 0; i++) {
    if (bi[op].lib[i].lleno_lib == 0) {
    printf ("Introduce el nombre del libro: ");
    fflush (stdin);
    fgets (bi[op].lib[i].nombre_lib, N, stdin);
    cambio (bi[op].lib[i].nombre_lib);
    printf ("Introduce el nombre del autor: ");
    fflush (stdin);
    fgets (bi[op].lib[i].autor, N, stdin);
    cambio (bi[op].lib[i].autor);
    bi[op].lib[i].lleno_lib = 1;
    aux = 1;
    }
    }
    }
    void consulta () {
    int op, i, j, aux;
    char buscar[N];
    aux = 1;
    do {
    printf ("Que quieres buscar, nombre libro o nombre autor:
    ");
    printf ("(1) Nombre Libro.
    ");
    printf ("(2) Nombre Autor.
    ");
    scanf ("%i",&op);
    }while (op < 1 || op > 2);
    switch (op) {
    case 1: {
    printf ("Introduce el nombre del Libro: ");
    fflush (stdin);
    fgets (buscar, N, stdin);
    cambio (buscar);
    for (i = 0; i < 3; i++) {
    aux = 1;
    for (j = 0; i < 10; j++) {
    aux = strcmp (buscar, bi[i).lib[j].nombre_lib);
    if (aux == 0) {
    printf ("El libro %s se encuentra en la biblioteca %s.
    ",buscar, bi[i].nombre_bi);
    printf ("El autor del libro es %s.
    ",bi[i].lib[j].autor);
    }
    }
    }
    break;
    }
    case 2: {
    printf ("Introduce el nombre del Libro: ");
    fflush (stdin);
    fgets (buscar, N, stdin);
    cambio (buscar);
    for (i = 0; i < 3; i++) {
    aux = 1;
    for (j = 0; i < 10; j++) {
    aux = strcmp (buscar, bi[i).lib[j].autor);
    if (aux == 0) {
    printf ("El libro %s se encuentra en la biblioteca %s.
    ",bi[i].lib[j].nombre_lib, bi[i].nombre_bi);
    printf ("El autor del libro es %s.
    ",bi[i].lib[j].autor);
    }
    }
    }
    break;
    }
    }
    }

  • @UnluckyRos
    @UnluckyRos 10 років тому +2

    Después de este pedazo de vídeo no entiendo como solo hay 3 me gusta xD

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  10 років тому +5

      Hola! Muchas gracias por tus palabras, la verdad, es que es complicado que la gente le de a "me gusta", pero bueno, todo sea eso!
      Si te ha gustado este video, ya veras los que vienen mas adelante, en uno hice un sistema de batallas, muy rudimentario, pero que si se amplia se puede aplicar a algun juego :D y en Java tengo en mente muchas mas cosas, pero acepto ideas!
      Un saludo.

    • @UnluckyRos
      @UnluckyRos 10 років тому +3

      A ese vídeo me tocará llegar en no mucho creo, a mi me gustaría avanzar algo más con las IA, que supongo que son comerse un poquito más la cabeza que con la IA de tu vídeo del tres en raya(que planeo intentar mejorar por mi cuenta) jaja aunque la IA entre en el nivel medio de c o en programación orientada a objetos(no se donde va exactamente), planeo mirarme todo sobre c, java, c++ y programación orientada a objetos por ahora.
      En cuanto pueda te dejaré una donación aunque tal vez ya a finales de verano que tengo planeado un viaje xD
      Y si impartes clases online y tengo dinero me tendrás de alumno, no lo dudes!
      Un saludo!

  • @elarcademan
    @elarcademan 9 років тому +1

    #include
    #include
    #define N 50
    typedef struct{
    char nombre_lib[N];
    char autor[N];
    int lleno_lib;
    }libro;
    typedef struct{
    char nombre_bi[N];
    libro lib[10];
    int lleno_bi;
    }biblioteca;
    void vacio();
    void anadebib();
    void anadelib();
    void consulta();
    void cambio(char palabra[N]);
    biblioteca bi[3];
    int main(){
    int op;
    char key;
    vacio();
    do{
    do{
    printf("--------------------------------------------------------
    ");
    printf("************* BIENVENIDOS ************
    ");
    printf("--------------------------------------------------------

    ");
    printf("(1) Anadir una nueva biblioteca.
    ");
    printf("(2) Anadir un libro a una biblioteca.
    ");
    printf("(3) Consultar un libro.
    ");
    scanf("%d", &op);
    }while(op < 1 || op > 3);

    switch(op){
    case 1: anadebib(); break;
    case 2: anadelib(); break;
    case 3: consulta(); break;
    }
    printf("Desea hacer otra operacion?... (S/N)
    ");
    fflush(stdin);
    scanf("%c", &key);
    }while(key == 's' || key == 'S');

    system("pause");
    return 0;
    }
    void vacio(){
    int i, j;
    for(i = 0; i < 3; i++){
    bi[i].lleno_bi = 0;
    for(j = 0; j < 10; j++){
    bi[i].lib[j].lleno_lib = 0;
    }
    }
    }
    void anadebib(){
    int i, aux;
    aux = 0;
    for(i = 0; i < 3 && aux == 0; i++){
    if(bi[i].lleno_bi == 0){
    printf("Introduzca un nombre para la biblioteca.
    ");
    fflush(stdin);
    fgets(bi[i].nombre_bi, N, stdin);
    cambio(bi[i].nombre_bi);

    bi[i].lleno_bi = 1;
    aux = 1;
    }
    }if(aux == 0){
    printf("No queda ningun espacio libre.
    ");
    }
    }
    void anadelib(){
    int i, op, aux;
    aux = 0;
    for(i = 0; i < 3; i++){
    if(bi[i].lleno_bi == 1){
    printf("(%d) %s.
    ", i+1,bi[i].nombre_bi);
    }
    }scanf("%d", &op);

    for(i = 0; i < 10 && aux == 0; i++){
    if(bi[op].lib[i].lleno_lib == 0){
    printf("Introduzca el nombre del libro: ");
    fflush(stdin);
    fgets(bi[op].lib[i].nombre_lib, N, stdin);
    cambio(bi[op].lib[i].nombre_lib);

    printf("Introduzca el autor del libro: ");
    fflush(stdin);
    fgets(bi[op].lib[i].autor, N, stdin);
    cambio(bi[op].lib[i].autor);

    bi[op].lib[i].lleno_lib = 1;
    aux = 1;
    }
    }
    }
    void consulta(){
    int op, i, j, aux;
    char buscar[N];
    aux = 1;

    do{
    printf("------------------------------------
    ");
    printf("******** BUSCAR ********
    ");
    printf("-----------------------------------

    ");

    printf("(1) Buscar nombre de libro.
    ");
    printf("(2) Buscar nombre de autor.
    ");
    scanf("%d", &op);
    }while(op < 1 || op > 2);

    switch(op){
    case 1:{
    printf("Introduzca el nombre del libro: ");
    fflush(stdin);
    fgets(buscar, N, stdin);
    cambio(buscar);

    for(i = 0; i < 3; i++){
    aux = 1;
    for(j = 0; j < 10; j++){
    aux = strcmp(buscar, bi[i].lib[j].nombre_lib);
    if(aux == 0){
    printf("El libro %s se encuentra en la biblioteca %s.
    ", buscar, bi[i].nombre_bi);
    printf("el autor del libro es %s.
    ", bi[i].lib[j].autor);
    }
    }
    }
    break;
    }
    case 2:{
    printf("Introduzca el nombre del autor: ");
    fflush(stdin);
    fgets(buscar, N, stdin);
    cambio(buscar);

    for(i = 0; i < 3; i++){
    aux = 1;
    for(j = 0; j < 10; j++){
    aux = strcmp(buscar, bi[i].lib[j].autor);
    if(aux == 0){
    printf("El libro %s
    se encuentra en la biblioteca %s.
    ", bi[i].lib[j].nombre_lib, bi[i].nombre_bi);
    }
    }
    }
    break;
    }
    }
    }
    void cambio(char palabra[N]){
    int i;
    for(i = 0; i < N; i++){
    if(palabra[i] == '
    '){
    palabra[i] = '\0';
    }
    }
    }

  • @carlossantaella139
    @carlossantaella139 8 років тому

    que locura!! jajaja

  • @Facuatolosa
    @Facuatolosa 8 років тому

    Antes que nada muchas gracias por el video; si alguien ve este comentario me gustaría que me dijesen cual es el error en mi código ya que lo he copiado tal cual y me arroja los siguientes errores:
    - Linea 93. [Warning] passing argument 1 of 'fgets' makes pointer from integer without a cast.
    - Linea 94. [Note] expected 'char * __restrict__' but argument is of type 'int'.
    - Linea 76. [Note] expected 'char *' but argument is of type 'int'.
    CÓDIGO EN C.
    #include
    #include
    #include
    #define N 50
    typedef struct {
    char nombre_lib[N];
    char autor[N];
    int lleno_lib;
    } libro;
    typedef struct {
    char nombre_bi[N];
    libro lib[10];
    int lleno_bi;
    } biblioteca;
    biblioteca bi[3];
    void vacio();
    void cambio(char palabra[N]);
    void anadebi();
    void anadelib();
    void consulta();
    int main(){
    int op;
    char key;
    vacio();
    do{
    do{
    printf("Elige una opcion a realizar:
    ");
    printf("(1) Añadir una nueva biblioteca.
    ");
    printf("(2) Añadir un libro a una biblioteca.
    ");
    printf("(3) Consultar un libro.
    ");
    scanf("%i",&op);
    }while(op < 1 || op > 3);
    switch(op){
    case 1:{
    anadebi();
    break;
    }
    case 2:{
    anadelib();
    break;
    }
    case 3:{
    consulta();
    break;
    }
    }
    printf("Quieres realizar alguna operacion mas? (S/N): ");
    fflush(stdin);
    scanf("%c",&key);
    }while(key == 'S' || key == 's');
    system ("pause");
    return 0;
    }
    void vacio(){
    int i,j;
    for (i = 0; i < 3; i++){
    bi[i].lleno_bi = 0;
    for (j = 0; j < 10; j++){
    bi[i].lib[j].lleno_lib = 0;
    }
    }
    }
    void cambio(char palabra[N]){
    int i;
    for (i = 0; i < N; i++){
    if (palabra[i] == '
    '){
    palabra[i] = '\0';
    }
    }
    }
    void anadebi(){
    int i, aux=0;
    for (i=0 ; i

  • @egg9880
    @egg9880 5 років тому

    Con opc 1, introducidos tres nombres a la biblioteca, al intentar la 4 da el mensaje pero falla y sale.
    Si alguien ve el fallo, que avise pf. Gracias
    #include
    #include
    #define N 50
    typedef struct{
    char nombre_lib[N];
    char autor[N];
    int lleno_lib;
    }libro;
    typedef struct{
    char nombre_bi[N];
    libro lib[10];
    int lleno_bi;
    }biblioteca;
    biblioteca bi[2];
    void vacio ();
    void cambio(char palabra[N]);
    void anadebi();
    //void anadelib();
    //void consulta();
    int main (){
    int op;
    char key;
    vacio();
    do{
    do{
    printf ("Elige que deseas hacer->
    ");
    printf ("(1) Anadir nueva biblioteca
    ");
    printf ("(2) Anadir un libro a una biblioteca
    ");
    printf ("(3) Consultar un libro
    ");
    scanf("%i", &op);
    }while (op < 1 || op > 2);
    switch (op){
    case 1:
    anadebi();
    break;
    case 2:
    //anadelib();
    break;
    case 3:
    //consulta();
    break;
    }
    printf ("Deseas realizar otra operacion? (S/N) "); /*Este mensaje sale bien, pero luego
    salta a system("pause") No espera la entrada de S ó s*/
    scanf("%c", &key);
    }while(key == 'S' || key == 's');
    system ("pause");
    return 0;
    }
    void vacio (){
    int i, j;
    for (i = 0; i < 2; i++){
    bi[i].lleno_bi = 0;
    for (j = 0; j < 10; j++){
    bi[i].lib[j].lleno_lib = 0;
    }
    }
    }
    void cambio(char palabra[N]){
    int i;
    for (i =0; i < N; i++){
    if (palabra[i] == '
    '){
    palabra[i] = '\0';
    }
    }
    }
    void anadebi(){
    int i, aux;
    aux = 0;
    for (i = 0; i < 2 && aux == 0; i++){
    if (bi[i].lleno_bi == 0){
    printf ("Introduce un nombre para la biblioteca ");
    fflush(stdin);
    fgets(bi[i].nombre_bi, N, stdin);
    cambio(bi[i].nombre_bi);
    bi[i].lleno_bi = 1;
    aux = 1;
    }
    }
    if (aux == 0){
    printf("No queda hueco libre para nueva biblioteca
    ");
    }
    }

  • @robertoccg1
    @robertoccg1 8 років тому

    +Empieza a Programar no he podido solucionar este ejercicio:
    /*27.- Se dispone de la información relativa a 100 estaciones meteorológicas diferentes
    repartidas por una determinada área geográfica. Conocemos el nombre de las estaciones y
    la cantidad de lluvia en litros/m2 que recogieron durante el año pasado en cada uno de los
    12 meses. Implementa la estructura adecuada para almacenar dicha información. Realiza
    las funciones necesarias para determinar en qué punto llovió más y en cual menos y la
    cantidad media de agua recogida en las estaciones meteorológicas durante cada mes*/
    Todo esta perfecto pero me trabo cuando tengo que realizar el promedio para saber donde llovio mas, cosa obvia parece pero me trabe espero alguien me ayude

  • @andresmonje6865
    @andresmonje6865 7 років тому +1

    Joder me acabo de dar cuenta que eres de mi misma universidad ajajaj. Encontraste trabajo?

  • @luischamo360
    @luischamo360 7 років тому

    Hola buenas tengo un problema, al momento de ejecutar y cuando se abre la consola, se queda un rato pensando y despues dice que el archivo .exe a dejado de funcionar.
    Aqui les dejo mi codigo:
    //Realizar un pograma para controlar varias bibliotecas usando estructuras dentro de estructuras
    #include
    #include
    #define N 50
    typedef struct{
    char nombre_lib[N];
    char autor[N];
    int lleno_lib;
    }libro;
    typedef struct{
    char nombre_bi[N];
    libro lib[10];
    int lleno_bi;
    }biblioteca;
    biblioteca bi[3];
    void vacio();
    void cambio(char palabra[N]);
    void anadebi();
    void anadelib();
    void consulta();
    int main(){
    int op;
    char key;
    vacio();
    do{
    do{
    printf("Elige una opcion a realizar:
    ");
    printf("(1) Anadir una nueva biblioteca.
    ");
    printf("(2) Anadir un libro a una biblioteca.
    ");
    printf("(3) Consultar un libro.
    ");
    scanf("%i", &op);
    }while (op < 1 || op > 3);
    switch(op){
    case 1:
    anadebi();
    break;
    case 2:
    anadelib();
    break;
    case 3:
    consulta();
    break;
    }
    printf("Quieres realizar alguna operacion mas? (S/N): ");
    scanf("%c",&key);
    }while(key == 'S' || key == 's');
    system("pause");
    return 0;
    }
    void vacio(){
    int i,j;
    for (i = 0; i < N; i++){
    bi[i].lleno_bi = 0;
    for (j = 0; j < 10; j++){
    bi[i].lib[i].lleno_lib = 0;
    }
    }
    }
    void cambio(char palabra[N]){
    int i;
    for (i == 0; i < N; i++){
    if (palabra[i] == '
    '){
    palabra[i] = '\0';
    }
    }
    }
    void anadebi(){
    int i, aux;
    aux = 0;
    for(i = 0; i < 3 && aux == 0; i++){
    if (bi[i].lleno_bi == 0){
    printf("Introduce un nombre para la biblioteca: ");
    fflush(stdin);
    fgets(bi[i].nombre_bi, N, stdin);
    cambio(bi[i].nombre_bi);
    bi[i].lleno_bi = 1;
    aux = 1;
    }
    }
    if (aux == 0){
    printf("No queda ningun hueco libro para una nueva biblioteca.
    ");
    }
    }
    void anadelib(){
    int i, op, aux;
    aux = 0;
    for(i = 0; i < 3; i++){
    if(bi[i].lleno_bi == 1){
    printf("(%i) %s.
    ",i,bi[i].nombre_bi);
    }
    }
    scanf("%i",&op);
    for (i = 0; i < 10 && aux ==0 ; i++){
    if(bi[op].lib[i].lleno_lib == 0){
    printf("Introduce el mnombre del libro: ");
    fflush(stdin);
    fgets(bi[op].lib[i].nombre_lib, N, stdin);
    cambio(bi[op].lib[i].nombre_lib);
    printf("Introduce el mnombre del Autor: ");
    fflush(stdin);
    fgets(bi[op].lib[i].autor, N, stdin);
    cambio(bi[op].lib[i].autor);
    bi[i].lib[i].lleno_lib = 1;
    aux = 1;
    }
    }
    }
    void consulta(){
    int op, i, j, aux ;
    char buscar[N];
    aux = 1;
    do {
    printf("Que quieres buscar, nombre lirbo o nombre autor:
    ");
    printf("(1) Nombre Libro.
    )");
    printf("(2) Nombre Autor.
    ");
    scanf("%i", &op);
    }while(op < 1 || op > 2);
    switch (op){
    case 1: {
    printf("Introduce el nombre del libro: ");
    fflush(stdin);
    fgets(buscar, N, stdin);
    cambio(buscar);
    for ( i = 0; i < 3; i++){
    aux = 1;
    for(j = 0; j < 10; j++){
    aux = strcmp(buscar, bi[i].lib[j].nombre_lib);
    if (aux == 0){
    printf("El libro %s se encuentra en la biblioteca %s.
    ", buscar,bi[i].nombre_bi);
    printf("el Autor del libro es %s.
    ",bi[i].lib[j].autor);
    }
    }
    }
    break;
    }
    case 2: {
    printf("Introduce el nombre del autor: ");
    fflush(stdin);
    fgets(buscar, N, stdin);
    cambio(buscar);
    for ( i = 0; i < 3; i++){
    aux = 1;
    for(j = 0; j < 10; j++){
    aux = strcmp(buscar, bi[i].lib[j].autor);
    if (aux == 0){
    printf("El libro %s se encuentra en la biblioteca %s.
    ", bi[i].lib[j].nombre_lib, bi[i].nombre_bi);
    }
    }
    }
    break;
    }
    }
    }

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  7 років тому

      Para este tipo de cosas, el depurador siempre es la solucion! Un saludo.