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
Merci.
Hors ligne
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
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
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