Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ccomplica en 25 Octubre 2013, 02:35 am



Título: Presentacion y dudas varias.
Publicado por: Ccomplica en 25 Octubre 2013, 02:35 am
Buenas noches foreros!

Me llamo Sebastian, tengo 21 y estoy estudiando programacion a nivel tecnico en una universidad de Uruguay. Espero poder ayudar mas adelante y obtener respuesta en algunos problemas que se me han planteado, si fueran tan amables.

El problema que tengo que resolver es hacer un programa en C++ que funcione como una especie de filesystem, o sea, escribis comando un comando, y tales parametros... y el programa te va creando el filesystem.

Se compone de varios tipos... Sistema, Directorio, Archivo y ListaArchivo.
Yo necesito crear una estructura para cada uno de estos muchachos de forma que logre despues programar funciones que vayan formando el arbol de directorios con sus archivos, esto funciona con punteros... Ellos me dieron los headers de cada tipo, pero no entiendo como puedo definirlos. Se les ocurre como?
Ademas, quisiera saber como debo interpretar el asterisco en el typedef _Eltipodedato*


/* el archivo debe contar con nombre, atributos de e/s y un contenido de tipo cadena */

struct _archivo{

}
typedef _archivo* Archivo;


/* el directorio debe contar con un nombre de directorio */
struct _directorio{

}

typedef _directorio* Directorio;

/* la lista de archivos debe contener una lista con todos los archivos en cierto directorio */
struct _listaArchivos{

}
typedef _listaArchivos* ListaArchivos;

/* por ultimo la estructura del sistema debe ser la necesaria para manipular todo el arbol a medida que es creado */
struct _sistema{

}
typedef _sistema* Sistema;

Si se les ocurre algo me salvan la vida! Cualquier aporte es agradecido! Desde ya muchas gracias a todos.

Ccomplica.-


Título: Re: Presentacion y dudas varias.
Publicado por: amchacon en 25 Octubre 2013, 09:09 am
Un asterisco significa que es un puntero.

Y lo siento, pero no hacemos tareas desde cero. Si tienes alguna duda concreta si puedes hacerla.


Título: Re: Presentacion y dudas varias.
Publicado por: eferion en 25 Octubre 2013, 09:10 am
Ya que estás programando en c++, lo lógico es que hicieses uso de clases, no de structs. En c++ son muy similares pero es muchísimo más natural utilizar clases. No se qué sentido tiene que intenten enseñarte a programar c++ y te obliguen a meter structs al estilo de c.

En cualquier caso, deberías acostumbrarte a leer documentación... ya que al menos en este mundillo va a ser algo básico. Si no te gusta leer documentación deberías plantearte el dedicarte a otra cosa.

Te lo digo básicamente porque si tú pones "structs c" en google, por ejemplo, vas a encontrar documentación de sobra para poder hacer lo que quieres... de hecho la primera entrada, por ejemplo, que es la de la wikipedia, te explica todo lo que necesitas.

Una cosa es que estés atascado en una parte del código y no sepas que falla y otra muy diferente es que no hayas escrito una sola línea.

Ademas, quisiera saber como debo interpretar el asterisco en el typedef _Eltipodedato*

Ese asterisco está indicando que el tipo que estás definiendo va a funcionar como un puntero.





Título: Re: Presentacion y dudas varias.
Publicado por: Ccomplica en 25 Octubre 2013, 14:39 pm
No pretendo que me hagan ninguna tarea desde cero mi amigo. Pregunto si alguien tiene alguna idea de como puedo presentar las estructuras del programa. Nada mas. Te pido disculpas si me exprese mal.

Mi otra duda la plantie mal, yo tengo una estructura de este tipo:

struct _archivo{

}

y en el header que me dan ellos crea un tipo de datos para nombrar a esa estructura, me pregunta es porque ponen el asterisco del lado derecho del nombre del tipo, en vez de a la izquierda, que diferencia plantea eso? Gracias.

typedef _archivo* Archivo;


Título: Re: Presentacion y dudas varias.
Publicado por: rir3760 en 25 Octubre 2013, 15:53 pm
me pregunta es porque ponen el asterisco del lado derecho del nombre del tipo, en vez de a la izquierda, que diferencia plantea eso? Gracias.

typedef _archivo* Archivo;
Tengo mis dudas sobre tu pregunta.

En una declaración después del tipo (esto es, a su derecha) se puede utilizar un asterisco para indicar que la variable declarada (o alias en el caso de typedef) es un puntero. Por ejemplo:
Código
  1. struct _archivo {
  2.  
  3. };
  4.  
  5. // ...
  6.  
  7. // "Archivo" es un alias o nombre alternativo de "_archivo *"
  8. typedef _archivo *Archivo;
  9.  
  10. // "p" es un puntero de tipo "_archivo *"
  11. _archivo *p;

El asterisco solo se utiliza a la izquierda de una variable cuando esta es un puntero, ahí el carácter '*' es el operador de indirección y permite acceder al objeto en la dirección indicada:
Código
  1. struct _archivo {
  2.  
  3. };
  4.  
  5. // ...
  6.  
  7. _archivo foo;
  8. _archivo bar;
  9.  
  10. // "p" es un puntero de tipo "_archivo *"
  11. _archivo *p;
  12.  
  13. // ...
  14.  
  15. // Almacenamos la direccion de "foo" en "p"
  16. p = &foo;
  17.  
  18. // ...
  19.  
  20. // Accedemos a la variable "foo" utilizando indireccion
  21. bar = *p;

Si es otra cosa entonces por favor trata de preguntar de una forma mas clara y si es posible con un ejemplo.

Todo eso debe describirse en tu material de referencia, busca las secciones sobre estructuras, punteros y uso de alias (mediante typedef).

Un saludo