Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2016-04-30 23:47:19 Trier un fichier csv

Bnk
nouveau membre
Date d'inscription: 2016-04-30
Messages: 2

Trier un fichier csv



Bonjour à tous/toutes, alors voilà je suis actuellement en terminale STI2D sin et nous avons un projet à réaliser en groupe.
Le mien est un agenda vocale, on lui donne un rendez-vous oralement et il nous l'enregistre dans un fichier csv.
Le problème est que les rendez-vous pouvant être prit à n'importe qu'elle date nous devons trier celle-ci pour que lors de l'ouverture de l'agenda, notre rendez-vous par exemple du 6 juin 2016 ce retrouve avec celui du 25 août 2017.
Et je n'ai vraiment aucune idée de comment je pourrais le faire.
Si vous avez quelques idées elles seront les bienvenues smile

Merci.

Hors ligne

 

#2 2016-05-01 07:08:10 Re : Trier un fichier csv

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Trier un fichier csv



Bonjour,

Pour trier une table par la date, il faut ruser et introduire une nouvelle colonne avec une date formater comme cela
AAAAMMJJ. Pour aujourd'hui c'est un entier qui est égal à 20160501.
Ensuite tu fais le tri sur cette colonne que tu effaces ensuite et le tour est joué.

// Tri de la table
Table table;

void setup() {
  table = loadTable("data/rdv.csv");
  int nColonne = table.getColumnCount();
  table.addColumn();
  for (int i = 0; i < table.getRowCount(); i++) {
    TableRow ligne = table.getRow(i);
    int date = ligne.getInt(0) * 10000 + ligne.getInt(1) * 100 + ligne.getInt(2);
    ligne.setInt(nColonne, date);
  }
  table.sort(nColonne);
  table.removeColumn(nColonne);
  saveTable(table, "data/nrdv.csv");
  println("OK");
}

/*
// Creation de la table aleatoire
 Table table;
 
 String[] rdv = {"Dentiste", "Garage", "Course", "Vacances"};
 
 void setup() {
 table = new Table();
 table.addColumn();
 table.addColumn();
 table.addColumn();
 table.addColumn();
 
 for (int i = 0; i < 20; i++) {
 TableRow nLigne = table.addRow();
 nLigne.setInt(0, int(random(2016, 2019)));
 nLigne.setInt(1, int(random(1, 13)));
 nLigne.setInt(2, int(random(1, 29)));
 nLigne.setString(3, "RDV : " + rdv[int(random(0, rdv.length))]);
 }
 saveTable(table, "data/rdv.csv");
 println("OK"); 
 }
 */

Hors ligne

 

#3 2016-05-02 22:10:14 Re : Trier un fichier csv

Bnk
nouveau membre
Date d'inscription: 2016-04-30
Messages: 2

Re: Trier un fichier csv



Bonjour et merci beaucoup pour ton programme, il marche à la perfection.
Après plusieurs heures d'essais je n'arrive toujours pas à remplacer ton random par un nombre que je veux rentrer manuellement.

Je m'explique, j'aime beaucoup le fonctionnement de ce tri mais il faudrait que j'utilise une syntaxe de ce type pour ajouter des rendez-vous un par un.

  TableRow newRow = table.addRow();
  newRow.setString("jour", "5");
  newRow.setString("mois", "fevrier");
  newRow.setString("annee", "2016");
  newRow.setString("duree", "1 heure");
  newRow.setString("designation", "");

car le jour, mois, annee, duree et designation sont mes variables que j'utilise par la suite pour que la voix synthétisée puisse lire le fichier csv.

J'ai donc essayé de numériser par la suite le mois afin de correspondre Janvier=0, Février=1 etc.. Pour pouvoir rentrer des INT et que je puisse utiliser le programme de façon équivalente au tiens mais je pense avoir des problèmes de syntaxe et je reste bloqué.

Merci encore de consacré du temps pour moi.

Hors ligne

 

#4 2016-05-03 02:27:37 Re : Trier un fichier csv

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Trier un fichier csv



Voilà qui devrait t'aider. Si tu as d'autres questions joints à ton message un extrait de ta base de données.

// Tri de la table
Table table;
IntDict conversion;

void setup() {
  conversion = new IntDict();
  conversion.set("Janvier", 1);
  conversion.set("Fevrier", 2);
  conversion.set("Mars", 3);
  conversion.set("Avril", 4);
  conversion.set("Mai", 5);
  conversion.set("Juin", 6);
  conversion.set("Juillet", 7);
  conversion.set("Aout", 8);
  conversion.set("Septembre", 9);
  conversion.set("Octobre", 10);
  conversion.set("Novembre", 11);
  conversion.set("Decembre", 12);
  table = loadTable("data/rdv.csv", "header");
  int nColonne = table.getColumnCount();
  table.addColumn("Date");
  for (int i = 0; i < table.getRowCount(); i++) {
    int date = Integer.parseInt(table.getString(i, "Annee")) * 10000 + conversion.get(table.getString(i, "Mois")) * 100 + Integer.parseInt(table.getString(i, "Jour"));
    table.setInt(i, "Date", date);
  }
  table.sort(nColonne);
  table.removeColumn(nColonne);
  saveTable(table, "data/nrdv.csv");
  println("OK");
}
/*

 // Creation de la table aleatoire
 Table table;
 
 String[] rdv = {"Dentiste", "Garage", "Course", "Vacances"};
 String[] mois = {"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Decembre"};
 
 void setup() {
 table = new Table();
 table.addColumn("Jour");
 table.addColumn("Mois");
 table.addColumn("Annee");
 table.addColumn("Duree");
 table.addColumn("Designation");
 
 for (int i = 0; i < 20; i++) {
 TableRow nLigne = table.addRow();
 nLigne.setString("Jour", String.valueOf(int(random(1, 29))));
 nLigne.setString("Mois", mois[floor(random(0, mois.length))]);
 nLigne.setString("Annee", String.valueOf(int(random(2016, 2019))));
 nLigne.setString("Duree", String.valueOf(int(random(1, 5))) + " heure(s)");
 nLigne.setString("Designation", "RDV : " + rdv[int(random(0, rdv.length))]);
 }
 saveTable(table, "data/rdv.csv");
 println("OK");
 }
 */

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024