Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Esto se puede en c++

Estas en el tema de Esto se puede en c++ en el foro de C/C++ en Foros del Web. hola a todos, veran es que necesito realizar un proyecto que simule mensajes de texto de un telefono movil en c o c++ (no se ...
  #1 (permalink)  
Antiguo 29/05/2012, 19:42
 
Fecha de Ingreso: noviembre-2011
Ubicación: Cartago
Mensajes: 39
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta Esto se puede en c++

hola a todos, veran es que necesito realizar un proyecto que simule mensajes de texto de un telefono movil en c o c++ (no se necesita comunicarse con nadie), pero como todo tiene un menu para crear msj, enviados, recibidos, borradores, bueno por ahi anda todo, aun pienso en como desarrollar eso y me surgio una duda de que si uno puede crear una lista pero con archivos.txt, por ejemplo si creo un mensaje ese mensaje lo guardo en un archivo.txt con un nombre de la persona a quien se la envio y asi cada vez que creo uno me crea un archivo diferente, se puede hacer que en mensajes enviados me muestre el titulo de cada uno de esos mensajes y escoger una opcion ya sea con un swith y ver su contenido...
Si alguien tiene una idea mejor, genial que me ayudara porque talvez me estoy queriendo complicar mas
  #2 (permalink)  
Antiguo 29/05/2012, 21:20
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Esto se puede en c++

Hola! No esta mal la idea que tenes, y con respecto a crear una archivo diferente por cada msj q creas si se puede hacer. Lo que yo cambiaria es:
Cita:
se puede hacer que en mensajes enviados me muestre el titulo de cada uno de esos mensajes
Lo que haria es que en mensajes enviados muestre el nombre a quien se lo envio y una vez seleccionado el nombre, abrir ese archivo y mostrar el contenido(el mensaje)

Saludos
  #3 (permalink)  
Antiguo 29/05/2012, 21:23
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Esto se puede en c++

Pero que pasaria si se envia dos mensajes a una misma persona?? Deberias buscar otro nombre para el archivo.
Yo lo que haria es crear una lista dinamica. Cuyos nodos tengan los siguientes datos:

destinatario
hora y fecha
mensaje

Si necesitas guardar los daos los metes todos en un mismo archivo. Todos bien compactados.

Si necesitas ayuda en esto no dudes en pedirla! Saludos
  #4 (permalink)  
Antiguo 29/05/2012, 22:05
 
Fecha de Ingreso: noviembre-2011
Ubicación: Cartago
Mensajes: 39
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Esto se puede en c++

si tienen razon, entnces cual seria la manera mas accesible para simular eso, se podria utilizar una pila y asi mostrar los titulos de mensajes, pero no se como hacer aun. y como se crea una lista dinamica?
  #5 (permalink)  
Antiguo 30/05/2012, 05:10
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Esto se puede en c++

Una lista es parecida a una lista, nada mas que podes ingresar elementos en cualquier posicion o borrar de cualquier posicion. Pero la estructura es la misma. En el nodo tenes un puntero al siguiente elemento.

Si sabes hacer una pila, las listas no son mucho mas complicadas.

Saludos
  #6 (permalink)  
Antiguo 30/05/2012, 13:37
 
Fecha de Ingreso: diciembre-2008
Mensajes: 50
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Esto se puede en c++

Cita:
Iniciado por sam90 Ver Mensaje
Pero que pasaria si se envia dos mensajes a una misma persona?? Deberias buscar otro nombre para el archivo.
Yo lo que haria es crear una lista dinamica. Cuyos nodos tengan los siguientes datos:

destinatario
hora y fecha
mensaje

Si necesitas guardar los daos los metes todos en un mismo archivo. Todos bien compactados.

Si necesitas ayuda en esto no dudes en pedirla! Saludos
Y una vez guardados en el archivo, ¿Cómo los leerias para volver a convertirlos en lista?

Y gus, aquí tengo un ejemplo de lista tipo pila que hice el otro día cuando estudiaba para un ezamen... pero para que deje de ser pila sólo necesitas poder extraer elementos de cualquier parte.

Código C:
Ver original
  1. /*Ejemplo muy sencillo de lista enlazada. En este caso concreto es un LIFO o pila*/
  2.  
  3. #include<stdio.h>
  4. #include<string.h>
  5. #include<stdlib.h>
  6.  
  7. typedef struct lista
  8. {
  9.   char nom[40];
  10.   struct lista *psig;
  11. } lista;
  12.  
  13. lista *pmaestro = NULL; /*Puntero maestro (siempre el primer elemento de la lista)*/
  14.  
  15. /*****************INSERTAR********************/
  16.  
  17. void insertar(char nom[]){
  18. lista *q = (lista*)malloc(sizeof(lista)); /*Crea un puntero en memoria de tipo lista*/
  19. if(q==NULL)printf("Falta memoria");
  20. else{
  21. strcpy(q->nom, nom); /*Copiar la cadena (destino, origen)*/
  22. q->psig = pmaestro; pmaestro = q; /*Asigna el puntero *psig del elemento recien creado al maestro, y el maestro al elemento*/
  23. }
  24. }
  25.  
  26. /*****************IMPRIMIR********************/
  27.  
  28. void imprimir(void){
  29. lista *q = pmaestro; /*Crea un puntero a lista que apunte al último elemento introducido*/
  30. while(q!=NULL) {printf("\n%s", q->nom); q = q->psig;}; /*Imprime el último nombre introducido y pasa el puntero al anterior*/
  31. puts("\n");
  32. }
  33.  
  34. /*******************MAIN**********************/
  35.  
  36. main()
  37. {
  38. puts("Este es un ejemplo de pilas y colas (listas enlazadas)\n");
  39. int i, n;
  40. char nom[40];
  41. puts("Cuantos datos quiere introducir?: ");
  42. scanf("%d", &n);
  43. puts("Ahora introduzca cada uno separado por <Enter>: ");
  44.  
  45. for(i=0; i<n; i++) {gets(nom); insertar(nom);}
  46.  
  47. printf("Los elementos introducidos son: ");
  48. imprimir();
  49. }

En el caso de que quisieras que no fuera una pila como tal sólo tendrías que modificar el hecho de que se puedan borrar archivos intermedios.

Para borrar el succesor de un elemento referenciado por el puntero r, por ejemplo:
Código C:
Ver original
  1. q = r->siguiente;
  2. r->siguiente = q->siguiente;
  3. free(q);

A eso si no tienes el dato referenciado, simplemente buscas el dato con una búsca secuencial que termina cuando encuentra el dato en concreto o o llega al final de la lista...
  #7 (permalink)  
Antiguo 30/05/2012, 15:50
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Esto se puede en c++

de forma binaria guardaria nodo por nodo de la lista...

Usando lo inversa, iria yendo nodo a nodo del archivo

Si con fwrite lo guardas, con fread lo lees. Lo unico que tenes que hacer es volver a retocar los punteros para que se te arme de nuevo la lista... Cuando llegas al final del fichero se termina la lista.

Saludos
  #8 (permalink)  
Antiguo 31/05/2012, 22:43
 
Fecha de Ingreso: noviembre-2011
Ubicación: Cartago
Mensajes: 39
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Esto se puede en c++

Gracias, por sus ayudas las tomare en cuenta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:59.