Nuage de points ...librairie stl

Signaler
Messages postés
4
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
15 janvier 2009
-
Messages postés
4
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
15 janvier 2009
-
Bonjour a ttes et a tous!!!
voila, je fais mon premier message sur ce forum qui m aide deja depuis un moment...donc grand moment pour moi...!!! :D

Je resume mon probleme:

j ai fais un nuage de point (avec generation de points aleatoires) et je veux rajouter des petites options a ce programme, a savoir supprimer un ou +sieurs points et ou les modifiers.
et j avoue que je sais pas trop comment faire...j ai deja fais une option pour ajouter des points mais je sais pas en enlever!!!! quelle misere:(!

voila, donc si qq un a une idee pour supprimer ou modifier des points avec la stl, merci de m aider!

ps: je connais les options pour modifier et supprimer, c est juste que je vois pas comment les utiliser!

voici mon code :


#include
#include <fstream>
#include <list>
#include <time.h>
#include <stdio.h>
#include <string>
#include "gnuplot_i.hpp"

using namespace std;

FILE *fichier; //pour la fonction fopen()...

class point
{
public:
  // coordonnées du point (x,y):
  double x ;
  double y ;
};

//std::string s = "eeeydydytd";
//char *e;
//long n = strtol(s.c_str(), &e, 10);
//if (*e != '\0') erreur
// else
  

char y;
char rep;
int nb;
int i;
int j;
point p;
///*--------------------------Supprimer des points ----------------------------*/
//
//void suprim( list< point > &nuage )
//
//{
//  cout << "voulez vous supprimer un ou plusieurs points ? (y, n): ";
//  cin >> rep;
// 
//  if (rep = y);  
//  {   
//    cout << "combien de points voulez vous supprimer ? \n nombre de points : ";  
//    cin >> nb ; }
//  for (j=0; j<nb; j++)
//    {//    p.x //    p.y
//   
//    nuage.pop_front(p);
//    }
// 
//}
//
    /*--------------------------ajouter des points ----------------------------*/
void ajout( list< point > & nuage )
 
{
 
  cout << "voulez vous ajouter un ou plusieurs points ? (y, n): ";
  cin >> rep;

  if (rep = y);
  {
    cout << "combien de points voulez vous ajouter ? \n nombre de points : ";  
    cin >> nb ;
//    switch (nb)
//      case 1:{
//    if (nb = false)
//      {cout << "erreur...veuillez rentrer un nombre entier svp...";}
//      break;}
//   
    for (j=0; j<nb; j++)
    {
    p.x = (random()/double(RAND_MAX))*10;
    p.y = (random()/double(RAND_MAX))*10;
   
    //    nuage.insert(++nuage.begin(), p);
          nuage.push_front(p);
      }  
  }
  //cerr << "ok ici" << endl;

}

/*---------------------------Programme principale-----------------------------*/

int main()
{
  //generation d'un nuage de points aleatoire :
 
  srandom(time(NULL)); //on remet les pendules à l'heure :D
  int N;
 
  cout << "\n/***Entrez le nombre de points que vous voulez...\n ---nb de points = ";
  cin >> N;
  list< point > nuage( N ) ;
  {
    list< point >::iterator it ;
    for ( it = nuage.begin() ; it != nuage.end() ; ++it )
      {
    it->x = (random()/double(RAND_MAX))*10;
    it->y = (random()/double(RAND_MAX))*10;
    cerr << it->x << " " << it->y << endl;
      }
  }
 

  //execution de l algorithme :
 
  ajout(nuage);
  //cerr << "ok ici 2" << endl; 
  {
    list< point >::iterator jt ;
    for ( jt = nuage.begin() ; jt != nuage.end() ; ++jt )
      {
        cerr << jt->x << " " << jt->y << endl;//affichage de ts les points
      }
  }

  //suprim (nuage);
???
}

/***JoJoL'eRo***\

5 réponses

Messages postés
28
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
20 janvier 2009

bonjour,
alors pour la suppression de point il suffit d'appeler la fonction "pop_front" (pour supprimer le 1er élément) mais sans lui passer de paramètre donc ta boucle for de suppression devient:
for (j=0; j<nb; j++)
{
    nuage.pop_front();
}
sinon je ne comprend pas pourquoi au début de ton programme, lorsque tu demande a l'utilisateur combien de points il veut tu n'utilise pas la fonction "ajout"?

j'espère t'avoir aidé.
Messages postés
4
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
15 janvier 2009

re:hello!!

merci pour ta reponse...et en effet c etait aussi simple que ca! en fait je crois que je me suis un peu embrouillé car avant de faire une fonction suprim j avais commencer a en faire une classe ...bref, ca marche impec', donc encore merci!

par contre je ne voit pas ce que tu veux dire par ne pas utiliser la fonction "ajout"? car je l utilise bel et bien dans le main. je demande juste en supplement qu il m affiche sur mon terminal les coordonnées...c est juste pour moi, pour voir si tout marche come je l entend!!! :D

merci de m avoir aidé!

a plus
Messages postés
4
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
15 janvier 2009

j ai une autre petite requete...
est ce que qq un sait comment je peux modifier un point deja existant de ma liste ???
merci d avance!
si il y a une option deja existante?

/***JoJoL'eRo***\
Messages postés
28
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
20 janvier 2009

alors, voila la partie de ton main que je trouve inutile, car elle fait la même chose que la fonction "ajoute":

  cout << "\n/***Entrez le nombre de points que vous voulez...\n ---nb de points = ";
  cin >> N;
  list< point > nuage( N ) ;
  {
    list< point >::iterator it ;
    for ( it = nuage.begin() ; it != nuage.end() ; ++it )
      {
    it->x = (random()/double(RAND_MAX))*10;
    it->y = (random()/double(RAND_MAX))*10;
    cerr << it->x << " " << it->y << endl;
      }
  }

sinon pour la modification d'un élément précis de la liste il te faut y accéder via un iterateur :
list< point >::iterator it=nuage.begin();
for(int i=0; (i<2) && (it!=nuage.end()); i++, it++)
{
    it->x=
    it->y=
}
Messages postés
4
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
15 janvier 2009

Merci encore, j ai reussi a modifier les points ...il faut que j ameliore un peu mon code pour que ce soit plus propre!! :D
il faut aussi que je trouve une solution lorsque je demande a l utilisateur si il veut ceci ou cela...car pour l instant on peut taper n importe quoi ca change pas grand chose !lol

je pense faire faire ca avec un switch, qui permettra de regroupé ttes les propositions...a voir donc!!

merci encore (meme si j ai pas encore fini de poser des questions!)

/***JoJoL'eRo***\