table de connectivité

table de connectivité - C++ - Programmation

Marsh Posté le 09-11-2011 à 20:22:41    

Bonjour ,  
je suis débutant en c++ , et je travail sur un projet . voila j'ai un fichier qui contient une matrice (40,4) , telle que la premiere colonne représente les indexes et les 3 autres colonnes des points  
pour chaque ligne i, je voudrais associer l'indexe au 3 points de la ligne .
j'ai déjà pu lire les données via un code que j'ai écris , mais je bloc sur la façon de creer une table de connectivité entre les indexes et les points .  
voici mon code :  

Code :
  1. #include <iostream>
  2. #include<cstdlib>
  3. #include<cstdio>
  4. #include<vector>
  5. #include<stdio.h>
  6. #include<fstream>
  7. #include<math.h>
  8. using namespace std;
  9. int main()
  10. {
  11.     int Nombre_d_elements,b,c;
  12.     int t1[40],t2[40],t3[40],t4[40];
  13.     FILE * f;//FILE* cette fonction permet d'ouvrir un fichier en lecture
  14.     f = fopen("D:/Lesondes/disque.1.ele","r" );//ouverture du fichier contenant les triangles
  15.     //vector<int>index;
  16.     if (f == NULL)
  17.         cout<<"Impossible d'ouvrir le fichier en lecture!"<<endl;
  18.     else
  19.     {
  20.         fscanf(f,"%d %d %d",&Nombre_d_elements,&b,&c);//lecture des 3 premiers entiers dans le fichier
  21.         //definissons les indexes des triangles
  22.             vector<int>index;//vecteur de taille nombre d'éléments
  23.             for (int i=0;i<Nombre_d_elements;i++)
  24.             {
  25.                     //int t1[Nombre_d_elements],t2[Nombre_d_elements],t3[Nombre_d_elements],t4[Nombre_d_elements];
  26.                     fscanf(f,"%d %d %d %d",&t1[i],&t2[i],&t3[i],&t4[i]);
  27.             }
  28.     fclose(f);
  29.     }
  30.     //table de connectivité a l'aide d'une map
  31.   //  map <int,
  32.     cout<<"Nombre_d_elements="<<Nombre_d_elements<<endl<<"b="<<b<<endl<<"c="<<c<<endl;
  33.     for ( int i = 0 ;i<Nombre_d_elements;i++)
  34.     {//int t1[Nombre_d_elements],t2[Nombre_d_elements],t3[Nombre_d_elements],t4[Nombre_d_elements];
  35.      cout<<t1[i]<<""<<t2[i]<<""<<t3[i]<<""<<t4[i]<<endl;
  36.      }
  37.     return 0;
  38. }


 
j'ai pensé à créer une map , qui associerait chaque indexe aux points de la meme ligne mais je ne sais comment le faire  
 
merci de votre aide  

Reply

Marsh Posté le 09-11-2011 à 20:22:41   

Reply

Marsh Posté le 10-11-2011 à 07:32:02    

ce code est du C.

Reply

Marsh Posté le 10-11-2011 à 09:27:57    

Joel F a écrit :

ce code est du C.


 
La derniere fois que j'ai regarde, il n'y avait pas de template en C. C'est du C++, pas idiomatique pour un sous, mais c'est du C++.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 10-11-2011 à 15:52:38    

bonjour, :)  
 
Je programme en c++ , pas en c .
en gros je voudrais associé pour tout i , t1[i] à t2[i], t3[i] et t4[i]
j'ai voulu essayé avec une map , j'ai donc ajouté ceci dans mon fichier  

Code :
  1. vector<int>index;//vecteur de taille nombre d'éléments
  2.     vector< vector<int> > Matrix(40,vector<int>(3,0));
  3.     vector< vector<int> >:: iterator it_i;
  4.     vector<int>:: iterator it_j;
  5. for(int i=0; i<Nombre_d_elements; i++)
  6.    {
  7.         Matrix[i][0] = t2[i] ;
  8.         Matrix[i][1] = t3[i] ;
  9.         Matrix[i][2] = t4[i] ;
  10.         index.push_back(t1[i]);//table des elements
  11.         //cout<<Matrix[i][0]<<""<<Matrix[i][1]<<""<<Matrix[i][2]<<endl;
  12. }
  13.     // table de connectivité qui associe l'element aux 3 noeuds qui composent le triangle
  14.     map<int, vector< vector<int> > >Connexion;
  15.     for (int i = 0;i<Nombre_d_elements;i++)
  16.     {
  17.         Connexion[index[i]]= Matrix[i][0];
  18.           Connexion[index[i]] = Matrix[i][1] ;
  19.            Connexion[index[i]] = Matrix[i][2];
  20.     }
  21.     //parcourons la table en faisant une relation entre l'element et ses noeuds
  22.     for(map<int, int>::iterator it_i=Connexion.begin();it_i!=Connexion.end (); ++it_i)
  23. {
  24.             cout << it_i->first << " est associe a" << it_i->second <<endl;
  25. }


 
mais la map  ne fonctionnne pas  :??:

Reply

Marsh Posté le 10-11-2011 à 19:31:55    

Un Programmeur a écrit :


 
La derniere fois que j'ai regarde, il n'y avait pas de template en C. C'est du C++, pas idiomatique pour un sous, mais c'est du C++.


 
Y avait un troll caché obviously :o

Reply

Marsh Posté le 11-11-2011 à 23:33:45    

c'est deja beau que ca compile, si je lis bien, dans ta derniere boucle tu fais un iterateur de map<int,int> ce qui n'est pas compatible avec une map<int, v<v<int> > > !
deja.
de deux, j'ai l'impression que tu te poses un faux probleme. si tu as une table d'indices alors tu as déjà l'association. un indice te permet d'aller chercher directement la ou il faut dans tes tableaux t1, t2, t3.
 
en gros tes données c'est un vertex buffer de positions 1D et un index buffer quoi c'est bien ca ?


---------------
http://projets.6mablog.com/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed