Nuage de points ...librairie stl

jojolero Messages postés 4 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 15 janvier 2009 - 14 janv. 2009 à 10:30
jojolero Messages postés 4 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 15 janvier 2009 - 15 janv. 2009 à 18:44
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

lglandeur Messages postés 28 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 20 janvier 2009
14 janv. 2009 à 13:40
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é.
0
jojolero Messages postés 4 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 15 janvier 2009
14 janv. 2009 à 18:45
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
0
jojolero Messages postés 4 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 15 janvier 2009
14 janv. 2009 à 19:15
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***\
0
lglandeur Messages postés 28 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 20 janvier 2009
14 janv. 2009 à 19:38
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=
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jojolero Messages postés 4 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 15 janvier 2009
15 janv. 2009 à 18:44
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***\
0
Rejoignez-nous