• Viernes 15 de Noviembre de 2024, 10:40

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - extremet

Páginas: [1]
1
C/C++ / Re: Para Que Se Usa-> Using Namespace Std;
« en: Viernes 1 de Julio de 2005, 00:40 »
En C++ se pueden declarar paquetes, que definen diferentes ámbitos para las variables, clases y funciones. Por ejemplo, a la hora de declarar variables, puedes hacer lo siguiente:

 namespace paquete1 {
    int a;
 }

 namespace paquete2 {
    int a;
 }

 Ahi tienes dos variables que se llaman igual, pero cada una dentro de un paquete. Para acceder a ellas pondrias paquete1::a , o paquete2::a.
Una forma alternativa de hacerlo es poner 'using namespace paquete1'. Así le dices al compilador que aunque pongas solo 'a', busque dentro de paquete1 esa variable.

Ahora al tema. En C++, la mayoría de las funciones que antes estaban sueltas en C, ahora van dentro del paquete std. Y como sería un engorro tener que escribir std::cout y cosas de esas todo el rato, pos se suele poner 'using namespace std' al principio para poder acceder al paquete std.

2
C/C++ / Re: Lectura De Parametros De Entrda
« en: Viernes 1 de Julio de 2005, 00:20 »
Si declaras el main de la forma  int main (int arc, char** argv)

podrás usar las variables argv[0], argv[1], etc.. que son cadenas que contienen los parámetros pasados al ejecutable. En tu caso, si el parámetro -inum es el segundo, lo tendrías en argv[2]. Es decir, argv[2] valdrá "-inum".

Ahora bien, si a tí lo que te interesa es el número, tendrás que hacer una conversión con la función int atoi(char*), que pasándole una cadena te devuelve el número entero representado. Sin embargo, como el número no empieza al principio, sino que antes tienes que comerte el "-" y la "i", puedes hacer lo siguiente:

 valor = atoi ((argv[2]+2))

Esto del argv[2]+2 parece algo raro... Hay que tener en cuenta que para C, el argv[2] solamente es un puntero al inicio de la cadena de caracteres. Como puntero, puedes incrementar su posición, de modo que así apuntara al inicio de la cadena más dos posiciones, es decir, leerá a partir del número.

Y ya está. Espero que te sirva.

3
C/C++ / Re: Listas Enlazadas
« en: Jueves 30 de Junio de 2005, 23:46 »
Una lista enlazada consiste en una serie de nodos o elementos donde, además de almacenarse el dato en sí, tiene información que le indica cuál es el nodo siguiente y/o anterior.

En C esto se consigue mediante las estructuras. Una estructura (struct) agrupa un conjunto de variables o campos, y permite trabajar con ella como si se tratara de un tipo de dato más. Y la forma de indicarle a cada nodo cuál es su nodo siguiente es usando variables de tipo puntero en la estructura.

Un poco de código para que lo entiendas:

  typedef struct _nodo {
    int valor;
    _nodo* anterior;
    _nodo* siguiente;
 } nodo;

 Las variables anterior y siguiente son punteros a nodo, es decir, enlazan el nodo actual a otros nodos. Así para enlazar dos nodos, únicamente debes poner algo como:
 
  nodo1.siguiente = &nodo2;
  nodo1.anterior  =  &nodo0;

En una lista enlazada lo normal es que haya un nodo que sea el primero y otro que sea el último. Estos casos son especiales. El primer nodo, su puntero anterior apuntará a NULL, es decir, no existe un nodo anterior. El último nodo es similar, pero con el puntero a siguiente.

Por último, para recorrer una lista enlazada, basta con crear una variable auxiliar que sea puntero a nodo:
 
  nodo* aux;

Luego, con un bucle se puede recorrer toda la lista de la siguiente manera (es solo un ejemplo):

 aux = &primer_nodo;
 while (aux != NULL) {
    aux = aux->siguiente;
    // ... y lo que sea
 }


Básicamente, la idea es jugar con esto. No he querido entrar en más detalle porque creo que esto te será suficiente. No obstante, si necesitas ayuda sobre punteros, o sintaxis de C, no dudes en preguntar.

Páginas: [1]