Advertisement
Guest User

calcmpc

a guest
Mar 29th, 2015
349
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.27 KB | None | 0 0
  1. void Calculation::calcMPC(Event *event) {
  2.     //Если событие - базисное
  3.     if((event->mode() == Event::end)) {
  4.         return;
  5.     }
  6.  
  7.     //Если событие имеет операцию дизъюнкции
  8.     if((event->mode() == Event::dis)) {
  9.  
  10.         QList<QList<Event*> >::iterator iter;
  11.         for(iter = mpc.begin(); iter != mpc.end(); ++iter) {
  12.  
  13.             //Если список содержит событие
  14.             if(iter->contains(event)) {
  15.                 QList<Event*> tmpList = *iter;
  16.                 QList<Event*>::iterator it;
  17.                 for(it = tmpList.begin(); it != tmpList.end(); ++it) {
  18.                     if(*it == event){
  19.                         tmpList.erase(it);
  20.                         break;
  21.                     }
  22.                 }
  23.  
  24.                 //Для каждого дочернего события
  25.                 // создаем новый список и добавляем его в общий
  26.                 foreach(Event* pevt, event->childs()) {
  27.                     QList<Event*> inList = tmpList;
  28.                     inList.append(pevt);
  29.                     mpc.append(inList);
  30.                 }                
  31.                 mpc.erase(iter);
  32.             }
  33.         }
  34.         foreach(Event* evt, event->childs()) { calcMPC(evt); }
  35.     }
  36.  
  37.     //Если событие имеет операцию конъюнкции
  38.     if((event->mode() == Event::con)) {
  39.         QList<QList<Event*> >::iterator iter;
  40.         for(iter = mpc.begin(); iter != mpc.end(); ++iter) {
  41.  
  42.             //В каждый список, в котором содержится это событие
  43.             // добавляем его дочерние события
  44.             QList<Event*>*tmpLst = &(*iter);
  45.             if(tmpLst->contains(event)){
  46.                 foreach(Event* pevt, event->childs()) {
  47.                     tmpLst->append(pevt);
  48.                 }
  49.             }
  50.             QList<Event*>::iterator i;
  51.             for(i = tmpLst->begin(); i != tmpLst->end(); ++i) {
  52.                 if(*i == event) {
  53.                     tmpLst->erase(i);
  54.                     break;
  55.                 }
  56.             }
  57.         }
  58.         foreach(Event* evt, event->childs()) { calcMPC(evt); }
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement