• Domingo 22 de Diciembre de 2024, 18:50

Autor Tema:  Re: TAD  (Leído 6113 veces)

lydin

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: TAD
« en: Martes 18 de Noviembre de 2003, 00:14 »
0
Me gustaria que alguien me diera ayuda sobre los  TAD, mas que nada  el formato que tiene.. he empezado un programa y no se como seguir ... Help, please...

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: TAD
« Respuesta #1 en: Miércoles 19 de Noviembre de 2003, 01:03 »
0
Hola, quisiera ayudarte, pero no se del tema. Solo queria consultarte que son los TAD?.. bueno, saludos y gracias. :guitar:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

mabrev

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: TAD
« Respuesta #2 en: Lunes 24 de Noviembre de 2003, 13:08 »
0
Hola:

  Según creo los TAD son Tipos Abstractos de Datos, son muy sencillos. La idea es crear tus propios tipos, tales como una lista doblemente enlazada, o cosas por el estilo. Para ello se utilizan "struct" y "typedef" en C. Sabes cómo se utilizan?? Tienes que estructurarlo en librerias *.h??
En cuanto me digas eso te cuento más cosas, porque no es cuestión de agobiarte con cosas que ya sabes ni con cosas que no necesitas saber.

Espero que te sirva de ayuda.

Saludos

lydin

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: TAD
« Respuesta #3 en: Lunes 24 de Noviembre de 2003, 17:07 »
0
Hola!
Pues si tiene q tener el .c y el .h..
Mira este es el codigo q tengo del .c:





/*Bibliotecas*/

#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <stdlib.h>


/*Mis Bibliotecas*/

#include "cabeza.h"



struct alumno
{
   char nombre[20];
   char apellidos[40];
   float nota;
   int dni[8];
};

/* Declaraciones*/
int menu,posicion,elemento,ventana;
char dni[8];
float nota;
char nombre[20],apellidos[40];

void visualizar(struct alumno *);

/*Funcion Main*/
void main()

{
   
    /******0000******/
   struct nodo *L;



   /************   Opciones del Menu    ***********/
   
   do
   {         
      printf("nt##################################################################n");
      printf("t##                          M E N U                             ##n");
      printf("t##################################################################");
      printf("n0.- PRESIONE 0 PARA SALIRn");
      printf("nn1.- INICIALIZARn t Crear Una Lista Vacia de Alumnosn");
      printf("n2.- ESTA VACIAnt Comprobar que la Lista esta Vacian");
      printf("n3.- PRIMEROnt Devuelve la Posicion del Primer Elementon");
      printf("n4.- ULTIMOnt Devuelve la Posicion del Ultimo Elemento de la Listan");   
      printf("n5.- SIGUIENTEnt Devuelve la Posicion del Elemento Siguienten");
      printf("n6.- ANTERIORnt Devuelve la Posicion del Elemento Anteriorn");
      printf("n7.- RECUPERARnt Devuelve el Dato que Contiene una Determinada Posicion de la Listan");
      printf("n8.- INSERTARnt Añade un Dato Justo antes de una determinada Posicionn");
      printf("n9.- MODIFICARnt Sustituir un Dato de una Posicion por uno Nuevo que Ocupe nt esa misma Posicionn");
      printf("n10.- SUPRIMIRnt Dada una Posicion de la Lista Elimina el Elemento que lo Ocupan");
      printf("n11.- ANULARnt Suprime todos los Elementos de la Lista y la convierte en Vacian");
      printf("n12.- IMPRIMIRnt Visualice Los Elemtos de La Listan");
      printf("n13.- LOCALIZAR NIFnt Busca un NIF en la Lista y Devuelve la Posicion que ocupa. n");
      printf("n14.- INVERSAnt Devuelve la Inversa de la Lista Actualn");
      printf("n15.- LONGITUDnt Devuelve la Longitud de la Lista Actualn");
      printf("n16.- FRECUENCIAnt Devuelve el Numero de Veces que Aparece una Nota en la Listan");
      printf("n17.- MAYOR NOTAnt Devuelve la Posicion de la Mayor Nota de la Listan");
      printf("n18.- MENOR NOTAnt Devuelve la Posicion de la Menor Nota de la Listan");
      printf("n19.- COPIAnt Devuelve una Copia de una Listan");
      printf("n20.- ORDENAnt Devuelve la Lista ordenada de Mayor a Menor Notan");
      

         
printf("nntIntroduzca La Opcion Elegida --> ");
scanf("%d",&menu);
getchar();


   switch (menu)
   {
   case 1:
      L=inicLista(L);
      printf("nn¡¡Ole!! Ya tienes una Listann");
      getchar();
      break;
   case 2:
      if(EsVacia(L)==1)
      printf("La Lista No tiene Ningun Elementonn");
      else
      printf("n El Primer Elemento es:");
      
      getchar();
      break;
   case 3:
       
      inicLista(L);
      break;

   case 7:

      recuperar(L);
      getchar();
      break;

   case 8:
      printf("Introduzca Una Posicion Para el Nuevo Elemento:");
      scanf("%d",&posicion);
      getchar();
      {
   struct alumno fijo;
   printf("Nombre: ");
   scanf("%s",fijo.nombre);
   printf("nApellidos: ");
   scanf("%s",fijo.apellidos);
   printf("nNota: ");
   scanf("%f",&fijo.nota);
   printf("nDNI: ");
   scanf("%s",fijo.dni);
   visualizar(&fijo);

       getchar();   
      }getchar();
      break;



    case  12:
      if(EsVacia(L))
      {
         printf("nLa Lista esta Vacian");
         getchar();
      }

      else
      {
         imprimir(L);
         getchar();
      }
      break;



   }
      
      
   }while(menu!=0);
}

void visualizar(struct alumno *datos)
{
   printf("Nombre: %s",datos->nombre);
   printf("nApellidos: %s",datos->apellidos);
   printf("nNota: %f",datos->nota);
   printf("nDNI: %d",datos->dni);
}

mabrev

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
TAD
« Respuesta #4 en: Martes 25 de Noviembre de 2003, 11:24 »
0
Hola:

  Además del fichero en C que tienes, debes tener otro que implemente las funciones definidas en la librería. Así tendrás, "cabeza.h", "cabeza.c" y el programa que has posteado aquí.

  La librería .h únicamente contiene las definiciones de tipos y los prototipos de las funciones, aquí puedes definir el tipo alumno:
typedef struct
               {
               char nombre[20];
               char apellidos[40];
               float nota;
               int dni[8];
               } alumno;
  Al hacer esto, puedes declarar una variable de tipo alumno en cualquier programa al que le hayas incluido tu librería, unicamente poniendo:
  alumno miVariable;

Lo otro que debe contener la librería, son los prototipos, pero no es necesario poner el nombre de los parámetros, sólo su tipo, por ejemplo para la función:
void visualizar(struct alumno *datos)
{
printf("Nombre: %s",datos->nombre);
printf("nApellidos: %s",datos->apellidos);
printf("nNota: %f",datos->nota);
printf("nDNI: %d",datos->dni);
}

En el .h deberás poner:
  void visualizar(alumno *);

Lo último que debes añadir en el .h son unas directivas para el preprocesador, la primera línea de tu .h debe ser:
   #if_not_define CABEZA_H
y la última:
   #end_if
Estas líneas son únicamente para no definir más de una vez la librería y que te dé un error.

  En el fichero cabeza.c, debes incluir la librería "cabeza.h", y en él escribes la implementación de las funciones definidas en el .h.

  Después de esto ya puedes utilizar tu librería en cualquier programa en c, únicamente con incluir "cabeza.h", posibilitando la utilización de todas las funciones que contenga.

No sé si me he explicado bien, si tienes alguna duda dímelo para intentar ayudarte.

Saludos

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: TAD
« Respuesta #5 en: Sábado 29 de Noviembre de 2003, 15:48 »
0
Creo haber entendido, es algo similar a una libreria dinamica (DLL).
   Si necesitas elaborar una libreria yo te puedo ayudar. Bueno, con la ayuda que aporto mabrev espero hallas eliminado tus dudas. Saludos  :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

lydin

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: TAD
« Respuesta #6 en: Lunes 1 de Diciembre de 2003, 12:38 »
0
Bueno lo que necesito es q ese programa haga lo q piden los "printf", lo que pasa q solo puse el  ".c" para q entendieseis lo q hacia el programa quiero decir lo q pedia... lo tengo 1 poco parado esta semana por q tengo un examen el jueves, pero tengo q terminarlo y hacer otro con una pila en vez de con una lista...
Muxas Gracias por la ayuda..

mabrev

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: TAD
« Respuesta #7 en: Lunes 1 de Diciembre de 2003, 13:30 »
0
Hola:

  Al final no sé si te ha servido de algo lo que te he contado, si tienes alguna duda o si no has tenido tiempo de mirarlo. Cuál de todas las opciones es la correcta??

Saludos.

GhostGirl

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: TAD
« Respuesta #8 en: Miércoles 10 de Diciembre de 2003, 04:15 »
0
Hola a todos  :lol:

La verdad es que uno de los temas en los que tengo más experiencia es en la definición e implementación de TAD asi es que si todavía quieres ayuda ....  :smartass: sólo avisa ok?

Saludos:

Nagisa

  • Miembro MUY activo
  • ***
  • Mensajes: 119
  • Nacionalidad: es
    • Ver Perfil
Re: TAD
« Respuesta #9 en: Miércoles 24 de Diciembre de 2003, 01:25 »
0
Hola!!La verdad es que esa duda tb la tenia yo, asi que me ha venido bien la contestacion. Solo tengo un par de dudas sobre esto:

La primera es: debo de poner en el .h todos los tipos, o puedo poner parte de ellos en el .c (para conseguir mayor ocultacion, que al fin y al cabo es de lo que van los TADs) ???

La segunda es: con que opciones se compilan los archivos y en que orden??

Uso el gcc bajo un PIV con WXP. Para compìlar normalmente uso gcc -c fichero.c , pero al compilar el .h me pone:

gcc: compilation of header file requested


Sobre el .c , solo me compila si comento las directivas de preprocesador #if_not_define y #end_if que deciais que habia que poner. De todos modos el .h no me compila (con o sin ellas).

A que se debe?? Me siento un poco...  :alien:

Muchas gracias por adelantado
   

mabrev

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: TAD
« Respuesta #10 en: Miércoles 7 de Enero de 2004, 12:31 »
0
Hola:

 El fichero .h no se compila, al hacer referencia a él en el .c ya se encarga el compilador de hacer lo que debe con él.

  En el fichero .h debes poner (al menos) los tipos a los que vas a utilizar desde el .c que lo referencia, ya que si lo haces directamente en el .c creo que no son accesibles desde otros programas.

  Ahora mismo no recuerdo las opciones para compilar con el gcc, aunque puede que puedas compilar primero el .c asociado al .h, y después (sin borrar el .o) compilar el fichero en que se utiliza el .h. De todas formas esta tarde me aseguro y te lo digo.

  Espero que te sea de utilidad.

Saludos.

T-Mac

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: TAD
« Respuesta #11 en: Lunes 19 de Enero de 2004, 15:30 »
0
HOLA !!!! soy nuevo en este foro, y tambien el el leguaje C

weno, quiero pedir ayuda, para una practica q tengo q entregar sobre TADs
y la verdadm no tengo ni idea...

weno lo q tengo q hacer es:

un programa en c q me permita "hacer un lista de alumnos matriculados en varios seminarios organizado la Facultad de fisica, dicha lista contiene los datos personales del alumno (nombre,apallidos y DNI) y el seminario en el q esta matriculado y estara implementada en una lista simplemente enlazada usando los codigos disponibles para este TAD.
se trata de realizar un programa q parmita procesar los siguientes:
* introducir elementos en la lista
* Borrar un alumno de la lista dado su DNI
* Listar todos los alumnos matriculados en un determinado seminario
*introducir elementos en la lista de forma ordenada, utilizando como indice el DNI (opcional)"

esto es todo, espero q alguien me pueda ayudar, por q stoy desesperado

 :(  , gracias y un saludo a to2

QliX=D!

  • Miembro MUY activo
  • ***
  • Mensajes: 214
    • Ver Perfil
Re: TAD
« Respuesta #12 en: Lunes 19 de Enero de 2004, 15:43 »
0
Cita de: "© Jonathan ©"
Creo haber entendido, es algo similar a una libreria dinamica (DLL).
   Si necesitas elaborar una libreria yo te puedo ayudar. Bueno, con la ayuda que aporto mabrev espero hallas eliminado tus dudas. Saludos  :hola:
No, no es ni remotamente parecido.
un TAD es una estructura funcional basica de programacion como lo son las listas, pilas, colas, etc, en si, son tipos como el int, char, etc, pero que hacen mas referencia a tipos estructurados como un nodo de una lista, y esas cosas.
QliX=D! - From the top of Tsunami

QliX=D!

  • Miembro MUY activo
  • ***
  • Mensajes: 214
    • Ver Perfil
Re: TAD
« Respuesta #13 en: Lunes 19 de Enero de 2004, 15:48 »
0
Cita de: "T-Mac"
HOLA !!!! soy nuevo en este foro, y tambien el el leguaje C

weno, quiero pedir ayuda, para una practica q tengo q entregar sobre TADs
y la verdadm no tengo ni idea...

weno lo q tengo q hacer es:

un programa en c q me permita "hacer un lista de alumnos matriculados en varios seminarios organizado la Facultad de fisica, dicha lista contiene los datos personales del alumno (nombre,apallidos y DNI) y el seminario en el q esta matriculado y estara implementada en una lista simplemente enlazada usando los codigos disponibles para este TAD.
se trata de realizar un programa q parmita procesar los siguientes:
* introducir elementos en la lista
* Borrar un alumno de la lista dado su DNI
* Listar todos los alumnos matriculados en un determinado seminario
*introducir elementos en la lista de forma ordenada, utilizando como indice el DNI (opcional)"

esto es todo, espero q alguien me pueda ayudar, por q stoy desesperado

 :(  , gracias y un saludo a to2
No me parece logico que te tengamos que solucionar el problema aca, por que en la forma en que lo escribis pareceria que pretendes qeu te hagamos el codigo y lo pongamos aca, si se supone que estas estudiadno estudie y resuelvalo como todo un señor!.
Ahora si queres una mano, si, pero si no tenes ni la mas remota idea de nada, te diria que estes mas metido en las clases para poder comprender los conceptos.

Pregunta puntual y la contesto sin problemas :D

slds.
QliX=D! - From the top of Tsunami

QliX=D!

  • Miembro MUY activo
  • ***
  • Mensajes: 214
    • Ver Perfil
Re: TAD
« Respuesta #14 en: Lunes 19 de Enero de 2004, 15:52 »
0
Cita de: "Nagisa"
Hola!!La verdad es que esa duda tb la tenia yo, asi que me ha venido bien la contestacion. Solo tengo un par de dudas sobre esto:

La primera es: debo de poner en el .h todos los tipos, o puedo poner parte de ellos en el .c (para conseguir mayor ocultacion, que al fin y al cabo es de lo que van los TADs) ???

La segunda es: con que opciones se compilan los archivos y en que orden??

Uso el gcc bajo un PIV con WXP. Para compìlar normalmente uso gcc -c fichero.c , pero al compilar el .h me pone:

gcc: compilation of header file requested


Sobre el .c , solo me compila si comento las directivas de preprocesador #if_not_define y #end_if que deciais que habia que poner. De todos modos el .h no me compila (con o sin ellas).

A que se debe?? Me siento un poco...  :alien:

Muchas gracias por adelantado
La primera:
No, solo los que necesites para usar desde "afuera" de tu TAD, Todos los tipos que sean de uso "interno" al tad, van al .c

Se compila como siempre el .c sin nada especial con gcc seria:

gcc -c -Wall -O2 lista.c -I. -L. (resto de los includes y librerias y bla bla)

Y listo :D
El .h no se compila, se usa luego para ver las definiciones de tu .c en otros archivos del proyecto a traves de los includes.

ahora el #ifndef #endif que decis que necesitas poner es para evitar "inclusion recursiva" y "doble inclusion" de los archivos .h en un proyecto donde varias veces se use el .h en cuestion, a veces las declaraciones se superponene en un mismo ambite y salen problemas de "definition duplicated" o cosas por el estilo indicando comoq eu las funciones y/o vatraibles  y/o tipos de datos son declarados dos veces.

slds.
QliX=D! - From the top of Tsunami

T-Mac

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: TAD
« Respuesta #15 en: Lunes 19 de Enero de 2004, 23:52 »
0
Cita de: "QliX=D!"
Cita de: "T-Mac"
HOLA !!!! soy nuevo en este foro, y tambien el el leguaje C

weno, quiero pedir ayuda, para una practica q tengo q entregar sobre TADs
y la verdadm no tengo ni idea...

weno lo q tengo q hacer es:

un programa en c q me permita "hacer un lista de alumnos matriculados en varios seminarios organizado la Facultad de fisica, dicha lista contiene los datos personales del alumno (nombre,apallidos y DNI) y el seminario en el q esta matriculado y estara implementada en una lista simplemente enlazada usando los codigos disponibles para este TAD.
se trata de realizar un programa q parmita procesar los siguientes:
* introducir elementos en la lista
* Borrar un alumno de la lista dado su DNI
* Listar todos los alumnos matriculados en un determinado seminario
*introducir elementos en la lista de forma ordenada, utilizando como indice el DNI (opcional)"

esto es todo, espero q alguien me pueda ayudar, por q stoy desesperado

 :(  , gracias y un saludo a to2
No me parece logico que te tengamos que solucionar el problema aca, por que en la forma en que lo escribis pareceria que pretendes qeu te hagamos el codigo y lo pongamos aca, si se supone que estas estudiadno estudie y resuelvalo como todo un señor!.
Ahora si queres una mano, si, pero si no tenes ni la mas remota idea de nada, te diria que estes mas metido en las clases para poder comprender los conceptos.

Pregunta puntual y la contesto sin problemas :D

slds.
no pretendo q me hagas el codigo, simplemete me gustaria una ayuda, una orientacion...

por ejemplo, tengo q hacer una pila, o una cola, o una pila enlazada...?

por lo pronto se q tengo q hacer un
un struct con campos para el
nombre
apellido
dni
y un puntero al mismo tipo de la lista inicializado a null


P.D: te parecera q lo q me pasa es q no estudio nada, pero a lo mejor es q para ti esto lo entiendes rapido, en cambio a mi me cuesta bastante

plaf

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: TAD
« Respuesta #16 en: Martes 20 de Enero de 2004, 01:57 »
0
si lo q quieres es q el programa funcione pero no te importa mucho la eficiencia, da lo mismo el tipo de lista q uses, es cosa de q al buscar informacion vayas recorriendo todos los puestos de a 1 y comparando el contenido con lo q buscas

cuando metas un dato nuevo, si tomas la opcion de meterlos ordenados, vas recorriendo la lista hasta encontrar un dni mayor/menor q el nuevo y ahi insertas el nuevo dato reajustando los punteros. para borrar tb, buscas el dni y antes de borrar el dato reajustas los punteros

en el struct te falto el seminario

karmakoma

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: TAD
« Respuesta #17 en: Martes 20 de Enero de 2004, 13:25 »
0
Hola

Yo lo haria de la siguiente forma:

Definiria un TAD lista enlazada y un programa que te controle la utilizacion del mismo. Serian dos modulos: la lista enlazada y el programa con la funcion main.

Una lista enlazada la puedes hacer de la siguiente manera:

En el archivo "lista.h" (p ejemplo) defines la estructura que sera cada uno de los nodos en la lista:

typedef struct {
   int objeto_entero; // esto sera el dato almacenado en cada nodo.
   Nodo *siguiente; // esto es un apuntador al siguiente elemento de la lista.
} Nodo;

En el archivo "lista.c" definirias las operaciones que te interese que realice la lista.

Luego puedes escribir un programa que utilice la lista donde incluyas "lista.h".

Espero que te sirva de ayuda. De todos modos hay cantidad de paginas por ahi que explican implementaciones de TAD's en C o Java o cualquier otro lenguaje.

Un saludo

QliX=D!

  • Miembro MUY activo
  • ***
  • Mensajes: 214
    • Ver Perfil
Re: TAD
« Respuesta #18 en: Martes 20 de Enero de 2004, 16:05 »
0
Cita de: "T-Mac"
Cita de: "QliX=D!"
Cita de: "T-Mac"
HOLA !!!! soy nuevo en este foro, y tambien el el leguaje C

weno, quiero pedir ayuda, para una practica q tengo q entregar sobre TADs
y la verdadm no tengo ni idea...

weno lo q tengo q hacer es:

un programa en c q me permita "hacer un lista de alumnos matriculados en varios seminarios organizado la Facultad de fisica, dicha lista contiene los datos personales del alumno (nombre,apallidos y DNI) y el seminario en el q esta matriculado y estara implementada en una lista simplemente enlazada usando los codigos disponibles para este TAD.
se trata de realizar un programa q parmita procesar los siguientes:
* introducir elementos en la lista
* Borrar un alumno de la lista dado su DNI
* Listar todos los alumnos matriculados en un determinado seminario
*introducir elementos en la lista de forma ordenada, utilizando como indice el DNI (opcional)"

esto es todo, espero q alguien me pueda ayudar, por q stoy desesperado

 :(  , gracias y un saludo a to2
No me parece logico que te tengamos que solucionar el problema aca, por que en la forma en que lo escribis pareceria que pretendes qeu te hagamos el codigo y lo pongamos aca, si se supone que estas estudiadno estudie y resuelvalo como todo un señor!.
Ahora si queres una mano, si, pero si no tenes ni la mas remota idea de nada, te diria que estes mas metido en las clases para poder comprender los conceptos.

Pregunta puntual y la contesto sin problemas :D

slds.
no pretendo q me hagas el codigo, simplemete me gustaria una ayuda, una orientacion...

por ejemplo, tengo q hacer una pila, o una cola, o una pila enlazada...?

por lo pronto se q tengo q hacer un
un struct con campos para el
nombre
apellido
dni
y un puntero al mismo tipo de la lista inicializado a null


P.D: te parecera q lo q me pasa es q no estudio nada, pero a lo mejor es q para ti esto lo entiendes rapido, en cambio a mi me cuesta bastante
El problema explicitamente dice que tenes que hacer una lista asi que manos a la obra! :P

Hay muchos ejemplos en la red de listas.
Preguntale al tio si no :D
QliX=D! - From the top of Tsunami

T-Mac

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: TAD
« Respuesta #19 en: Martes 20 de Enero de 2004, 22:03 »
0
muxas gracias plaf y  karmakoma por la ayuda, ya casi la stoy sacando  :D

weno un saludo, y si tengo algun problema volvere a preguntar

gracias

Nagisa

  • Miembro MUY activo
  • ***
  • Mensajes: 119
  • Nacionalidad: es
    • Ver Perfil
Re: TAD
« Respuesta #20 en: Domingo 1 de Febrero de 2004, 19:12 »
0
Veamos... Ya se que me vais a llamar pesao, pero es que no me hago con ello.

Supongamos, y ya dejo de lado los TADS, que tengo un conjunto de funciones que quiero agrupar en un paquete. Segun lo que me habeis dicho deberia de escribir algo asi:

Areas.h :

# ifndef AREAS               <----- Para evitar las inclusiones recursivas y eso...
# define AREAS        

int area_rect(int , int);     <------ Cabecera de mi funcion

# endif


Areas.c :

# include "areas.h"         <----- Hago referencia al .h

int area_rect(int base, int altura){     <------- Mi super funcion
  return base * altura;
}


Llegados a este punto escribo, en ventanita de MS-DOS, por supuesto:
gcc -Wall -c areas.c

y me sale el .o en el escritorio (vamos, donde debe). Asi que supongo que hasta aqui todo esta bien

Ahora, y es donde falla, intento importar mi paquete. Para ello hago:

prueba.c :

# include "areas.h"                 <------ Importo mi paquete
# include <stdio.h>                 <------ stdio para sacar el resultado por pantalla

int main(){
 printf("El area de un rectangulo de base %d y altura %d es : %d\n", 5, 8, area_rect(5,8));                              <---- Llamada a mi funcion        
 return 0;
}

Ahora COMPILO, pero no enlazo mi programa con

gcc -Wall -c prueba.c

y tambien me sale el .o en el escritorio

y a continuacion creo el programa con

gcc -Wall -o prueba.exe prueba.c

y me dice algo tan bonito como:

C:\DOCUME~1\ALEJAN~1\CONFIG~1\Temp\cca012121.o(.text+0x4d):prueba.c: undefined reference to 'area_rect'

Y si pongo

gcc -Wall -o prueba.exe prueba.c

me pone mas o menos lo mismo:

prueba.o(.text+0x4d):prueba.c: undefined reference to 'area_rect'



La verdad es que he seguido lo que me habeis dicho al pie de la letra, y no tengo ni idea de lo que le pasa. Tambien lo he intentado con los parametros que me ha dicho QliX=D!, pero el resultado es el mismo.
   

desorden

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: TAD
« Respuesta #21 en: Lunes 2 de Febrero de 2004, 04:57 »
0
Prueba ésto:
Código: Text
  1.  
  2. gcc areas.o prueba.o
  3.  
  4.  
desorden

Nagisa

  • Miembro MUY activo
  • ***
  • Mensajes: 119
  • Nacionalidad: es
    • Ver Perfil
Re: TAD
« Respuesta #22 en: Lunes 2 de Febrero de 2004, 19:30 »
0
:lol:  :lol:  :lol:  Vale, ya me funciona!! Muchas gracias!!!  :lol:  :lol:  :lol: