Esempio n. 1
0
File: int.c Progetto: Scicomath/CMW
testgauche() {
	double	xpole = 100, xbase = 0;
	printf("%.15f\n", asin(1.0) * 2 );
	printf( "testing Gauss-Chebyshev integration with 1/sqrt(1-x*x)\n" );
	printf( "exact result:%10f\n", asin(xpole)-asin(xbase) );
	printf( "  %2d points: %10f\n", 4, gauche( 4,testfunc,xbase,xpole) );
	printf( "  %2d points: %10f\n", 8, gauche( 8,testfunc,xbase,xpole) );
	printf( "  %2d points: %10f\n",16, gauche(16,testfunc,xbase,xpole) );
	printf( "  %2d points: %10f\n",96, gauche(96,testfunc,xbase,xpole) );
	}
Esempio n. 2
0
File: eat2.c Progetto: jflorimo/42
void	choose_action(t_data *data)
{
	int prior1;
	int	prior2;

	prior1 = data->shared->pos == 0 ? 6 : data->shared->pos - 1;
	prior2 = (data->shared->pos + 1) % 7;
	if (data->i == prior1 || data->i == prior2)
	{
		repos(data);
		choose_action(data);
	}
	prior2 = 0;
	prior1 = gauche(data);
	if (prior1 == 1)
		prior2 = data->i;
	if (data->etat == 2)
	{
		if (prior1 == 1)
			reflechi_other(data);
		else
			repos(data);
		choose_action(data);
	}
	prior1 += droite(data);
	choose_action2(data, prior1, prior2);
	choose_action(data);
}
Esempio n. 3
0
int main()
{
   for(int i=0;i<9;++i)
      haut();
   droite();
   for(int j=0;j<5;++j)
   {
      for(int i=0;i<8;++i)
         droite();
      bas();
      for(int i=0;i<8;++i)
         gauche();
      if(j!=4)
         bas();
   }
   gauche();
}
Esempio n. 4
0
void afficherParcoursPrefixe(const Abin a)
{
	if (!estVide(a)) {
		cout << (*a).etiquette;
		afficherParcoursPrefixe(gauche(a));
		afficherParcoursPrefixe(droite(a));
	}
}
OjMechantSimple::OjMechantSimple(const qreal x, const qreal y, QString left1,QString left2,QString right1,QString right2, const bool deplacement=true) :
	ObjetJeuMobile(x,y,loadListPixmap(left1,left2,right1,right2)), counter(0),deplacement(deplacement)
{
	if(deplacement)
			droite();
	else
		gauche();

}
Esempio n. 6
0
void thread_input() {
    char c;
    int r;
    c = getchar();
    switch(c) {
    case 'z':
        haut();
        break;
    case 's':
        bas();
        break;
    case 'd':
        droite();
        break;
    case 'q':
        gauche();
        break;
    case 27:
        r = 1;
        while ((c = getchar()) != -1) {
            if (c == 27) {
                r = 1;
                continue;
            }
            r = r * 128 + c;
        }
        switch (r) {
        case 28097:
            haut();
            break;
        case 28098:
            bas();
            break;
        case 28099:
            droite();
            break;
        case 28100:
            gauche();
            break;
        }

    }
}
Esempio n. 7
0
int hauteur(const Abin a)
{
	int Maximum(const int a, const int b);

	if (estVide(a))
	{
		return 0;
	}
	return 1 + Maximum(hauteur(gauche(a)), hauteur(droite(a)));
}
Esempio n. 8
0
void	second_letter_one(t_grille grille, t_mots *mot, int i, int j)
{
  if ((j < grille.y) && (mot->word[1] == grille.tab[i][j + 1] && mot->trouve != 1))
    droite(grille, mot, i ,j);
 if ((j > 0) && (mot->word[1] == grille.tab[i][j - 1] && mot->trouve != 1))
    gauche(grille, mot, i ,j);
if ((i > 0) && (mot->word[1] == grille.tab[i - 1][j] && mot->trouve != 1))
      haut(grille, mot, i ,j);
if ((i < grille.x) && (mot->word[1] == grille.tab[i + 1][j] && mot->trouve != 1))
    bas(grille, mot, i ,j);
}
Esempio n. 9
0
int			ai(t_infos *infos)
{
  static int		i = 0;

  if (!i)
    {
      gauche(infos);
      i++;
    }
  avance(infos);
  return (RETURN_SUCCESS);
}
Esempio n. 10
0
void afficherParcoursLargeur(const Abin a)
{
	FileAttente f;

	init(f);

	ajoutQueue(f, a);
	while (!estVide(f)) {
		if (!estVide(gauche(getTete(f)))) {
			ajoutQueue(f, gauche(getTete(f)));
		}

		if (!estVide(droite(getTete(f)))) {
			ajoutQueue(f, droite(getTete(f)));
		}
		
		cout << racine(getTete(f));
		retirerTete(f);
	}


	//desinit(f);

}
Esempio n. 11
0
/*==========la fonction main()=======*/
int main(void) {

    lcd_init_printf();
    pololu_3pi_init(2000);  
    play_mode(PLAY_CHECK);
    clear();
    print("Hello!");
    play("L16 ceg>c");
    // start receiving data at 9600 baud
    serial_set_baud_rate(9600);
    serial_receive_ring(buffer, 100);
      
    int i=0;
    char dirct,chaine[4], comp='C',*recuper = NULL, *ok;
    long val, veri=0;
    char command;
	/* la boucle qui permet de recuperer la trame caractere par caractere */
    while(1){
	
        for(i=0;i<4;i++){
            command = read_next_byte();
            if (command)
            {
                chaine[i] = command;
            }
        }
         /*recuperation de la lettre recu dans la trame */ 
        dirct = chaine[0];
        
        /*recuperation du reste de la trame en chaine de caractere */
        recuper = strchr(chaine,chaine[1]);
        
        /*conversion de cette chaine recuperer en entier (type long)*/
        val = strtol(recuper, &ok,10);
        
	    /* cette condition permet d'eviter l'execution de la meme trame plusieurs fois*/        
        if(dirct != comp || veri != val)
        {
        clear();
        printf("%s",chaine);
        switch(dirct)
        {
            case 'A':
                avancer(val);
                break;
            case 'R':
                reculer(val);
                break;
            case 'D':
                droit(val);
                break;
            case 'G':
                gauche(val);
                break;
            case 'M':
                melodie();
                break;
            default:
                set_motors(0,0);
                break;
            }
            comp = dirct;
            veri = val;
        }
    }
return 0;
}
Esempio n. 12
0
void deplacements(struct Serpent pSerpents[], int *pNbSerpents, int *pLargeur, int *pHauteur, char pEspace[], int pArret[])
{
  int i = 0;
  
  for( i = 0; i < *pNbSerpents; i++)
    {
      switch(pSerpents[i].direction)
	{
	case GAUCHE:
	  if(pEspace[pSerpents[i].position - 1] == ' ' && ((pSerpents[i].position) % (*pLargeur)) != 0)
	    {
	      (pSerpents[i].position) -= 1;
	      
	    }
	  else
	    {
	      if(pEspace[pSerpents[i].position + *pLargeur] == ' ' && (pSerpents[i].position + *pLargeur) < (*pLargeur * (*pHauteur)))
		{
		  
		  gauche(pLargeur, &pSerpents[i]);
		}
	      else if(pEspace[pSerpents[i].position - *pLargeur] == ' ')
		{
		  droite(pLargeur, &pSerpents[i]);
		}
	      else
		{
		  pArret[i] = 1;
		}
	      
	    }
	  
	  break;
	case DROITE:
	  if(pEspace[pSerpents[i].position + 1] == ' ' && ((pSerpents[i].position) % (*pLargeur)) != (*pLargeur - 1))
	    {
	      (pSerpents[i].position) += 1;
	      
	    }
	  else
	    {
	      if(pEspace[pSerpents[i].position - *pLargeur] == ' ' && (pSerpents[i].position + *pLargeur) > 0)
		{
		  
		  gauche(pLargeur, &pSerpents[i]);
		}
	      else if(pEspace[pSerpents[i].position + *pLargeur] == ' ')
		{
		  droite(pLargeur, &pSerpents[i]);
		}
	      else
		{
		  pArret[i] = 1;
		}
	    }
	  
	  break;
	case HAUT:
	  if(pEspace[pSerpents[i].position - *pLargeur] == ' ' && ((pSerpents[i].position) - *pLargeur) > 0)
	    {
	      (pSerpents[i].position) -= *pLargeur;
	      
	    }
	  else
	    {
	      if(pEspace[pSerpents[i].position - 1] == ' ' && ((pSerpents[i].position) % (*pLargeur)) != 0)
		{
		  
		  gauche(pLargeur, &pSerpents[i]);
		}
	      else if(pEspace[pSerpents[i].position + 1] == ' ')
		{
		  droite(pLargeur, &pSerpents[i]);
		}
	      else
		{
		  pArret[i] = 1;
		}
	    }
	  
	  break;
	case BAS:
	  if(pEspace[pSerpents[i].position + *pLargeur] == ' ' && ((pSerpents[i].position) + *pLargeur) < (*pLargeur * (*pHauteur)))
	    {
	      (pSerpents[i].position) += *pLargeur;
	      
	    }
	  else
	    {
	      if(pEspace[pSerpents[i].position + 1] == ' ' && ((pSerpents[i].position) % (*pLargeur)) != (*pLargeur -1))
		{
		  
		  gauche(pLargeur, &pSerpents[i]);
		}
	      else if(pEspace[pSerpents[i].position - 1] == ' ')
		{
		  droite(pLargeur, &pSerpents[i]);
		}
	      else
		{
		  pArret[i] = 1;
		}
	    }
	  
	  break;
	default:
	  break;
	}
      pEspace[pSerpents[i].position] = pSerpents[i].direction;
      
    }
  
  
}
Esempio n. 13
0
void trouver_chemin(GameElements::Map * map, Math::Vector2<int> & my_cell,Math::Vector2<int> & target_cell,std::vector<Math::Vector2<int>> & chemin)
{
	
	value_tab[my_cell[0]][my_cell[1]] =0;
	Math::Vector2<int> current_cell = target_cell;
	int val_h = 0,val_b = 0,val_d = 0,val_g = 0;
	while(!(current_cell[0] == my_cell[0] && current_cell[1] == my_cell[1]))
	{
		val_h =0;
		val_b =0;
		val_g =0;
		val_d =0;
		//calculer les index des cellules autour
		Math::Vector2<int> haut(current_cell);
		Math::Vector2<int> bas(current_cell);
		Math::Vector2<int> gauche(current_cell);
		Math::Vector2<int> droite(current_cell);
		Math::Vector2<int> choice(current_cell);

		if(bas[0] < map->height()-1) bas[0] ++;
		if(haut[0] > 0) haut[0] --;
		if(gauche[1] > 0) gauche[1] --;
		if(droite[1] < map->width()-1) droite[1] ++;

		int min_val = value_tab[current_cell[0]][current_cell[1]];
		if(haut[0] != current_cell[0]){val_h = value_tab[haut[0]][haut[1]];}
		if(gauche[1] != current_cell[1]){val_g = value_tab[gauche[0]][gauche[1]];}
		if(droite[1] != current_cell[1]){val_d = value_tab[droite[0]][droite[1]];}
		if(bas[0] != current_cell[0]){ val_b = value_tab[bas[0]][bas[1]] ;}
		
		//rechercher la cellule avec la valeur min la plus proche
		if(val_h == -1 && val_d == -1 && val_g == -1 && val_b == -1){std::cout << "CELLULE NON ATTEINTE !! " << std::endl;break;}

		else{
			if(val_h != -1)
				if(min_val > val_h)
				{
					min_val = val_h;					
					choice = haut;
				}
			

			if(val_g != -1)
				if(min_val > val_g)
				{
					min_val = val_g;
					choice = gauche;
				}

			if(val_d != -1)
				if(min_val > val_d)
				{
					min_val = val_d;
					choice = droite;
				}

			if(val_b != -1)
				if(min_val > val_b)
				{
					min_val = val_b;
					choice = bas;
				}
			current_cell = choice ;
			chemin.push_back(choice);
		}	
	}
}
Esempio n. 14
0
void supprimer(Tas *t, Elem *el) { 
  int i = 0;
  int j, d, g, s;
  int idx = el->numero;

  if(t->val[idx] == NULL) {
#ifdef DEBUG
    printf("Le noeud n'existe pas.\n");
#endif
    return;
  }
  else {
    i = t->val[idx]->posTas;
  }

#ifdef DEBUG
  printf("Element trouve : %d\n", i);
#endif
  
  //decrementer le nombre de noeud
  t->nbNoeud--;

  if(i == t->nbNoeud) {
    //c'est le dernier élément l'effacer uniquement
    t->tas[t->nbNoeud] = -1;
    return;
  }

  //echanger le dernier noeud avec le noeud à supprimer 
  //et effacer le dernier noeud
  t->tas[i] = t->tas[t->nbNoeud];
  t->tas[t->nbNoeud] = -1;
  //stocker la valeur dans le tas
  t->val[t->tas[i]]->posTas = i; 
  
  //remonter du pere si il existe
  if(i != 0) {
    i = pere(i);
  }
  
  //reordonner tous les noeuds au dessous du pere
  while(i >= 0) {
    //initialiser le noeud a une valeur impossible
    j = -1;
    d = droite(i);
    g = gauche(i);
    if((d < t->nbNoeud) && compare(t, d, i)) {
      if(compare(t, g, d)) {
	//fils gauche existe et est le plus petit des deux fils
	j = g;
      }
      else {
	//fils droit existe et est plus petit que le pere
	j = d;
      }
    }
    else {
      if((g < t->nbNoeud) && compare(t, g, i)) {
	//fils gauche existe et est le plus petit que le pere
	j = g; 
      }
      //le pere est le plus petit arrêter
    }
    if(j>=0) {
      //il faut faire un swap avec le pére
      s = t->tas[i];
      t->tas[i] = t->tas[j];
      t->tas[j] = s;
      
      //stocker la valeur dans le tas
      t->val[t->tas[i]]->posTas = i; 
      t->val[t->tas[j]]->posTas = j; 
    }
    //j est le nouveau pére
    i = j;
  }
}