from http://vernier.frederic.free.fr/Teaching/PimpA
char*
et int*
?
char*
peut-il pointer vers des int ?
// compile avec g++ main.cpp -o main.out
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
#include <stdlib.h>
using namespace std;
struct Ville{
string *Insee;
int dep;
string *Nom;
int Altitude;
string *code_postal;
float longitude_radian;
float latitude_radian;
int pop99;
float surface;
};
vector<Ville*> liste;
void lire_fichier(string s){
ifstream f(s.c_str());
string line;
getline(f,line);
while(getline(f,line)) {
Ville *v = (Ville*)malloc(sizeof(Ville)) ;
int ind = line.find(";");
v->Insee = new string (line.substr(0, ind));;
string code_dep = v->Insee->substr(0, v->Insee->size()-3);
if (code_dep == "2A" || code_dep == "2B")
v->dep = 20;
else
v->dep = atoi(code_dep.c_str());
line = line.substr(ind+1, line.size()-1);
ind = line.find(";");
v->Nom = new string(line.substr(0, ind));
line = line.substr(ind+1, line.size()-1);
ind = line.find(";");
v->Altitude = atoi(line.substr(0, ind).c_str());
line = line.substr(ind+1, line.size()-1);
ind = line.find(";");
v->code_postal = new string(line.substr(0, ind));
line = line.substr(ind+1, line.size()-1);
ind = line.find(";");
v->longitude_radian = atof(line.substr(0, ind).c_str());
line = line.substr(ind+1, line.size()-1);
ind = line.find(";");
v->latitude_radian = atof(line.substr(0, ind).c_str());
line = line.substr(ind+1, line.size()-1);
ind = line.find(";");
v->pop99 = atoi(line.substr(0, ind).c_str());
line = line.substr(ind+1, line.size()-1);
ind = line.find(";");
v->surface = atof(line.substr(0, ind).c_str());
liste.push_back(v);
}
f.close();
}
int main(int, char*[]) {
lire_fichier("villes.csv");
cout << *liste[0]->Nom << " a une population de " << liste[0]->pop99 << " personnes" << endl;
}
Le but de l'implementation sera de coder une structure de département de France à partir de la liste des communes.
Nous souhaitons créer dynamiquement les départements à partir des 2 premiers caractères du code INSEE au fur et à
mesure de la lecture des 36000 communes. Pour simplifier toutes les communes de corse (No insee commençant par 2A ou 2B) seront regroupées dans le département unique "20"
departement
qui contient des champs population, surface et numero
departement
s et un pointeur vers le premier département qui s'appelle "depvide"
departement
ayant un numéro précis (tester en cherchant un departement
fictif)
departement
correspondant et
departement
s fictifs
departement
departement
du tableau et ainsi de suite.