コード例 #1
0
ファイル: Affichage.c プロジェクト: Voyager2718/Docs
static
unsigned int
ParcoursRecursif
(Noeud_t arbre, FILE *mfile)
{
	static unsigned int nodenumber;
	unsigned int fg, fd, node;

	node = ++nodenumber;

	if (EstVide(arbre)) {
		fprintf(mfile, "N%d [style=invis]\n", nodenumber);
		return nodenumber;
	}

	fprintf(mfile, "N%d [label=\"%d\"]\n", nodenumber, (int)ValeurDuNoeud(arbre));
	fg = ParcoursRecursif(arbre->filsgauche, mfile);
	fd = ParcoursRecursif(arbre->filsdroit, mfile);
	if (!EstVide(arbre->filsgauche))
		fprintf(mfile, "N%d -> N%d\n", node, fg);
	else
		fprintf(mfile, "N%d -> N%d [style=invis]\n", node, fg);

	if (!EstVide(arbre->filsdroit))
		fprintf(mfile, "N%d -> N%d\n", node, fd);
	else
		fprintf(mfile, "N%d -> N%d [style=invis]\n", node, fd);


	return node;
}
コード例 #2
0
ファイル: ArbreBinaire.c プロジェクト: Voyager2718/Docs
int EstFeuille(Noeud_t a)
{
	if (EstVide(a))
	{
		printf("Error: Le noeud est vide\n");
		exit(ARBREVIDE);
	}
	return (EstVide(Descendre(a, 'g')) && EstVide(Descendre(a, 'd')));
}
コード例 #3
0
ファイル: file2.c プロジェクト: REMath/implementations
void Inserer (unsigned int x, unsigned int p) 
{
		File tete = fileRequete;
		
		File nouveau = (File)malloc(sizeof(struct Req));
		nouveau->requete = x;
		nouveau->imprimante = p;
		nouveau->suivant = NULL;
		
		if (!EstVide())
		{
				while (tete->suivant!=NULL)
				{
					tete = tete->suivant;
				}
				tete->suivant = nouveau;
		}
		else
		{
				fileRequete = nouveau;
		}
		

		
} 	
コード例 #4
0
ファイル: ArbreBinaire.c プロジェクト: Voyager2718/Docs
/* ajoute en fils droit au noeud premier argumentle noeud second
   argument.

   CU: le fils droit doit être vide
   Si il existe deja un noeud non vide a droite, produit une erreur.
   */
void AjouterFilsDroit(Noeud_t pere, Noeud_t fils) {
	if (!EstVide(pere->filsdroit))
	{
		printf("Error: Il y a un fils droit\n");
		exit(FILSEXISTANT);
	}
	AjouterAuNoeud(pere, fils, 'd');
}
コード例 #5
0
ファイル: ArbreBinaire.c プロジェクト: Voyager2718/Docs
/* ajoute en fils gauche au noeud premier argumentle noeud second
   argument.

   CU: le fils gauche doit être vide
   Si il existe deja un noeud non vide a gauche, produit une erreur
   */
void AjouterFilsGauche(Noeud_t pere, Noeud_t fils) {
	if (!EstVide(pere->filsgauche))
	{
		printf("Error: Il y a un fils gauche\n");
		exit(FILSEXISTANT);
	}
	AjouterAuNoeud(pere, fils, 'g');
}
コード例 #6
0
ファイル: simul_file2.c プロジェクト: REMath/implementations
int main() {

	unsigned int germe ;	/* pour le generateur aleatoire */
	unsigned int nb_evenements ;
	unsigned int ratio ;
 	unsigned int x ;	/* valeur aleatoire */
	unsigned int i ; 	/* compteur d'evenements */
	unsigned int r, s ; 	/* numeros de requete */ 
	unsigned int p ;	/* numero d'imprimante */

	/* initialisation du generateur aleatoire */
	printf (" germe : ") ;
	scanf ("%d", &germe) ;
	init_alea(germe, 99) ; /* valeurs aleatoires entre 0 et 99 */

	/* lecture des parametres de la simulation */
	printf("\n nombre d'evenements a generer : ") ;
	scanf("%d", &nb_evenements) ;
	printf("\n Pourcentage de \"Requete d'impression\" (entre 0 et 100) : ") ;
	scanf("%d", &ratio) ;
	printf("\n") ;

	/* simulation */
	Initialiser() ;
	r = 0 ;

	for (i=0 ; i<nb_evenements ; i++) {
		x = suivant_alea() ;
		if (x+1>ratio) {
			if (! EstVide()) {
				p = suivant_alea() % P ;
				Extraire (&s, p) ;
				if (s!=-1)
					printf("traitement de la requete %d par l'imprimante %d\n", s, p) ;
			} else
				printf("\t file vide !\n") ;
		} else {
			if (! EstPlein()) {
				p = suivant_alea() % P ;
				printf("insertion de la requete %d pour l'imprimante %d\n", r, p) ;
				Inserer (r, p) ;
				r = r+1 ;
			} else
				printf("\t file pleine !\n") ;
		} ;
	} ;

	return 0 ;

}
コード例 #7
0
void FileAttente::Ajouter(Client clientAMettreEnFile)
{
   ClientEnAttente* client = new ClientEnAttente(clientAMettreEnFile);

   if (EstVide())
      premier_ = client;
   else
   {
      client->SetPrecedent(dernier_);
      dernier_->SetSuivant(client);
   }

   dernier_ = client;

   nbElements_++;

}
コード例 #8
0
int FileAttente::ObtenirNbPersonnes()
{
   int nbPersonnes = 0;

   if (!EstVide())
   {
      ClientEnAttente* client = premier_;

      while (client != 0)
      {
      nbPersonnes += client->GetNombrePersonnes();
      client = client->GetSuivant();
      }
   }

   return nbPersonnes;
}
コード例 #9
0
ファイル: file2.c プロジェクト: REMath/implementations
void Extraire (unsigned int *x, unsigned int p) 
{
		File tete = fileRequete;
		if (!EstVide())
		{
				if (tete->imprimante==p)
				{
					*x=tete->requete;
					fileRequete=fileRequete->suivant;
					free(tete);
				}
				else
				{
				
					while (tete->suivant!=NULL && (tete->suivant->imprimante!=p))
					{
							tete=tete->suivant;
					}
				
					if (tete->suivant!=NULL)
					{
							*x = tete->suivant->requete;
							File copie = tete->suivant;
							tete->suivant = tete->suivant->suivant;
							free(copie); 
					}
					else
					{
						*x = -1;
					}
				}
		}
		else
		{
				*x = -1;
		}
}
コード例 #10
0
ファイル: prog.c プロジェクト: alexandrebouthinon/PolyWork
int main (void)
{
printf("Lancement du programme des tests du module liste \n");
printf("\n");


TListe l = CreerListe() ;

if(EstVide(l))
	printf("La liste nouvellement crée est bien vide \n");
else
	printf("La liste n'est pas vide\n");

AfficheListe(l);

l=AjoutDebut(l, 3);
printf("Element 3 ajouté \n");
AfficheListe(l);

l=AjoutDebut(l, 5);
printf("Element 5 ajouté \n");
AfficheListe(l);


l=AjoutDebut(l, 1);
printf("Element 1 ajouté \n");
AfficheListe(l);

l=AjoutFin(l, 11);
printf("Element 11 ajouté en fin de liste \n");
AfficheListe(l);

l=AjoutFin(l, 14);
printf("Element 11 ajouté en fin de liste \n");
AfficheListe(l);


printf("Premier de la liste : %d\n",Premier(l));

printf("Premier(Vide) va provoquer une erreur\n");
printf("Premier de la liste : %d\n",Premier(CreerListe()));


printf("Dernier de la liste : %d\n",Premier(l));
printf("Dernier(Vide) va provoquer une erreur\n");

printf("Dernier de la liste : %d\n",Premier(CreerListe())); 
/*l=SupprimerTete(l);
printf("Element de tete supprimé\n");
AfficheListe(l);*/


/**************************************************/
/* A vous de completer pour tester les fonctions  */
/* SupprimerFin                                   */
/* NbOccurence                                    */
/**************************************************/






   return 0;
}
コード例 #11
0
bool bateauxNonCoulee(Joueur j)
{
	/*Renvoie True s'il reste des bateaux en jeu au joueur.*/
	return !EstVide(j->ensembleBat);//Méthode du type de la liste chainée
}