elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15
11  Programación / Programación C/C++ / Re: Liberar memoria en listas simplemente enlazada [C] en: 26 Junio 2015, 23:27 pm
Gracias ivancea96 ha sido de muchas ayuda tus post.-

Daniel
12  Programación / Programación C/C++ / Re: Liberar memoria en listas simplemente enlazada [C] en: 26 Junio 2015, 23:10 pm
¿Debo suponer que si no la libera el programa el compilador lo realiza igual al cerrarse el programa?.-

Saludos.
Daniel
13  Programación / Programación C/C++ / Liberar memoria en listas simplemente enlazada [C] en: 26 Junio 2015, 22:01 pm
Hola gente.
Los molesto porque estoy estudiando listas simples enlazadas, créanme que nunca un tema de c me cuesta tanto entenderlo, el caso es que encontré un video con este código y me pareció sencillo para ver si de una vez por todas  entiendo estas venditas listas.-
La pregunta es ¿debo liberar memoria reservada con malloc?.-

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct{
  5. struct nodo* siguiente;
  6. char* nombre;
  7. } nodo;
  8.  
  9. nodo* primer = NULL;
  10. nodo* ultimo = NULL;
  11.  
  12. void agregar(nodo* _nodo){
  13. _nodo -> siguiente = NULL;
  14. if(primer == NULL){
  15. primer = _nodo;
  16. ultimo = _nodo;
  17. }else{
  18. ultimo -> siguiente = _nodo;
  19. ultimo = _nodo;
  20. }
  21. }
  22.  
  23. int main(){
  24. nodo* primerNodo = malloc(sizeof(nodo));
  25. primerNodo -> nombre = "Primer Elemento";
  26. nodo* segundoNodo = malloc(sizeof(nodo));
  27. segundoNodo -> nombre = "Segundo Elemento";
  28. nodo* tercerNodo = malloc(sizeof(nodo));
  29. tercerNodo -> nombre = "Tercer Elemento";
  30.  
  31. agregar(primerNodo);
  32. agregar(segundoNodo);
  33. agregar(tercerNodo);
  34. nodo* i = primerNodo;
  35. while(i != NULL){
  36. printf("%s\n", i -> nombre);
  37. i = i -> siguiente;
  38. }
  39. return 0;
  40. }


Desde ya muchas gracias.-

Saludos.
Daniel
14  Programación / Programación C/C++ / Re: Lista enlazada simple – listas ligadas [C] en: 9 Junio 2015, 14:50 pm
Hola.
Como siempre muchas gracias por ocuparte, te explico lo que me pasa, teoría  leí más de 20 páginas lo que necesito es que alguien me dé un ej. de código para tener como referencia y poder estudiarlo a partir del mismo.-

Saludos.
Daniel
15  Programación / Programación C/C++ / Lista enlazada simple – listas ligadas [C] en: 9 Junio 2015, 02:12 am
Hola gente.
Como verán estoy tratando de interpretar las listas ligadas y les aseguro que en 10 días tan sólo pude construir este pequeño programa, lo que me falta saber que es más conveniente, declarar las variables estructura cómo globales o dentro la función principal y pasarlas como parámetro a las funciones.-
Por último necesitaría que alguien me ayude a construir la función borrar_elemento, no pude poner ninguna línea.-

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. struct _agenda{
  6. char nombre[30];
  7. char telefono[12];
  8. struct _agenda *siguiente;
  9. };
  10.  
  11. struct _agenda *primero, *ultimo;
  12.  
  13. void mostrar_menu();
  14. void agregar_elemento();
  15. void mostrar_lista();
  16.  
  17. int main(void){
  18. char opcion, ch;
  19.  
  20. primero = (struct _agenda *) NULL;
  21. ultimo = (struct _agenda *) NULL;
  22. do{
  23. mostrar_menu();
  24. opcion = getchar();
  25. while((ch = getchar()) != EOF && ch != '\n');
  26. switch ( opcion ){
  27. case '1': agregar_elemento();
  28. break;
  29. case '2':  printf("No disponible todavía!\n");
  30. break;
  31. case '3': mostrar_lista(primero);
  32. break;
  33. case '4': exit( 1 );
  34. default: printf( "Opción no válida\n" );
  35. break;
  36. }
  37. } while (opcion!='4');
  38.  
  39. return 0;
  40. }
  41.  
  42. void mostrar_menu(){
  43. system( "CLS" );
  44. printf( "\n\n ===== Menu =====" );
  45. printf( "\n 1 - Agregar elemento" );
  46. printf( "\n 2 - Borrar elemento" );
  47. printf( "\n 3 - Mostrar elementos" );
  48. printf( "\n 4 - Salir" );
  49.  
  50. printf("\n\n Escoge una opcion......: ");
  51. }
  52.  
  53. /* Con esta función añadimos un elemento al final de la lista */
  54. void agregar_elemento(){
  55. struct _agenda *nuevo;
  56.  
  57. /* reservamos memoria para el nuevo elemento */
  58. nuevo = (struct _agenda *) malloc (sizeof(struct _agenda));
  59. if( nuevo == NULL){
  60. printf(" \n No hay memoria disponible");
  61. }
  62. printf( "\n ===== Nuevo elemento =====" );
  63. printf( "\n Nombre.....:" );
  64. gets( nuevo->nombre );
  65. printf( "\n Telefono...:" );
  66. gets( nuevo->telefono );
  67.  
  68. /* el campo siguiente va a ser NULL por ser el último elemento*/
  69. nuevo->siguiente = NULL;
  70.  
  71. /* ahora metemos el nuevo elemento en la lista. lo situamos al final de la lista */
  72. /* comprobamos si la lista está vacía. si primero==NULL es que no
  73.          hay ningún elemento en la lista. también vale ultimo==NULL */
  74. if( primero == NULL ){
  75. printf( "\n Primer elemento" );
  76. primero = nuevo;
  77. ultimo  = nuevo;
  78. }else{
  79. /* el que hasta ahora era el último tiene que apuntar al nuevo */
  80. ultimo->siguiente = nuevo;
  81. /* hacemos que el nuevo sea ahora el último */
  82. ultimo = nuevo;
  83. }
  84. }
  85.  
  86. void mostrar_lista(){
  87. struct _agenda *auxiliar; /* lo usamos para recorrer la lista */
  88. int i=0;
  89.  
  90. auxiliar = primero;
  91. printf( "\nMostrando la lista completa:\n ");
  92. while( auxiliar != NULL ){
  93. printf( "\n Nombre: %s, Telefono: %s",
  94. auxiliar->nombre,auxiliar->telefono);
  95. auxiliar = auxiliar->siguiente;
  96. i++;
  97. }
  98. if( i==0 ){
  99. printf( "\nLa lista está vacía!!\n" );
  100. }
  101. }
  102.  
  103. //http://www.santiagoapostol.net/srca/cursoc/cursoc22.html#anadir

Desde ya muchas gracias por la ayuda que deseen brindarme.-   

rir3760, no tuve internet por 10 días y no pude responderte al otro tema, luego me ocupo.-

Saludos.
Daniel
16  Programación / Programación C/C++ / Re: Copiar en archivo frases con varias líneas(renglones)[C] en: 17 Mayo 2015, 19:07 pm
Hola.
Sólo a titulo aclaratorio, no olvides que el archivo va a tener por ej. 50 frases distintas, tengo que implementar alguna manera para saber dónde comienza y termina una determinada frase.-
Por el momento, el ej. Que dejo a continuación me parece viable y sino podría dejar un espacio en blanco entre una frase y otra.- 

Citar
Cada vez que emites                                                                                        1
un juicio o una crítica,                                                                                       1
Estás enviando algo que                                                                                    1
terminará por volver a ti.-                                                                                 1
Abraza las cosas y personas malas como si fueran tu más preciada joya,              2
son tus más grandes maestros de paciencia sabiduría y amor                               2
y cuando lo abrazas dejan de causar dolor.-                                                        2
-------------------------------------                                                                         3 
-------------------------------------                                                                         3
Por el momento(atento a mis conocimientos) me parece una aceptable solución.-     

Saludos.
Daniel   
17  Programación / Programación C/C++ / Re: Copiar en archivo frases con varias líneas(renglones)[C] en: 17 Mayo 2015, 15:35 pm
Hola Ivancea96.
Evidentemente no logro ser lo suficientemente claro, si estuviéramos frente a la misma computadora estoy segurísimo que me entenderías pero escribiendo no logro expresar con claridad lo que deseo hacer (por lo menos en este caso).-
Ahora mismo se me antoja declarar un arreglo char de 10 x 80 meterlo en un bucle y con esto en cada Enter logro el carácter de nueva línea, luego al volcarlo a un archivo obtendria el cometido (me parece), lo que no puedo entender todavía es como imprimirlo en pantalla desde el archivo.-
Ejemplo:
Citar
Cada vez que emites
un juicio o una crítica,
Estás enviando algo que
terminará por volver a ti.-
     
Suponiendo que para buscar en el archivo la frase recuerdo que contenía la palabra algo, ¿Qué patrón (índice) utilizo para mostrar la frase completa?.-
Voy a seguir practicando, seguramente no estoy muy lejos de lograrlo, si tenes algo más para aportar, muy agradecido.-

Saludos.
Daniel   
18  Programación / Programación C/C++ / Re: Copiar en archivo frases con varias líneas(renglones)[C] en: 17 Mayo 2015, 03:59 am
Hola.
Lo que quiero es escribir en un archivo frases con más de un renglón (esto de renglón desconozco si es correcto) y luego recuperar lo escrito para mostrarlo en pantalla, lo que pasa es que me parece que debería tener un índice para hacer un filtro para cada frase, si lo hago con un bucle no sé cómo hacer para que luego el programa sepa donde comienza una frase y cuando termina y comienza la siguiente (que lio).-
Espero que se entienda un poco más.-

Saludos.
Daniel   
19  Programación / Programación C/C++ / Copiar en archivo frases con varias líneas(renglones)[C] en: 16 Mayo 2015, 21:55 pm
Hola a todos.-

Citar
Cada vez que emites
un juicio o una crítica,
Estás enviando algo que
terminará por volver a ti.-
Para hacer algo como esto se me antoja declarar una estructura con 4 variable char y 4 int (índice) para poder luego buscar alguna palabra que haga referencia a la frase y poder imprimirla filtrándola por el índice, consideran que estoy bien encaminado o lo arian de otra manera.-

Desde ya muchas gracias por el tiempo que le dediquen al tema.-

Saludos.
Daniel
20  Programación / Programación C/C++ / Re: Pasar estructura a archivo distinto del que contiene la función main[C] en: 12 Mayo 2015, 04:11 am
Hola.
Funciona a la perfección, muchas gracias.-
Citar
Con todo no se recomienda incluir mediante directiva del preprocesador una unidad (extensión ".c") ya que pueden generarse otros errores como la definición múltiple de una función. Hay algunos temas sobre programación modular en la base de datos de los foros, los puedes consultar mediante el motor de búsqueda.
Ya me pongo a documentarme sobre el tema.-

Saludos.
Daniel
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines