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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Progrma en C++. No encuentro el error en: 9 Mayo 2015, 18:32 pm
Hola de nuevo, no he querido editar el anterior mensaje para que se notase que habia una respuesta.
He resuelto el misterio, ha sido un error muy bobo ^^u.

La variable   struct s_nodo *principio;   no estaba iniciada. Solo he tenido que añadirle un NULL para dejarla asi     
Código:
struct s_nodo *principio = NULL;

Ahora ya funciona bien. Muchas gracias igualmente a todos los que habeis leido el mensaje para intentar ayudarme :D
2  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
3  Programación / Programación C/C++ / Re: error en mi programa con lista dinamica en: 2 Enero 2015, 20:58 pm
Fiin del misterio.

El problema era que en main la estructura "struct t_nodo *principio;" no estaba iniciada. Solo he tenido que cambiarr esa linea por "struct t_nodo *principio = NULL;" y caso resuelto.

Gracias a todos los que habeis intentado ayudarme y a los que habeis ayudado tambien :D
4  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 ^^
5  Programación / Programación General / Re: grupo telegram para novatos en: 20 Diciembre 2014, 00:11 am
Nooo la idea no es que me "pasen codigo fuente". Es simplemente que unos cuantos novatos o inexpertos estemos metidos en un grupo en el que poder darnos la brasa entre nosotros bien para enseñarnos cosas o para simplemente poder pasarnos fuentes, proyectos...lo que no venga en gana. Es como cuando te pones a jugar un juego online, puedes usar el chat que hay integrado (imaginemos que lo hay) pero, porque no llegar mas lejos y hacer una llamada con  skype o teamspeak? Como bien he dicho no es nada super prioritario ni con mala intencion, pero tengo contactos con los que puedo contestarles hasta por voz gracias al "Ok Google" en lugar de tener que entrar a un costoso foro a escribir. Lo siento si creeis que es innecesario pero a mi me sigue pareciendo mas sencillo el programa de mensajeria.
6  Programación / Programación General / Re: grupo telegram para novatos en: 19 Diciembre 2014, 07:10 am
Jajajaja me siento como si quisiera robaros clientes XD
Solo es una alternativa al foro tal cual para hablar mas privado, me sigue pareciendo mas sencillo el cliente telegram.
Realmente no es una obligacion que se una nadie, solo me parecio una buena idea.
7  Programación / Programación General / Re: grupo telegram para novatos en: 18 Diciembre 2014, 10:20 am
Si pero responder en un foro siempre conlleva mas tiempo, no es exactamente igual que un cliente de mensajeria, por algo existen grupos de, por ejemplo, whatsapp, a mi parecer da mas facilidades.
Es mi humilde opinion por eso lo puse aqui, quizas haya gente que piensa como yo y les resulte util ^^

Igualmente gracias por tu respuesta
8  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!!
9  Programación / Programación C/C++ / Re: segmentation fault en mi programa en: 30 Noviembre 2014, 23:37 pm
Hola muy buenas y gracias por vuestras respuestas. Lo primero es que la funcion gets aunque se que es peligrosa usarla (te lo dice el propio compilador) me veo obligado por el propio ejercicio.

Lo del strcat(rutatemp,RUTA);  lo cambie por un strcpy como bien me deciais para que se iniciase la variable bien. Puse tambien antes del while un
Código:
printf("archivo abierto");getchar();
   
basicamente para asegurarme de que el archivo se podia abrir, ademas cambie el "rt" del fopen por tansolo "r".

Puse un if que estaba en el exterior del while para evitar que si no se podia abrir el archivo se fastidiara el programa.
Código:
if(archivo != NULL);
Despues de todo lo anterior descubri que por algun motivo no se podia abrir el archivo, el error venia por parte de RUTA que no estaba correctamente colocada porque me faltaba una "/".

Al final del todo el codigo quedo asi, lo dejo por si alguien lo necesita por el mismo error o ejercicio:

Código:
/* lectura de ficheros por nombre
 * read3.c */

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define RUTA "/home/-miusuario-/"

int main()
{
FILE * archivo;
char nombre[51];
char rutatemp[201];
char linea[501];
int i;

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

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

  printf("\n%s\n", rutatemp);getchar();

archivo = fopen(rutatemp, "r");
  if (archivo != NULL)
  {
    while (! feof(archivo))
    {
      system("clear");
      for (i = 0; i < 20; i++)
      {
        fgets(linea, 500, archivo);
        if (! feof(archivo))
        printf("%s", linea);
      }
      i = 1;getchar();
    }
    fclose(archivo);
  }
  else
  printf("El archivo no se ha podido abrir.");

  FIN:
  return 0;
}

Muchas gracias por haber contestado, me ha ayudado mucho.
10  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