Rendre une fonction dépendante d'une variable en c++
Ferméwella_salwa Messages postés 41 Date d'inscription lundi 31 octobre 2022 Statut Membre Dernière intervention 15 janvier 2025 - 1 nov. 2022 à 09:32
- Rendre une fonction dépendante d'une variable en c++
- Fonction si et - Guide
- Liste déroulante dépendante excel - Guide
- Comment rendre un fichier moins lourd - Guide
- Virginie organise un rallye avec 30 équipes. elle veut créer un code pour désigner chaque équipe. elle a commencé à la main, mais elle voudrait le faire calculer à l'aide d'une formule. proposez une formule comportant une seule fonction et à recopier vers le bas dans la colonne a du fichier à télécharger. quelle formule sera en a9 ? ✓ - Forum Excel
2 réponses
Modifié le 31 oct. 2022 à 14:22
Salut wella_salwa,
Ce que tu postes n'est pas un algorithme, c'est un extrait de code source en C++.
Il s'agit de l'implémentation de la méthode WindowIncrease() de la classe ConsumerPcon et il semblerait que "ton" code vienne de ce fichier ndn-consumer-pcon.cpp pour une classe décrite dans cet entête ndn-consumer-pcon.hpp :
https://github.com/6th-ndn-hackathon/congestion-control/blob/master/apps/ndn-consumer-pcon.cpp#L110
https://github.com/6th-ndn-hackathon/congestion-control/blob/master/apps/ndn-consumer-pcon.hpp#L39
Sais-tu ce qu'est le polymorphisme en C++ ?
oui je sais , je suis entrain de simuler une topologie sur NS-3
je n'ai pas une idée sur le " polymorphisme "
Modifié le 31 oct. 2022 à 15:51
Donc, l'implémentation de la méthode WindowIncrease() de la classe ConsumerPcon est dans ce fichier ndn-consumer-pcon.cpp pour une classe décrite dans cet entête ndn-consumer-pcon.hpp :
https://github.com/6th-ndn-hackathon/congestion-control/blob/master/apps/ndn-consumer-pcon.cpp#L110
https://github.com/6th-ndn-hackathon/congestion-control/blob/master/apps/ndn-consumer-pcon.hpp#L39
Cette implémentation ne permet pas le passage de paramètres.
Comme le C++ supporte le polymorphisme, tu peux insérer dans la description de la classe ConsumerPcon de l'entête ndn-consumer-pcon.hpp une nouvelle méthode void WindowIncrease(int i); (en supposant que que i soit un int)
class ConsumerPCON : public ConsumerWindow { public: static TypeId GetTypeId(); /** * \brief Default constructor */ ConsumerPCON() : CC_ALGORITHM {boost::to_upper_copy(getEnvVar("SCEN_NAME"))} { assert(!CC_ALGORITHM.empty()); std::cout << "Started Consumer PCON, Algorithm: " << CC_ALGORITHM << "\n"; ConsumerWindow(); } // From App virtual void OnData(shared_ptr<const Data> contentObject) override; virtual void OnTimeout(uint32_t sequenceNumber) override; // virtual void // WillSendOutInterest(uint32_t sequenceNumber); private: void windowDecrease(); void windowIncrease(); void windowIncrease(int i); void cubicIncrease(); (...)
et écrire dans ndn-consumer-pcon.cpp l'implémentation de cette méthode avec cette nouvelle signature, sans toucher à la précédente (crée une nouvelle "fonction" portant le même nom, mais supportant le passage de ce paramètre) :
void ConsumerPCON::windowIncrease() { if (CC_ALGORITHM == "AIMD") { if (m_window < m_sstresh) { m_window = m_window + 1.0; } else { m_window += (1.0 / m_window); } } else if (CC_ALGORITHM == "CUBIC") { cubicIncrease(); } else if (CC_ALGORITHM == "BIC") { bicIncrease(); } else { assert((false) && "Wrong CC Algorithm!"); } } void ConsumerPCON::windowIncrease(int i) { // TODO: écrire la version modifiée de cette méthode devant s'exécuter // lorsqu'ellest appelée avec un int passé en paramètre }
Lorsque cette méthode WindowIncrease() sera appelée sans paramètres par le code existant, c'est le code d'origine qui s'exécutera.
Lorsque cette méthode WindowIncrease() sera appelée avec un int passé en paramètre, c'est le code de ta nouvelle méthode qui sera exécuté.
31 oct. 2022 à 17:35
Sans toucher au code existant, tu peux aussi faire une classe héritant de ConsumerPCON, qui comprenne cette méthode additionnelle.
1 nov. 2022 à 09:32
Merci infinement ...