Advertisement
Le_BuG63

Untitled

Dec 5th, 2014
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.42 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include <cstdio>
  4. #include <cstdlib>
  5. #include <vector>
  6.  
  7. typedef unsigned int u32_t;
  8.  
  9. class Mutation {
  10. public:
  11.     Mutation() {
  12.  
  13.     }
  14.  
  15.     ~Mutation() {
  16.         delete m_individuID;
  17.     }
  18.  
  19.     void    setIndividu(u32_t nindividu) {
  20.         m_effectifIndividu = nindividu;
  21.  
  22.         m_individuID = new u32_t[m_effectifIndividu];
  23.  
  24.         std::cout << "ID de dΓ©part: ";
  25.  
  26.         for(u32_t i = 0; i < m_effectifIndividu; ++i) {
  27.             m_individuID[i] = i;
  28.             std::cout << m_individuID[i] << " ";
  29.         }
  30.  
  31.         std::cout << std::endl;
  32.     }
  33.  
  34.     void    nextGeneration() {
  35.         for(int actindividu = 0; actindividu < m_effectifIndividu; ++actindividu) {
  36.             int chance = rand() % m_effectifIndividu + 1;
  37.  
  38.             for(int i = 0; i < chance; ++i) {
  39.                 m_listIndividu.push_back(m_individuID[actindividu]);
  40.             }
  41.         }
  42.  
  43.         for(int i = 0; i <  m_effectifIndividu; ++i) {
  44.             int here = rand() % m_listIndividu.size();
  45.  
  46.             m_individuID[i] = m_listIndividu.at(here);
  47.  
  48.             std::cout << m_individuID[i] << " ";
  49.         }
  50.  
  51.         std::cout << std::endl;
  52.  
  53.         m_listIndividu.clear();
  54.     }
  55.  
  56.     void    processMutation() {
  57.         bool winner = false;
  58.  
  59.         while(!winner) {
  60.             nextGeneration();
  61.  
  62.             if(verifWin()) {
  63.                 std::cout << "Gagnant: " << m_individuWinner;
  64.                 winner = true;
  65.             }
  66.         }
  67.     }
  68.  
  69.     bool    verifWin() {
  70.         bool    win = false;
  71.         u32_t   tmp = m_individuID[0];
  72.  
  73.         for(int i = 1; i < m_effectifIndividu; ++i) {
  74.             if(m_individuID[i] == tmp) {
  75.                 win = true;
  76.                 m_individuWinner = m_individuID[i];
  77.             }
  78.             else {
  79.                 win = false;
  80.                 i = m_effectifIndividu;
  81.             }
  82.         }
  83.         return win;
  84.     }
  85.  
  86. private:
  87.     u32_t               m_effectifIndividu;
  88.     u32_t               *m_individuID;
  89.     u32_t               m_individuWinner;
  90.     std::vector<u32_t>  m_listIndividu;
  91.  
  92. };
  93.  
  94. int main(int argc, char *argv[]) {
  95.  
  96.     Mutation mutation;
  97.  
  98.     u32_t   nindividu;
  99.     u32_t   ngeneration;
  100.  
  101.     srand(time(NULL));
  102.  
  103.     std::cout << "Nombre d'individus: ";
  104.     std::cin >> nindividu;
  105.  
  106.     mutation.setIndividu(nindividu);
  107.  
  108.     std::cout << std::endl;
  109.  
  110.     mutation.processMutation();
  111.  
  112.     return 0;
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement