Exemplo n.º 1
0
 main(){
     while(1){
    int num=0;
meu();

printf("请输入选择:");

scanf("%d",&num);

switch(num){

case 1:

    fuli(); 

    break;

case 2:

   danli();

    break;

case 3:

    principaljisuan();

break;
 case 4:

     time();
            
 break;

 case 5:

   lilv();

    break;
case 6:

   yearmount();

    break;

    case 7:

   huankuan();

    break;




}

 }
 }
Exemplo n.º 2
0
// pega um percentual do vetor para si e o restante distribui entre os filhos
void Node::divide_v2(vector<int>& numbers)
{
  //printf("%d vai dividir %lu números\n", rank, numbers.size());
  // calcula o rank do filho à esquerda
  const int left_rank  = rank * 2 + 1;
  // calcula o rank do filho à direita
  const int right_rank = rank * 2 + 2;

  vector<int> meu(numbers.begin(), numbers.begin() + conquer_local_size + 1);
  vector<int> resto(numbers.begin() + conquer_local_size + 1, numbers.end());
  

  // printf("%d pegou %lu números para si e sobraram %lu\n", rank, meu.size(), resto.size());

  // calcula a posição da metade do vetor
  const size_t half_size = resto.size() / 2;

  // cria dois vetores com cada metade do vetor original
  vector<int> left(resto.begin(), resto.begin() + half_size);
  vector<int> right(resto.begin() + half_size, resto.end());

  // printf("%d vai enviar %lu números para %d e %lu para %d\n", rank, left.size(), left_rank, right.size(), right_rank);

  // envia os vetores para os nodos filhos
  sendToNode(left_rank, left);
  sendToNode(right_rank, right);

  
  conquer(meu);
  

  // espera um retorno dos nodos filhos
  receiveFromNode(left_rank, left);
  receiveFromNode(right_rank, right);

  // mescla os retornos dos nodos filhos no vetor original
  mergeVectors(left, right, resto);

  // mescla o meu com o novo resto
 
  mergeVectors(meu, resto, numbers);
  
}