elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda con codigo (struct y arreglos)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con codigo (struct y arreglos)  (Leído 688 veces)
angelica24

Desconectado Desconectado

Mensajes: 4


Ver Perfil
ayuda con codigo (struct y arreglos)
« en: 20 Julio 2018, 23:01 pm »

hola, espero que me puedan ayudar, tengo que hacer un catalogo de libros con arreglos y struct, ya llevo algo pero cuando lo quiero probar me salen muchos errores, espero que me puedan ayudar

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct tlibro{
  5.    char titulo[50];
  6.    char autor[50];
  7.    char editorial[30];
  8.    int no_edicion;
  9.    int anio_edicion;
  10.    char clasificacion[30];
  11.    long ISBN;
  12.  
  13. };
  14.  
  15.  
  16.  
  17. int i;
  18. int opcion, n;
  19.  
  20. int main(int argc, char** argv) {
  21.  
  22.    tlibro arreglo[100];
  23.  
  24.    do {
  25.        opcion = menu();
  26.        switch (opcion) {
  27.            case 1: crear(arreglo, n);
  28.                break;case 2: eliminar();
  29.                break;
  30.            case 3: modificar();
  31.                break;
  32.            case 2: visualizar(arreglo, n);
  33.                break;
  34.            case 3: buscar(arreglo, n);
  35.                break;
  36.            default: printf("Esa opcion no existe\n");
  37.  
  38.        }
  39.    }while(opcion!=6);
  40.  
  41.  
  42.  
  43.    return (EXIT_SUCCESS);
  44. }
  45.  
  46. void menu(int o){
  47.  
  48.    printf("Seleccione una opcion:\n");
  49.    printf("1.-Generar un nuevo registro de libro\n");
  50.    printf("2.-Eliminar un registro de libro\n");
  51.    printf("3.-Modificar un registro de libro\n");
  52.    printf("4.-Visualizar todos los registros de libro\n");
  53.    printf("5.-Buscar un registro de libro(por ISBN)\n");
  54.    printf("6.-Terminar\n");
  55.    scanf("%d", &opcion);
  56.  
  57. }
  58.  
  59. void crear(tlibro libros[], int indice) {
  60.    for (i = 0; i < 100; i++) {
  61.  
  62.        printf("Proporcione el titulo del libro: \n");
  63.        scanf("%[^n]", &libros[i].titulo);
  64.        printf("Proporcione el(los) nombre(s) del(los) autor(es)\n");
  65.        scanf("%[^n]", &libros[i].autor);
  66.        printf("Proporcione la editorial\n");
  67.        scanf("%[^n]", &libros[i].editorial);
  68.        printf("Proporcione el numero de edicion\n");
  69.        scanf("%d", &libros[i].no_edicion);
  70.        printf("Proporcione el año de edicion\n");
  71.        scanf("%d", &libros[i].anio_edicion);
  72.        printf("Proporcione la clasificacion(LCC)\n");
  73.        scanf("%[^n]", &libros[i].clasificacion);
  74.        printf("Proporcione el registro del libro(ISBN)\n");
  75.        scanf("%d", &libros[i].ISBN);
  76.    }
  77. }
  78.  
  79. void visualizar(tlibro libros[], int indice) {
  80.  
  81.    int j=0;
  82.    for(j=0; j<indice; j++){
  83.  
  84.        printf("Libro %d:\n", j+1);
  85.        printf("%s\n", libros[j].titulo);
  86.        printf("%s\n", libros[j].autor);
  87.        printf("%s\n", libros[j].editorial);
  88.        printf("%d\n", libros[j].no_edicion);
  89.        printf("%d\n", libros[j].anio_edicion);
  90.        printf("%s\n", libros[j].clasificacion);
  91.        printf("%d\n", libros[j].ISBN);
  92.    }
  93.  
  94.  
  95. }
  96.  
  97. void buscar(tlibro libros[], int indice) {
  98.  
  99.    int i;
  100.    long ISBN;
  101.  
  102.    printf("Indique el ISBN del libro a buscar: ");
  103.    scanf("%d", &ISBN);
  104.  
  105.    for(i=0; i<indice; i++){
  106.        if(ISBN==libros[i].ISBN){
  107.            printf("Se encontro el libro cuyos datos son:\n");
  108.            printf("%s", libros[i].titulo);
  109.            printf("%s", libros[i].autor);
  110.            printf("%s", libros[i].editorial);
  111.            printf("%d", libros[i].no_edicion);
  112.            printf("%d", libros[i].anio_edicion);
  113.            printf("%s", libros[i].clasificacion);
  114.            printf("%d", libros[i].ISBN);
  115.  
  116.        }
  117.  
  118.  
  119.    }
  120.  
  121. }
  122.  
  123. void eliminar() {
  124. }
  125.  
  126. void modificar() {
  127. }
  128.  


« Última modificación: 20 Julio 2018, 23:07 pm por engel lex » En línea

engel lex
CoAdmin
***
Desconectado Desconectado

Mensajes: 15.347



Ver Perfil
Re: ayuda con codigo (struct y arreglos)
« Respuesta #1 en: 20 Julio 2018, 23:09 pm »

Hola modifiqué tu código con etiquetas GeSHi para que fuera más legible...



es bueno que empiezes indicando que errores te da


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
angelica24

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: ayuda con codigo (struct y arreglos)
« Respuesta #2 en: 21 Julio 2018, 00:04 am »

Estos son los mensajes que genera:


Código:
ProgramaHector.c:29:18: warning: implicit declaration of function 'menu' is invalid in C99 [-Wimplicit-function-declaration]
        opcion = menu();
                 ^
ProgramaHector.c:31:21: warning: implicit declaration of function 'crear' is invalid in C99 [-Wimplicit-function-declaration]
            case 1: crear(arreglo, n);
                    ^
ProgramaHector.c:39:21: warning: implicit declaration of function 'visualizar' is invalid in C99 [-Wimplicit-function-declaration]
            case 2: visualizar(arreglo, n);
                    ^
ProgramaHector.c:41:21: warning: implicit declaration of function 'buscar' is invalid in C99 [-Wimplicit-function-declaration]
            case 3: buscar(arreglo, n);
                    ^
ProgramaHector.c:53:6: error: conflicting types for 'menu'
void menu(){
     ^
ProgramaHector.c:29:18: note: previous implicit declaration is here
        opcion = menu();
                 ^
ProgramaHector.c:68:6: error: conflicting types for 'crear'
void crear(struct tlibro libros[], int indice) {
     ^
ProgramaHector.c:31:21: note: previous implicit declaration is here
            case 1: crear(arreglo, n);
                    ^
ProgramaHector.c:72:21: warning: format specifies type 'char *' but the argument has type 'char (*)[50]' [-Wformat]
        scanf("%s", &libros[i].titulo);
               ~~   ^~~~~~~~~~~~~~~~~
ProgramaHector.c:74:21: warning: format specifies type 'char *' but the argument has type 'char (*)[50]' [-Wformat]
        scanf("%s", &libros[i].autor);
               ~~   ^~~~~~~~~~~~~~~~
ProgramaHector.c:76:21: warning: format specifies type 'char *' but the argument has type 'char (*)[30]' [-Wformat]
        scanf("%s", &libros[i].editorial);
               ~~   ^~~~~~~~~~~~~~~~~~~~
ProgramaHector.c:82:21: warning: format specifies type 'char *' but the argument has type 'char (*)[30]' [-Wformat]
        scanf("%s", &libros[i].clasificacion);
               ~~   ^~~~~~~~~~~~~~~~~~~~~~~~
ProgramaHector.c:84:21: warning: format specifies type 'int *' but the argument has type 'long *' [-Wformat]
        scanf("%d", &libros[i].ISBN);
               ~~   ^~~~~~~~~~~~~~~
               %ld
ProgramaHector.c:96:6: error: conflicting types for 'visualizar'
void visualizar(struct tlibro libros[], int indice) {
     ^
ProgramaHector.c:39:21: note: previous implicit declaration is here
            case 2: visualizar(arreglo, n);
                    ^
ProgramaHector.c:108:24: warning: format specifies type 'int' but the argument has type 'long' [-Wformat]
        printf("%d\n", libros[j].ISBN);
                ~~     ^~~~~~~~~~~~~~
                %ld
ProgramaHector.c:115:6: error: conflicting types for 'buscar'
void buscar(struct tlibro libros[], int indice) {
     ^
ProgramaHector.c:41:21: note: previous implicit declaration is here
            case 3: buscar(arreglo, n);
                    ^
ProgramaHector.c:121:17: warning: format specifies type 'int *' but the argument has type 'long *' [-Wformat]
    scanf("%d", &ISBN);
           ~~   ^~~~~
           %ld
ProgramaHector.c:132:26: warning: format specifies type 'int' but the argument has type 'long' [-Wformat]
            printf("%d", libros[i].ISBN);
                    ~~   ^~~~~~~~~~~~~~
                    %ld
En línea

engel lex
CoAdmin
***
Desconectado Desconectado

Mensajes: 15.347



Ver Perfil
Re: ayuda con codigo (struct y arreglos)
« Respuesta #3 en: 21 Julio 2018, 00:13 am »

los errores Wformat los puedes ignorar mientras aprendes....


Código:
warning: implicit declaration of function 'menu' is invalid in C99 [-Wimplicit-function-declaration]
        opcion = menu();

los primeros 4 son relacionados a la forma en que C lee el codigo... cuando lee el codigo imagina un cursor bajando linea a linea...

cuando llega a la linea 25
Código:
opcion = menu();

dará un error porque nunca ha leído ninguna función llamada "menu()"...

esto se resuelve de una de las 2 formas... o pones las declaraciones de las funciones antes de donde la vas a usar... o creas prototipos...

los prototipos es basicamente antes de main colocas la declaración de la funcion

Código:
void menu(int o);

así si el contenido y terminado en ";"



el siguiente error

Código:
ProgramaHector.c:53:6: error: conflicting types for 'menu'
void menu(){
     ^
ProgramaHector.c:29:18: note: previous implicit declaration is here
        opcion = menu();


linea 25
Código:
opcion = menu();

y si vemos la linea 18
Código:
int opcion, n;

sin embargo menú
Código:
void menu(int o)

es decir, no hay coherencia... void no tiene retorno, sin embargo en linea 25 le dijiste a opción que tomara su valor de menú... error por donde se vea...

lo mismo con las otras funciones



probablemente una de las cosas más importante de programar es aprender a leer los errores
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO]¿Como printear un valor de un struct dentro de otro struct?
Programación C/C++
Firos 0 4,122 Último mensaje 24 Marzo 2011, 13:47 pm
por Firos
ayuda con mi programa struct c
Programación C/C++
akiranakamure 2 1,217 Último mensaje 13 Marzo 2013, 21:58 pm
por durasno
Ayuda Struct « 1 2 »
Programación C/C++
BlackM4ster 10 2,607 Último mensaje 8 Abril 2013, 14:37 pm
por BlackM4ster
Ayuda con struct en C
Programación C/C++
nyper01 4 1,098 Último mensaje 15 Diciembre 2013, 23:04 pm
por nyper01
Duda con respecto a struct dentro de struct
Programación C/C++
Naimaderis 1 1,446 Último mensaje 2 Abril 2017, 00:10 am
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines