Vecteur<int> Capteur::EmbouteillageJour( int d7 ) // Algorithme : // Structure de retour : Vecteur 0->23 : nombre d'embouteillage recense par heure // 24->47 : nombre total de donnees par heure { // Création structure de retour et variables pratiques Vecteur<int> donneesRetour; Vecteur<Evenement>* jour = nullptr; Trafic trafic; // Détermination de la branche dans laquelle prendre les données switch ( d7 ) { case 1: jour = &d1Contenu; break; case 2: jour = &d2Contenu; break; case 3: jour = &d3Contenu; break; case 4: jour = &d4Contenu; break; case 5: jour = &d5Contenu; break; case 6: jour = &d6Contenu; break; case 7: jour = &d7Contenu; break; default: // Erreur : mauvaise demande de jour break; } //----- Fin de switch ( d7 ) // Init de la structure de retour for ( int i = 0; i < 48; i++ ) { donneesRetour.insererFin(0); } // Parcours du tableau d'événements et remplissage de la structure de retour for (int i = 0; i < jour->GetTaille(); i++) { trafic = (*jour)[i].GetTrafic(); if ( trafic == R || trafic == N ) { donneesRetour[(*jour)[i].GetHeure()] += 1; } donneesRetour[(*jour)[i].GetHeure() + 24] += 1; // TODO: plus rapide avec creation de variable ? } return donneesRetour; } //----- Fin de EmbouteillageJour
int Capteur::TempsSegment( int d7, int heure, int minute ) { // Création variable de retour et variables pratiques int tempsParcours = 0; Vecteur<Evenement>* jour = nullptr; // Détermination de la branche dans laquelle prendre les données switch ( d7 ) { case 1: jour = &d1Contenu; break; case 2: jour = &d2Contenu; break; case 3: jour = &d3Contenu; break; case 4: jour = &d4Contenu; break; case 5: jour = &d5Contenu; break; case 6: jour = &d6Contenu; break; case 7: jour = &d7Contenu; break; default: // Erreur : mauvaise demande de jour break; } //----- Fin de switch ( d7 ) for ( int i = 0; i < jour->GetTaille(); i++ ) { // Recherche de l'horaire if ( (*jour)[i].GetHeure() == heure && (*jour)[i].GetMinute() == minute ) { switch ( (*jour)[i].GetTrafic() ) { case V: tempsParcours += 1; break; case J: tempsParcours += 2; break; case R: tempsParcours += 4; break; default: // case N: tempsParcours += 10; break; } break; // On a trouve, on sort de la boucle } } return tempsParcours; } //----- Fin de TempsSegment