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


 


Tema destacado: [AIO elhacker.NET 2015] Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  error al compilar; URGENTE¡¡¡¡¡¡!!!!!!!!!!!!!!!!!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: error al compilar; URGENTE¡¡¡¡¡¡!!!!!!!!!!!!!!!!!!  (Leído 241 veces)
yaye

Desconectado Desconectado

Mensajes: 2


Ver Perfil
error al compilar; URGENTE¡¡¡¡¡¡!!!!!!!!!!!!!!!!!!
« en: 8 Septiembre 2017, 14:45 »

hola, estoy con un programa de gestion deportiva, pero me he creado unos array como variables locales y me da error al compilar, quien me ayuda??


Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. //#define L_INSTALACION_DEPORTIVA 3
  5.  
  6. struct categoria_deportiva{
  7. char identificador[3];
  8. char nombre[40];
  9. char descripcion[100];
  10. int contador_instalaciones;
  11. struct instalacion_deportiva array_instalacion[23];//[L_INSTALACION_DEPORTIVA];
  12. };
  13. struct socio{
  14. int num;
  15. char nombre[20];
  16. char apellidos [30];
  17. char dni [10];
  18. char direccion[40];
  19. int telefono;
  20. };
  21. struct  socio array_socios[50];
  22. contador_socio=0;
  23. struct reserva{
  24. int numero_socio;
  25. char identificador[6];
  26. int dia;
  27. char mes;
  28. int hora_inicio;
  29. int hora_final;
  30.  
  31. };
  32.  
  33. struct instalacion_deportiva{
  34. char codigo[10];
  35. char nombre[40];
  36. char descripcion[100];
  37. float dimensiones;
  38. int telefono;
  39. float precio;
  40. char calle[100];
  41. int numero[4];
  42. char ciudad[20];
  43. struct reserva array_reservas[30];
  44. int contador_reservas=0;
  45.  
  46. };
  47. struct categoria_Deportiva array_categorias[10];
  48. contador_categorias=0;
  49.  
  50. int menu(void);
  51. void alta_categoria(void);
  52. int buscar_caracter(char[],char);
  53. char* trozo_cadena(char[], int);
  54. int borrar_categoria(struct categoria_deportiva[],int,char);
  55. void alta_instalacion(void);
  56. int borrar_instalacion(struct instalacion_deportiva[],int);
  57. void alta_socio(void);
  58. void borrar_socio(struct socio[],int);
  59. void reserva(void);
  60.  
  61. int main  (void){
  62.  
  63.    int opcion, pos;
  64.  
  65.  
  66.  
  67.  
  68.  
  69.    while(1){
  70.       opcion=menu();
  71.   int clave_buscar;
  72.   int contador_categorias=0;
  73.   int
  74.       switch (opcion){
  75.           case 1:
  76.               alta_categoria();
  77.               printf("\n\n");
  78.               break;
  79.           case 2:
  80.  
  81.              pos=borrar_categoria( array_categorias,contador_categorias,clave_buscar);
  82.            break;      
  83.  
  84.  
  85.            case 3:
  86.           alta_instalacion();
  87.           printf("\n\n");
  88.    break;
  89.  
  90.       case 4:
  91.            pos=borrar_instalacion(array_instalacion,contador_instalaciones);
  92.            break;
  93.  
  94.  
  95.       case 5:
  96.           alta_socio();
  97.           printf("\n\n");
  98.           break;
  99. case 6:
  100.  
  101. break;
  102. case 7:
  103. alta_reserva();
  104. printf("\n\n");
  105. break;
  106. case 8:
  107. exit(0);
  108.                printf("\n\nEl Programa ha terminado\n\n");
  109.                break;
  110.  
  111.  
  112.  
  113.            default:
  114.                printf("\nOpcion incorrecta, seleccione una opcion del listado.\n\n");
  115.                break;
  116.        }
  117.  
  118.    }    while (opcion != 8);
  119.  
  120.    return 0;
  121.  
  122.  
  123.  
  124.  
  125. int menu(){
  126. int opcion;
  127. printf("opcion 1: dar de alta nueva catgoria\n");
  128. printf("opcion 2: dar de baja una categoria\n");
  129. printf("opcion 3: dar de alta nueva instalacion\n");
  130. printf("opcion 4: dar de baja una instalacion\n");
  131. printf("opcion 5: dar de alta un nuevo socio\n");
  132. printf("opcion 6: dar de baja un socio\n");
  133. printf("opcion 7: realizar una reserva\n");
  134. printf("opcion 8: salir");
  135.  
  136. printf("elija una opcion");
  137. scanf("%d",&opcion);
  138. return opcion;
  139. }
  140.  
  141. void alta_categoria(){//aqui pongo el nimbre de la estructura en la que tengo que trabajar y como la voy a llaar. ref de ref. bibliograficas y struct ref... que es el tipo que devuelve
  142.   printf("\nintroduzca el identificador: ");
  143.    fflush(stdin);
  144.  gets(array_categorias[contador_categorias].identificador);
  145.   printf("intoduzca el nombre: ");
  146.    fflush(stdin);
  147.   gets(array_categorias[contador_categorias].nombre);
  148.   printf("introduzca la descricion: ");
  149.    fflush(stdin);
  150.   gets(array_categorias[contador_categorias].descripcion);
  151.  
  152. contador_categorias++;
  153.  
  154. }
  155.  
  156. int buscar_caracter(char* cadena,char caracter){
  157.        for (int i=0;i<strlen(cadena);i++){
  158.                if(cadena[i]==caracter){
  159.                        return i;
  160.                }
  161.        }
  162.        return -1;
  163.  
  164. }
  165.  
  166. char* trozo_cadena(char clave[], int pos){//me localiza el identificador numerico
  167.        char* cad;
  168.        int j=0;
  169.        for(int i=pos; i<strlen(clave); i++){
  170.  
  171.                    break;
  172.                cad[j]=clave[i];
  173.                j++;
  174.  
  175.        }
  176.  
  177.        return cad;
  178. }
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187. int borrar_categoria(struct categoria_deportiva array_categria[], int contador_caegoria_dep, char *clave_buscar){
  188. char clave_buscar[9];
  189. int contador_instalaciones;
  190. int contador_categoria_dep;
  191. char respuesta;
  192.  
  193.            printf("introduzca el identificadorque quiere borrar:\n");
  194.             fflush(stdin);
  195.            gets(clave_buscar);//una vez que tengo guardada la clave que quiro buscar la coparo con las posiciones del array.
  196.  
  197.                    if(pos==-1){
  198.                            printf("no se encuentra el identificador");
  199.                    } else  {
  200.                    if (array_categoria[pos].contador_instalaciones >0){
  201.                                    fflush(stdin);
  202.                                    printf("esta categoria tiene al menos una instalacion, desea borrarlo?(s/n)");
  203.                                    scanf("%c",&respuesta);
  204.                    }
  205.                    else if(array_categoria_dep[pos].contador_instalaciones >0  ){
  206.                     respuesta=='s';
  207.                    }
  208.  
  209.                    if(respuesta=='s'){
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.                            for(int i=pos;i<contador_categoria_dep-1;i++){//si se cumple la condicion de arriba lo borro con el codigo que viene a continuacion atrasando la posicion en el array
  218.                    //la pisicion me la va a dar la i, asi que igualo j a la posicion que quiero buscar y j tiene que ser menor que el contador catalogo que es el maximo que tenemos en este mometo de elementos de total de caralogos
  219.            //ahora lo que tengo que hacer una vez localizada la posocion es borrarlo y mover todos los elementos uno para atras.lo hago copiando a la siguiente posicion.
  220.  
  221.  
  222. //array_categoria_dep[]
  223. strcpy(array_categoria_dep[i].identificador,array_categoria_dep[i+1].identificacdor);//con esto copio campo a campo en la posicion siguiente
  224.            strcpy(array_categoria_dep[i].nombre,array_categoria_dep[i+1].nombre);
  225.            strcpy(array_categoria_dep[i].descripcion,array_categoria_dep[i+1].descripcion);
  226.            array_categoria_dep[i].contador_instalaciones = array_categoria_dep[i+1].contador_instalaciones;
  227.            for(int j=0;j<array_categoria_dep[i].contador_instalaciones;j++){//vaciar las instalaciones de la posicion j del categoria.
  228.            strcpy(array_categoria_dep[i].array_instalaciones[j].codigo,"");//ponemos las "" por que estamos dejando la cadena vacia, es decir vamos a vaciar esa referencia y rellenerla con la siguiente
  229.           strcpy(array_categoria_dep[i].array_instalaciones[j].nombre,"");
  230.           strcpy(array_categoria_dep[i].array_instalaciones[j].descripcion,"");
  231.            strcpy(array_categoria_dep[i].array_instalaciones[j].dimensiones,"");
  232.            strcpy(array_categoria_dep[i].array_instalaciones[j].precio,"");
  233.           array_categoria_dep[i].array_instalaciones[j].telefono=0;//vaciar la referencia, al ser un entero las ponemos a 0
  234.            strcpy(array_categoria_dep[i].array_instalaciones[j].calle,"");
  235.            strcpy(array_categoria_dep[i].array_instalaciones[j].ciudad,"");
  236.            array_categoria_dep[i].array_instalaciones[j].numero=0;
  237. }
  238.  
  239.  
  240.    }
  241.  
  242.   for(int i=0; i<contador_categoria_dep; i++){
  243.       if(strcmp( array_categoria_deportiva[i].identificador,clave_buscar)==0){//comparo la clave de cada posicion del catalogo con la clave que estamos buscando que es la clave_buscar.
  244.            return i;//i es la posicion donde la he encontrado.
  245.        }
  246.   }
  247.  
  248.   return -1; // si no lo encuentro
  249. }
  250.  
  251. void alta_instalacion(){//aqui pongo el nimbre de la estructura en la que tengo que trabajar y como la voy a llaar. ref de ref. bibliograficas y struct ref... que es el tipo que devuelve
  252.   printf("introduzca el codigo: ");
  253.    fflush(stdin);
  254.  gets(array_instalacion[contador_instalaciones].codigo);
  255.   printf("intoduzca el nombre: ");
  256.    fflush(stdin);
  257.   gets(array_instalacion[contador_instalaciones].nombre);
  258.   printf("introduzca la descropcion: ");
  259.    fflush(stdin);
  260.   gets(array_instalacion[contador_instalaciones].descripcion);
  261.   printf("introduzca la dimesion: ");
  262.    fflush(stdin);
  263.   gets("%f",&array_instalacion[contador_instalaciones].dimensiones);
  264.   printf("introduzca el precio: ");
  265.    fflush(stdin);
  266.   gets(array_instalacion[contador_instalaciones].precio);
  267.   printf("introduzca la calle ");
  268.    fflush(stdin);
  269.   gets(array_instalacion[contador_instalaciones].calle);
  270.   fprintf("introduzca el numero");
  271.   fflush(stdin);
  272.   gets(array_instalacion[contador_instalaciones].numero);
  273.   printf("introduzca la ciudad");
  274.   fflush(stdin);
  275.   gets(array_instalacion[contador_instalaciones].ciudad);
  276.  
  277.   contador_instalaciones++;
  278.  
  279. }
  280.  
  281.  
  282.  
  283. void borrar_instalacion(struct instalacion_deportiva array_instalaciones_deportivas[],int contador_instalaciones){
  284. int pos;
  285.    char *id;
  286.    char clave_buscar[5];
  287.    char *numero_cadena;//obtenemos el numero del identificador que nos interesa
  288.    int numero_entero;//variable donde guardamos la conversion de esa cadena a numero entero.
  289.    int  posicion_2;//calculamos la posicion que tiene el "-"
  290.    printf("introduzca el identificador de la instalacoin de la que quiere borrar ");
  291.     fflush(stdin);
  292.   gets(clave_buscar);//una vez que tengo guardada la clave que quiro buscar la coparo con las posiciones del array.
  293.  
  294.    pos=buscar_caracter(clave_buscar,'_');
  295.     if(pos==-1){
  296.             printf("no se encuentra la instalacion");
  297.     }
  298.     else{
  299.  
  300.  
  301.   // printf("POSICION: %d",pos);
  302.    id=trozo_cadena(codigo,pos);//trozo de cadena  no se la longitud que va a tener y por eso lo almaceno en el puntero id
  303.    //printf("\nCADENA: %s",id);
  304.    for(int i=0;i<contador_instalacion;i++){
  305.        if(strcmp(array_instalacion[i].codigo,id)==0){
  306.  
  307.  
  308.                        numero_cadena=trozo_cadena(clave_buscar,pos);
  309.                        //para pasarlo al numero entero
  310.                        numero_entero=atoi(numero_cadena);
  311.  
  312.   //ahora vamos a resolver lo del numero de copias si tienes mas copias hay que borrarlas
  313.                         if(array_categorias[pos].array_instalacion[numero_entero].reservas >0){
  314.                         array_categorias[pos].array_instalacion[numero_entero].reservas--;//para restarle una copia
  315.                         if(array_categorias[pos].array_instalacion[numero_entero].reservas==0){
  316.  
  317.                         strcpy(array_categorias[pos].array_instalacion[numero_entero].codigo,"");//ponemos las "" por que estamos dejando la cadena vacia, es decir vamos a vaciar esa referencia y rellenerla con la siguiente
  318. strcpy(array_categorias[pos].array_instalacion[numero_entero].nombre,"");                        
  319.                        strcpy(array_categorias[pos].array_instalacion[numero_entero].descripcion,"");
  320.                        strcpy(array_categorias[pos].array_instalacion[numero_entero].calle,"");
  321.                        strcpy(array_categorias[pos].array_instalacion[numero_entero].ciudad,"");
  322.                        array_categorias[pos].array_instalacion[numero_entero].dimension =0;//vaciar la referencia, al ser un entero las ponemos a
  323. array_categorias[pos].array_instalacion[numero_entero].precio =0;
  324. array_categorias[pos].array_instalacion[numero_entero].telefono =0;
  325. array_categorias[pos].array_instalacion[numero_entero].numero =0;
  326.  
  327.                         for(int m=numero_entero;m<array_categorias[pos].contador_instalaciones;m++){
  328.                            //vamos trasladando una posicion posterior  una anterior y la empezamos desde la posicon borrada
  329.                            strcpy(array_categorias[pos].array_instalaciones[m].codigo,array_categorias[pos+1].array_instalacion[m].codigo);
  330. strcpy(array_categorias[pos].array_instalaciones[m].nombre,array_categorias[pos+1].array_instalacion[m].nombre);          
  331. strcpy(array_categorias[pos].array_instalaciones[m].descripcion,array_categorias[pos+1].array_instalacion[m].descripcion);
  332. strcpy(array_categorias[pos].array_instalaciones[m].calle,array_categorias[pos+1].array_instalacion[m].calle);
  333. strcpy(array_categorias[pos].array_instalaciones[m].ciudad,array_categorias[pos+1].array_instalacion[m].ciudad);
  334. array_categorias[pos].array_instalacion[m].dimension =array_categotias[pos+1].array_instalacion[m].dimension;
  335.                           array_categorias[pos].array_instalacion[m].telefono =array_categotias[pos+1].array_instalacion[m].telefono;
  336.                           array_categorias[pos].array_instalacion[m].precio =array_categotias[pos+1].array_instalacion[m].precio;
  337.                           array_categorias[pos].array_instalacion[m].numero =array_categotias[pos+1].array_instalacion[m].numero;
  338.  
  339.                             array_categorias[pos].contador_instalaciones --;//le estamps restando una posicion.
  340.                         }
  341.                     }
  342.  
  343.  
  344.             }
  345.         }
  346.        }
  347.  
  348.        }
  349.    }
  350.  
  351.  
  352. }
  353.  
  354.  
  355.  
  356. void alta_scio(){
  357. int pos;
  358. array_socios[contador_socios].num=contador_socios;
  359. printf("introduzca el nombre del socio: \n");
  360. fflush(stdin);
  361. gets(array_socios[contador_socios].nombre);
  362. printf("introduzca el apellido: \n");
  363. fflush(stdin);
  364. gets(array_socios[contador_socios].apellidos);
  365. printf("introduzca el dni:\n");
  366. fflush(stdin);
  367. gets(array_socios[contador_socios].dni);
  368. printf("introduzca la direccion");
  369. fflush(stdin);
  370. gets(array_socios[contador_socios].direccion);
  371. printf("introduzc el telefono: \n");
  372. fflush(stdin);
  373. gets(array_socios[contador_socios].telefono);
  374.  
  375. contador_socios++;
  376.  
  377. }
  378. int borra_socio(struct socio array_socios[],int contador_socio){
  379. int pos;
  380. printf("introduzca el numero de socio que quiere borrar: \n");
  381. fflush(stdin);
  382. gets(num);
  383.  
  384. for(int i=pos;i<contador_socio-1;i++){
  385.  
  386. strcpy(array_socio[pos].nombre,array_socio[pos+1].nombre);
  387. strcpy(array_socio[pos].apellidos,array_socio[pos+1].apellidos);
  388. strcpy(array_socio[pos].dni,array_socio[pos+1].dni);
  389. strcpy(array_socio[pos].direccion,array_socio[pos+1].direccion);
  390. array_socio[pos].telefono =array_socio[pos+1].telefono;
  391. for(int j=0;j<contador_socio;j++){
  392. strcpy(array_socios[i].nombre,"");
  393. strcpy(array_socios[i].apellidos,"");
  394. strcpy(array_socios[i].dni,"");
  395. strcpy(array_socios[i].direccion,"");
  396. array_socios[i].telefono=0;
  397.  
  398. }
  399.  
  400. contador_instalaciones --;
  401.  
  402.  
  403. }    
  404.  
  405.  
  406. void reservas(){
  407.  
  408. printf("a que categoria pertenece la reserva que quiere realizar: \n");
  409. fflush(stdin);
  410. gets(array_categorias)
  411.  
  412. pritf("de que instalacion quiere realizar la reserva: \n")
  413. fflush(stdin);
  414. gets(array_instalacion);
  415. printf("introduzca el numero de socio que va a realizar la reserva: \n");
  416. fflush(stdin);
  417. gets(array_reservas[contador_reservas].num_socio);
  418. printf("introduzca el identificador: \n");
  419. fflush(stdin);
  420. gets(array_reservas[contador_reservas].identificador);
  421. printf("introduzca el dia de la reserva: \n");
  422. fflush(stdin);
  423. gets(array_reservas[contador_reservas].dia);
  424. printf("introduzca el mes de la reserva: \n");
  425. fflush(stdin);
  426. gets(array_reservas[contador_reservas].mes);
  427. printf("introduzca la hora de inicio: \n");
  428. fflush(stdin);
  429. gets(array_reservas[contador_reservas].hora_inicio);
  430. printf("introduzca la hora de fin: \n");
  431. fflush(stdin);
  432. gets(array_reservas[contador_reservas].hora_final);
  433. contador_reservas++;
  434.  
  435. }
  436.  
  437.  


« Última modificación: 8 Septiembre 2017, 15:37 por simorg » En línea

engel lex
CoAdmin
***
Desconectado Desconectado

Mensajes: 12.535



Ver Perfil
Re: error al compilar; URGENTE¡¡¡¡¡¡!!!!!!!!!!!!!!!!!!
« Respuesta #1 en: 8 Septiembre 2017, 15:39 »

que error de compilación 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.
yaye

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: error al compilar; URGENTE¡¡¡¡¡¡!!!!!!!!!!!!!!!!!!
« Respuesta #2 en: 8 Septiembre 2017, 15:46 »

No me lee las variables globales. Ni struct instalacion_deportiva array_instalacion[23];//[L_INSTALACION_DEPORTIVA];



En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.201


ASMático


Ver Perfil WWW
Re: error al compilar; URGENTE¡¡¡¡¡¡!!!!!!!!!!!!!!!!!!
« Respuesta #3 en: 8 Septiembre 2017, 16:16 »

Pon aquí el error tal y como te lo da el compilador.
En línea

MAFUS


Desconectado Desconectado

Mensajes: 896



Ver Perfil
Re: error al compilar; URGENTE¡¡¡¡¡¡!!!!!!!!!!!!!!!!!!
« Respuesta #4 en: 8 Septiembre 2017, 23:18 »

Lo que ocurre es que el compilador trabaja de forma secuencial, es decir, no puedes usar algo sin antes haberlo declarado (haberle dicho al compilador que existe).

Por ejemplo, línea 11:
Código:
struct instalacion_deportiva array_instalacion[23];//[L_INSTALACION_DEPORTIVA];

ese struct instalacion_deportiva no existe en el momento de usarlo ya que lo defines en la línea 33.

Así que debes ordenar tu código para usar las cosas en el momento adecuado o haz declaraciones incompletas, eso es, solo defines los tipos de datos y más adelante los defines.
En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
error al compilar
GNU/Linux
saliaz 4 1,134 Último mensaje 1 Junio 2008, 23:08
por saliaz
me da error al compilar
Programación Visual Basic
elguast 2 792 Último mensaje 29 Junio 2008, 11:54
por elguast
Error al compilar un BAT a EXE « 1 2 »
Scripting
xXEsEtUlOnXx 10 3,768 Último mensaje 26 Julio 2008, 02:19
por morenochico
Error al compilar :( « 1 2 3 »
Programación C/C++
kloud45 26 4,601 Último mensaje 26 Agosto 2008, 01:56
por JuaN-ThE-HaCKeR
Error al compilar
ASM
Kerber0 4 4,848 Último mensaje 7 Enero 2010, 09:58
por Eternal Idol
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines