Programación General > C/C++

 Re: TAD

(1/5) > >>

lydin:
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 ©:
Hola, quisiera ayudarte, pero no se del tema. Solo queria consultarte que son los TAD?.. bueno, saludos y gracias. :guitar:

mabrev:
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:
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:
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

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa