Accueil > Forum > > > > erreur "Segmentation fault" en C++
erreur "Segmentation fault" en C++
jeudi 22 avril 2004 à 15:18:14 |
erreur "Segmentation fault" en C++

antgre
|
Bonjour a tous, Je travaille sur un programme dont une partie doit implementer une liste de points. Chaque point comprenant un certain nombre de caractéristiques. Ma classe point marche très bien. J'ai ensuite créé une classe list qui represente une liste d'objet T (template) et enfin, j'ai créé une classe Pointlist qui crée des liste de points. j'arrive (apres nombreux preoblèmes ;) ) à compiler ... Et quand je lance mon programme de test, j''obtiens "Segmentation fault"Je vous mets mes classes .h et .cpp ... Merci d em'aider si vous avez quelques minutes point.h /* MISE A JOUR : 17/04/2004 18h19 PAR : Ant */
#ifndef point_h #define point_h /* @ author: Delmoitié Damien Grenier Antoine Rahier Benjamin @ date : Mars 2004 classe définissant les méthodes de la classe point.cpp */
class point { public: point(double x, double y, double u, double v); point(); void setX (double n); void setY (double n); void setU (double n); void setV (double n); void set(double x, double y, double u, double v); double getX (); double getY (); double getU (); double getV (); double getVIT (); double getDIST (point P); double getDIST (double x, double y); private: double X; double Y; double U; double V; double VIT; double DIST; }; #endif
|
______________________________________________________________________ point.cpp /* MISE A JOUR : 22/04/2004 15h02 PAR : Ant REM : separation de la classe de test */
/* @ author: Grenier Antoine Delmoitie Damien Rahier Benjamin @ date : Mars 2004 classe permettant la gestion de differents points qui contiennent positions et vitesses */
#include "point.h" #include <string.h> #include <stdlib.h> #include <math.h> #include <iostream>
//Constructeur avec données point::point(double x, double y, double u, double v){ X = x; Y = y; U = u; V = v; };
//Constructeur sans donnée point::point(){ // initialisation d'1 point (0,0) �une vitesse (0,0) X = 0.0; Y = 0.0; U = 0.0; V = 0.0; };
// Definir la position en X void point::setX (double n){ X = n; };
// Definir la position en Y void point::setY (double n){ Y = n; };
// Definir la vitesse U void point::setU (double n){ U = n; }; // Definir la vitesse V void point::setV (double n){ V = n; }; //définir la position et les vistesses en une fois pour Damien void point::set(double x, double y, double u, double v){ X = x; Y = y; U = u; V = v; }; // renvoit la position en X double point::getX (){ return X; };
// renvoit la position en Y double point::getY (){ return Y; };
// renvoit la vitesse U double point::getU (){ return U; }; // renvoit la vitesse V double point::getV (){ return V; }; // renvoit la vitesse moyenne double point::getVIT (){ VIT = sqrt(pow(U,2) + pow(V,2)); return VIT; };
//renvoit la distance entre deux points double point::getDIST (point P){ DIST=sqrt(pow(X-P.getX(),2) + pow(Y-P.getY(),2)); return DIST; }; //renvoit la distance entre un point et une position double point::getDIST (double x, double y){ DIST=sqrt(pow(X-x,2) + pow(Y-y,2)); return DIST; };
|
______________________________________________________________________ list.h /* MISE A JOUR : 17/04/2004 PAR : Ant QUOI : compris un peu */
#ifndef list_h #define list_h
/* @ author: Delmoitie Damien Grenier Antoine Rahier Benjamin @ date : Mars 2004 classe permettant la gestion d'une structure de donn? de type liste et utilisant la classe template. */
#include <iostream>
using namespace std;
template <class T> class list { public: list(); ~list(); bool add(T *ele); T *remove(); void next(); void setElement(T *ele); T *getCurrent(); int getLength()const; bool isEmpty() const; bool isOk() const; bool isFirst(); bool isEnd() const; void setFirst(); private: //d?inition d'une structure des maillons "NOEUDS" de la list typedef struct NOEUD{ struct NOEUD *next; T *element; }Node; Node *head; Node *tail; Node *current; };
// CONSTRUCTEUR template <class T> list<T>::list(){ head = current = tail = new Node; head->next = NULL; current->next = NULL; tail->next = NULL; };
// DESTRUCTEUR template <class T> list<T>::~list(){ setFirst(); while(!isEmpty()){ Node *del; del=current->next; current->next=del->next; delete del; } delete head; delete tail; delete current; }
//Ajoute un element dans la liste template <class T> bool list<T>::add(T *ele){ bool isFail = (current == NULL); if (current!=NULL){ Node *pro; pro = new Node; pro->next = current->next; pro->element = ele; current->next= pro; if (tail == current)tail=current->next; } return isFail; };
//verifie que current ne Te pas vers un element NULL template <class T> bool list<T>::isOk() const{ return current != NULL && current->next != NULL; };
//supprime current de la liste et renvoie l'element contenu dans le noeud template <class T> T *list<T>:: remove(){ T *rem = NULL; if (isOk()){ rem = current->next->element; Node *remo=current->next; current->next=remo->next; if (tail == remo) { tail = current; } delete remo; } return rem; };
//place current sur le noeud suivant template <class T> void list<T>::next(){ if (current!= NULL){ current = current->next; } };
template <class T> void list<T>::setElement(T *ele){ if(isOk()){ current->next->element = ele; } };
//retourne l'element qui se trouve dans le noeud apres current template <class T> T *list<T>::getCurrent(){ T *el=NULL; if (isOk()){ el=current->next->element; } return el; };
//Retourne la longueur de la liste template <class T> int list<T>::getLength()const{ int counter = 0; Node *temp; temp = head; while(temp->next != NULL){ counter++; temp = temp->next; } return counter; };
//Verifie que la liste n'est pas vide template <class T> bool list<T>::isEmpty() const{return head->next == NULL;};
//Verifie que l'element n'est pas le dernier template <class T> bool list<T>::isEnd() const{return current->next == NULL;};
//Verifie que l'element n'est pas le permier template <class T> bool list<T>::isFirst() {return current->next->next == NULL;};
//Definit le premier element template <class T> void list<T>::setFirst(){current = head;};
#endif
|
______________________________________________________________________ Pointlist.h /* MISE A JOUR : 19/04/2004 PAR : Ant */
#ifndef Pointlist_h #define Pointlist_h /* @ author: Delmoitie Damien Grenier Antoine Rahier Benjamin @ date : Mars 2004 classe permettant de cr�r une liste de points */
#include "list.h" #include "point.h" #include <iostream>
//typedef list<point> listPoint;
class Pointlist : public list<point> { public: Pointlist(); ~Pointlist(); void Pointlist::trier(double x, double y); private: Pointlist *LISTE;
}; #endif
|
______________________________________________________________________ Pointlist.cpp /* MISE A JOUR : 22/04/2004 15h02 PAR : Ant REM : separation de la classe de test */
/* @ author: Delmoitie Damien Grenier Antoine Rahier Benjamain @ date : Mars 2004 classe permettant de créer une liste de points */
#include <iostream> #include "Pointlist.h" #include "list.h" #include "point.h"
//définition d'une liste contenant des points //typedef list<point> listPoint; //constructeur Pointlist::Pointlist(){ LISTE = new Pointlist(); }
//destructeur Pointlist::~Pointlist(){ delete LISTE; }
// void Pointlist::add(point P){ // LISTE->add(P); // }
//Trie la liste de l'element le plus proche en fonction d'une position void Pointlist::trier(double x, double y){
cout << "tri de la liste..."; // Initialisation Pointlist *L =new Pointlist(); point *p1 = new point(); point *p2 = new point(); bool etat; L->add(LISTE->getCurrent()); LISTE->next(); while(LISTE->isOk()){ p1=LISTE->getCurrent(); p2=L->getCurrent(); etat=0; while((L->isOk()) & (etat=0)){ //Comparaison des distances if (p1->getDIST(x,y)<p2->getDIST(x,y)){ L->setElement(p1); etat=1; } L->next(); }; LISTE->next(); }; *LISTE=*L; }
|
______________________________________________________________________ Et enfin ... La classe de test ... //CLASSE DE TEST
/* MISE A JOUR : 22/04/2004 PAR : Ant */
/* @ author: Delmoitie Damien Grenier Antoine Rahier Benjamain @ date : Mars 2004 classe permettant de créer une liste de points */
#include <iostream> #include "Pointlist.h" #include "list.h" #include "point.h"
int main() {
Pointlist *L1 = new Pointlist(); point *P = new point(); point *P1 = new point(0.0,0.0,0.0,0.0); point *P2 = new point(1.0,1.0,0.0,0.0); point *P3 = new point(2.0,2.0,0.0,0.0); point *P4 = new point(3.0,2.0,0.0,0.0); point *P5 = new point(6.0,3.0,0.0,0.0); bool a = L1->isOk(); L1->add(P1); L1->add(P2); L1->add(P3); double d = L1->getLength(); P->setX(L1->getCurrent()->getX()); double b = P->getX(); L1->remove(); P->setX(L1->getCurrent()->getX()); double c = P->getX(); L1->add(P4); L1->add(P5); L1->trier(3.0,3.0);
cout<< "|---------------------|" << endl; cout<< "| TEST CLASSE LIST : |" << endl; cout<< "|---------------------|" << endl; cout<< "| Fonction isOk() |" << endl; cout<< "ca doit Afficher 0 " << endl; cout<< a << endl; cout<< "| Fonction add() |" << endl; cout<< " ca doit Afficher 2" << endl; cout<< b << endl; cout<< "| Fonction remove() |" << endl; cout<< " ca doit Afficher 1" << endl; cout<< c << endl; cout<< "| Fonction getLength() |" << endl; cout<< " ca doit Afficher 3" << endl; cout<< d << endl; cout<< "|---------------------|" << endl; cout<< "|FIN DU TEST : bravo !|" << endl; cout<< "|---------------------|" << endl; return 1; };
|
______________________________________________________________________
|
|
jeudi 22 avril 2004 à 17:06:23 |
Re : erreur

vecchio56
|
Pointlist.cpp:
Pointlis::Pointlist(){ LISTE = new Pointlist(); }
Ton constructeur par défaut de Pointlist est récursif!
|
|
Cette discussion est classée dans : liste, double, list, next, current
Répondre à ce message
Sujets en rapport avec ce message
erreur dans la fonction d'impression [ par dark_cross ]
voici j'ai une erreur dans ma fonction d'impression si quelqu'un peux m'expliquer, je serais tres ravie.#include #include //speciale dedicasse Etienne
HELP !!! (liste ...) [ par antgre ]
Bonjour,J'essaye de creer une liste chainee contenant des objet point (que g definis dans une autre classe qui a ete testee et qui marche) ... Quand j
va_list [ par garslouche ]
Salut à tous,je voudrais faire un truc idiot mais c juste pour un test : je voudrais faire une fonction myprintf qui fasse comme printf (en utilisant
Comment afficher la liste des fichiers dans le composant List View [ par kanimana ]
Bonjour Svp, indiquez moi la fonction qui permettera d'afficher les fichier contenu dans un répertoire dans le composant ListView, avec les détails
Violation d'accès lors de la lecture de l'emplacement 0x00000000. [ par d0jones ]
bonjour, j'ai un petit souci, quand j'essai d'accéder à la donnée de ma struct j'ai le message suivant : Exception non gérée à 0x01202029 dans ListTe
List de l'aide svp [ par silverfr78021959 ]
Bonjour voilà je dois créer une liste et de la en faire l'affichage, mais cette affichage doit être fait particulierement. Je m'explique je voudrais a
aide s.v.p [ par nimaly ]
salut j'ai besoin de vous aide s.v.p pour corriger cet erreur( juste une seule erreur),j'aime savoir sa signification [code=cpp] //* La fonction cl
STD::list, un problème lors de l'utilisation d'attributs de type liste dans un objet stockée dans un tableau ou vector [ par mohamed_bn ]
Bonjour, J'ai une structure comme suit: [color=red]typedef struct DataFlow : public cObject { std::list receivedPackets; int numberOfPacketsNotYet
Fusion de cellules pour une liste chainée [ par ouhare ]
Bonjour tout le monde. J'aurais une question concernant une fonction en C que j'appelerais merge_list(). Cette fonction est supposée fusionner 2 cellu
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|