Vecteur<double> Capteur::StatsJour( int d7 ) // Algorithme : { // Création structure de retour et variables pratiques Vecteur<double> statsRetour; int * jourTab = nullptr; double total; // Détermination de la branche dans laquelle prendre les données switch ( d7 ) { case 1: jourTab = d1Resume; break; case 2: jourTab = d2Resume; break; case 3: jourTab = d3Resume; break; case 4: jourTab = d4Resume; break; case 5: jourTab = d5Resume; break; case 6: jourTab = d6Resume; break; case 7: jourTab = d7Resume; break; default: // Erreur : mauvaise demande de jour break; } //----- Fin de switch ( d7 ) total = jourTab[4]; // Insertion dans la structure de retour statsRetour.insererFin( jourTab[0] / total ); statsRetour.insererFin( jourTab[1] / total ); statsRetour.insererFin( jourTab[2] / total ); statsRetour.insererFin( jourTab[3] / total ); return statsRetour; } //----- Fin de StatsJour
Vecteur<double> Capteur::StatsPropres() // Algorithme : { // Creation de la structure de retour et variables pratiques Vecteur<double> statsRetour; double total = d1Resume[4] + d2Resume[4] + d3Resume[4] + d4Resume[4] + d5Resume[4] + d6Resume[4] + d7Resume[4]; double statTrafic; // Remplissage for (int i = 0; i < TAILLE_RESUME - 1; i++) { if ( total != 0 ) { statTrafic = ( d1Resume[i] + d2Resume[i] + d3Resume[i] + d4Resume[i] + d5Resume[i] + d6Resume[i] + d7Resume[i] ) / total; } else { statTrafic = 0; } statsRetour.insererFin(statTrafic); } return statsRetour; } //----- Fin de StatsPropres
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
Vecteur<int> Capteur::DonneesJour(int d7) { // Création structure de retour et variables pratiques Vecteur<int> donneesRetour; int * jourTab = nullptr; // Détermination de la branche dans laquelle prendre les données switch ( d7 ) { case 1: jourTab = d1Resume; break; case 2: jourTab = d2Resume; break; case 3: jourTab = d3Resume; break; case 4: jourTab = d4Resume; break; case 5: jourTab = d5Resume; break; case 6: jourTab = d6Resume; break; case 7: jourTab = d7Resume; break; default: // Erreur : mauvaise demande de jour break; } //----- Fin de switch ( d7 ) // Insertion dans la structure de retour donneesRetour.insererFin( jourTab[0] ); donneesRetour.insererFin( jourTab[1] ); donneesRetour.insererFin( jourTab[2] ); donneesRetour.insererFin( jourTab[3] ); donneesRetour.insererFin( jourTab[4] ); return donneesRetour; } //----- Fin de DonneesJour
void Capteur::Inserer( Evenement& unEvenement ) // Algorithme : { // Variables permettant de positionner l'insertion Vecteur<Evenement>* jour = nullptr; int * caseResume = nullptr; // Détermination du jour de la semaine switch ( unEvenement.GetD7() ) { case 1: jour = &d1Contenu; caseResume = d1Resume; break; case 2: jour = &d2Contenu; caseResume = d2Resume; break; case 3: jour = &d3Contenu; caseResume = d3Resume; break; case 4: jour = &d4Contenu; caseResume = d4Resume; break; case 5: jour = &d5Contenu; caseResume = d5Resume; break; case 6: jour = &d6Contenu; caseResume = d6Resume; break; case 7: jour = &d7Contenu; caseResume = d7Resume; break; default: // Erreur d'insertion break; } //----- Fin de switch ( unEvenement.GetD7() ) // Incrémentation de la bonne case de trafic switch ( unEvenement.GetTrafic() ) { case V: caseResume[0]++; break; case J: caseResume[1]++; break; case R: caseResume[2]++; break; default: // case N: caseResume[3]++; break; } //----- Fin de switch ( unEvenement.GetTrafic() ) // Insertion dans le vecteur et incrementation du nombre total d'évènements jour->insererFin( unEvenement ); caseResume[4]++; } //----- Fin de Inserer