Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - Ccomplica

#1
Buenas tardes gente! Tengo en mi codigo un algoritmo para guardar en 3 variables de tipo Cadena, las palabras de la frase divididas por un caracter espacio. Pero necesito diferenciar y hacer que en el tercer parametro me divida pero dejando de tomar en cuenta los espacios, por ejemplo, en este momento si yo ingreso:

Hola hola123 hola

el algoritmo me guarda
comando=Hola
parametro1=hola123
parametro2=hola

en cambio si le ingreso....

Hola hola123 hola aasdas asdasd

ya no me guarda nada y me da segmentation fault.

Yo necesito ingresar en parametro2 una cadena que puede contener espacios tambien.

Aca el codigo:

Código (cpp) [Seleccionar]
        fgets(frase,100,stdin); //frase es un arreglo de caracteres de tamaño 100.
        segmento=strtok(frase, " "); //parametro1, comando y parametro2 son un typedef char* Cadena
        contador=0;
        while(segmento!=NULL){
             if(contador == 0)
                comando=segmento;   // GUARDA EL COMANDO.

             if(contador == 1)
                parametro1=segmento;    // GUARDA EL PRIMER PARAMETRO.

             if(contador == 2)
                parametro2=segmento;    // GUARDA EL SEGUNDO PARAMETRO.

             segmento=strtok(NULL," ");
             contador++;
    }


como puedo modificarlo para que haga lo que yo quiero?
#2
Cita de: xaps en 21 Noviembre 2013, 21:03 PM
Te recomiendo que en la clase ListaArchivos te hagas una función copiadora o que sobrecargues el operador de asignación, puesto que puede que el compilador esté intentando usar un método inapropiado y haga saltar el error.

Por cierto, ¿no deberías cambiar en la tercera línea de ambos códigos el nombre _listaArchivos por ListaArchivos?

Saludos
Buen día xaps, gracias por responder! Te comento que ListaArchivos es una estructura, o vos te referias al void insertarArchivoListaArchivo? A que te refieres cuando me dices una funcion copiadora?
En cuanto a la definicion de variables en las terceras lineas estan bien para este codigo porque la estructura (definida en un header) lo permite.

Gracias de nuevo,

Ccoomplica
#3
Buenas tardes comunidad. Tengo una consulta sobre un error tipo Segmentation fault que me tira el siguiente codigo cuando quiero igualar una lista creada, a una que está incluida en otra estructura. El código es el siguiente:

Funcion para crearArchivo en el directorio.

Código (cpp) [Seleccionar]
Archivo crearArchivoDirectorio(Directorio dir, Cadena nombre){
    Archivo arch;
    ListaArchivos archivoLista=new _listaArchivos;

    archivoLista=crearListaArchivos();

    arch=crearArchivo(nombre);
    printf("archivo creado");

    insertarArchivoListaArchivos(archivoLista,arch);
    printf("lista creada");

    dir->lista=archivoLista; //ACA ME TIRA EL ERROR EN EL DEBUGGER

    return arch;
};


Funcion para insertar archivo en lista de archivos:
Código (cpp) [Seleccionar]
void insertarArchivoListaArchivos(ListaArchivos &lista, Archivo archivo){

    ListaArchivos aux, nuevoArch=new _listaArchivos;

    nuevoArch->siguiente=NULL;
    nuevoArch->archivo=archivo;

    if(lista==NULL){
        lista=nuevoArch;
    }
    else{
        aux=lista;

        while(aux->siguiente!=NULL)
            aux=aux->siguiente;
        aux->siguiente=nuevoArch;
    }
};


La cosa es así: Yo le paso a la primera funcion una estructura de tipo Directorio, y una cadena con el nombre al que le quiero asignar al archivo a incluir en la lista de archivos dentro de la estructura directorio.

El error me lo tira cuando quiero igualar la lista creada localmente en la primera funcion, con la lista que está declarada e inicializada en la estructura directorio.

Supongo que es me falta reservar espacio de memoria en algún lado, no me doy cuenta donde...

Alguna idea?

Desde ya, cualquier aporte sera muy agradecido! Si tienen dudas sobre el codigo pregunten.


Saludos!
#4
Buenas tardes, vuelvo a ustedes con una pregunta concreta sobre dos structs.

Tengo la estructura _archivo


Código (cpp) [Seleccionar]
struct _archivo{
    Cadena Contenido;
    Cadena Atributos;
    Cadena nombreArchivo;
};
typedef _archivo* Archivo;


, que guarda nombre, atributos y contenido de un archivo, Y la estructura _listaArchivo:

Código (cpp) [Seleccionar]
struct _listaArchivos{
    _archivo *Archivo;
    _listaArchivos *Siguiente;
};
typedef _listaArchivos *ListaArchivos;


, la cual debera poder ser capaz de hacer una lista simple de tipo archivo....
No se como definir estas dos struct para hacer funcionar esta realidad planteada. Alguna idea? 
#5
Programación C/C++ / Problema structs
29 Octubre 2013, 22:52 PM
Código (cpp) [Seleccionar]
struct _directorio{
    Cadena nomDir;
    _directorio *ptrIZQ;
    _directorio *ptrDER;
    _archivo *ptrArchivo;
};
typedef _directorio *Directorio;


Código (cpp) [Seleccionar]
struct _sistema{
    _directorio *ptrDirectorio;
};
typedef _sistema *Sistema;


Código (cpp) [Seleccionar]
typedef struct _archivo{
Cadena Contenido;
Cadena Atributos;
Cadena nombreArchivo;
  _archivo *siguiente;
};
typedef _archivo *Archivo;


Código (cpp) [Seleccionar]
struct _listaArchivos{
    Cadena nomArchivo;
    _listaArchivos *Siguiente;
};
typedef _listaArchivos *ListaArchivos;


Cada una de estas estructuras son la estructura de varios headers en los que tengo definidas funciones varias, con el proposito de crear algo similiar a un Filesystem... o sea tiro comando parametro.. y manipulo el filesystem, creo, elimino y modifico directorios, archivos, etc....
Quiero saber donde esta mi error al definir todos ellos, porque me tira errores de tipo:

"ISO C++ forbids declaration of `archivo' with no type" (en el header de directorio)

o tambien "error: `Archivo' does not name a type" (en el header de listaArchivo)

... Supongo que podria ser un problema de definicion, o de incluir que header en que header... Pero no me doy cuenta. Si no me doy a entender bien haganmelo saber.

Desde ya muchas gracias.-
#6
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;
#7
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.-