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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Progrma en C++. No encuentro el error en: 9 Mayo 2015, 17:17 pm
Buenas a todos, estoy haciendo un ejercicio en C++ en el cual tengo un error que no comprendo de donde proviene y me gustaria que me echaseis una mano si no os parece mal.

El caso es que tengo que crear una lista con estructura dinamica con 2 funciones (realmente mas pero tengo el fallo ahi). 1 funcion es para añadir un nodo al principio de la lista y otro para añadirlo al final. El del principio me va bien pero el del final me aparece un error y no consigo averiguar donde falla. Gracias por la ayuda!!!

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void insertar_al_principio(struct s_nodo *&p);
  6. void insertar_al_final(struct s_nodo *&p);
  7.  
  8. struct s_nodo
  9. {
  10. int numero;
  11. struct s_nodo *siguiente;
  12. };
  13.  
  14. int main(void)
  15. {
  16. struct s_nodo *principio; //marca el principio de la lista
  17.  
  18. cout << "-----  INSERTAR AL PRINCIPIO  -----" << endl << endl;
  19. insertar_al_principio(principio);
  20. cout << "-----  INSERTAR AL FINAL -----" << endl << endl;
  21. insertar_al_final(principio);
  22.  
  23. return 0;
  24. }
  25.  
  26. void insertar_al_principio(struct s_nodo *&p)
  27. {
  28. struct s_nodo *nuevo; //para añadir el nuevo nodo
  29.  
  30. nuevo = new struct s_nodo;
  31.  
  32. cout << "Escribe el numero para insertarlo al principio de la lista:    ";
  33. cin >> nuevo->numero;
  34.  
  35. if (p == NULL)
  36. {
  37. p = nuevo;
  38. nuevo->siguiente = NULL;
  39. cout << endl << "El nuevo nodo es el primero de la lista" << endl << endl;
  40. }
  41. else
  42. {
  43. nuevo->siguiente = p;
  44. p = nuevo;
  45. cout << endl << "Añadido nuevo nodo al principio de la lista vacia" << endl << endl;
  46. }
  47.  
  48. }
  49.  
  50.  
  51.  
  52. void insertar_al_final(struct s_nodo *&p)
  53. {
  54. struct s_nodo *nuevo; //para añadir el nuevo nodo
  55. struct s_nodo *aux;    // sirve para recorrer la lista en busca de el ultimo nodo
  56.  
  57. nuevo = new struct s_nodo;
  58.  
  59. cout << "Escribe un numero para insertarlo al final de la lista:    ";
  60. cin >> nuevo->numero;
  61. nuevo->siguiente = NULL;
  62.  
  63. if (p == NULL)
  64. {
  65. p = nuevo;
  66. cout << endl << "Lista vacia. Nodo añadidoal principio" << endl << endl;
  67. }
  68. else
  69. {
  70. aux = p;
  71. while (aux->siguiente != NULL)
  72. {
  73. aux = aux->siguiente;
  74. }
  75.  
  76. aux->siguiente = nuevo;
  77. cout << endl << "Añadido al final de la lista" << endl << endl;
  78. }
  79.  
  80. }


Cualquier ayuda sera bienvenida : )

Mod: Modificado con etiquetas GeSHi para hacer el código más legible
2  Programación / Programación C/C++ / error en mi programa con lista dinamica en: 2 Enero 2015, 17:10 pm
Buenas a todos, estoy aprendiendo C/C++. Bueno he llegado un tramo en C++ que me enseña a crear listas dinamicas, pilas y colas. El caso es que he hecho un ejercicio que aparentemente debe estar bien, lo he repasado muchas veces y sigo sin comprender que es lo que falla. Decir tambien que aunque se que pueden haber maneras mejores de hacerlo el ejercicio me pide que utilice exclusivamente lo aqui expuesto. El ejercicio pide que tengo que crear una lista con una funcion en la que se vayan añadiendo mas nodos al final de la lista. El programa realmente es mucho mas extenso ya que hay una funcion que inserta un nodo al principio y no me da ningun problem  pero el depurador saca un error de segmentation fault cuando llega al punto de la funcion "insertar al final", mas concretamente en la linea <while (aux->siguiente != NULL)> que hay en la funcion.

Código:
#include <iostream>
#include <cstdlib>

using namespace std;

struct t_nodo
{
  int dato;
  struct t_nodo *siguiente;
};

void insertar_al_final (struct t_nodo *&p);

int main(void)
{
  struct t_nodo *principio;
  cout << "\n---- INSERTAR AL FINAL ----";
  cin.get();cin.get();
  insertar_al_final(principio);

  return 0;
}

//FUNCION INSERTAR AL FINAL
void insertar_al_final(struct t_nodo *&p)
{
  struct t_nodo *nuevo_nodo;
  struct t_nodo *aux;

  nuevo_nodo = new struct t_nodo;

  cout << "Introduzca el numero:     ";
  cin >> nuevo_nodo->dato;
  nuevo_nodo->siguiente = NULL;

  if (p != NULL)
  {
    aux = p;

    while (aux->siguiente != NULL)    //aqui es donde marca el problema
    {
      aux = aux->siguiente;
    }
    aux->siguiente = nuevo_nodo;
  }
  else
  {
    p = nuevo_nodo;
  }
}



El resultado del depurador esta en esta imagen:
http://postimg.org/image/xlcxnptrn/

Toda ayuda es bienvenida. Muchas gracias ^^
3  Programación / Programación General / grupo telegram para novatos en: 18 Diciembre 2014, 07:01 am
Hola a todos. Hoy me rondaba una idea por la cabeza y es que podria crear un grupo de telegram con gente novata o inexperta en programacion. Yo estoy aprendiendo C/C++ y me gustaria compartir ideas con mas gente y ayudar en lo posible. Elijo telegram porque permite transferir cualquier tipo de archivo teniendo asi la posibilidad de transferirnos proyectos enteros o archivos fuente directamente.

Que me decis.... os gusta la idea? os uniriais? si somos almenos tres lo creare ^^. Solo España plis, no soy racista...es por el tema horario.

Un saludo a todos!!
4  Programación / Programación C/C++ / segmentation fault en mi programa en: 29 Noviembre 2014, 14:53 pm
Buenas a todos. Me registre hace mucho tiempo (no recuerdo porque motivo) pero nunca he posteado nada. Ahora estoy estudiando programacion en C de forma autodidacta y es ahora cuando necesito esa ayuda que puede aportarme este foro (no puedo permitirme un profesor particular economicamente).Os agradecere toda ayuda recibida.

Bueno, tengo que hacer un ejercicio en el que se pregunta al usuario el nombre de un archivo de texto y el programa debe abrir dicho archivo y mostrar 25 lineas hasta que se pulse una tecla y mostrar otras 25, asi hasta la marca eof del archivo en si. El problema esta en que al compilarlo me da 0 errores pero al ejecutarlo me da "segmentation fault (core dumped)" dentro de la terminal donde lo ejecuto:

Código:
#include <stdio.h> 
#include <string.h>

#define RUTA "/home/miusuario/"

main()
{
   FILE* archivo;
   char nombre[51];          //El nombre del archivo.
   char rutatemp[201];     //La ruta completa del archivo
        char linea[501];
   int i;      //Un contador para imprimir 25 lineas.

   printf("Escribe el nombre de archivo para abrirlo\n\n");
   gets(nombre);

   strcat(rutatemp, RUTA);
   strcat(rutatemp, nombre);

   archivo = fopen(rutatemp, "rt");

   while (! feof(archivo))
   {
      for (i = 0; i < 25; i++)
      {
         fgets(linea, 500, archivo);
         printf("%s", linea);
      }
      i = 1;
                getchar();
   }
   fclose(archivo);
}

La verdad no se si es que no se usar alguna funcion bien o que es. Me gustaria si es posible que no me corrigierais el codigo (me gusta intentarlo yo mismo para aprender) sino que me gustaria saber el porque de ese error en este codigo o que funcion es la que me falla y me ayudeis a entenderla. He leido tambien un post aqui mismo en el que se dice que hay funciones que no se deberian usar y yo utilizo aqui pero estoy obligado a ello. Gracias de antemano!!!

PD: Utilizo un curso de C escrito por Nacho Cabanes, si sabeis de alguno que sea mejor que ese os lo agradeceria muchisimo.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines