예제 #1
0
//OK
struct Noeud* supprimer(Arbre * Racine, int valeur)
{
	struct Noeud* NoeudASupprimer;
	if (Racine->valeur==valeur) // on a trouvé l'élément à supprimer
	{
		NoeudASupprimer=Racine;
		if (NoeudASupprimer->gauche==NULL) //s'il n'y a pas de sous abre gauche, on retourne sous abre droit
        {
			return NoeudASupprimer->droit;
        }
		else
		{
			Racine=NoeudASupprimer->gauche; //sinon on recherche dans gauche l'endroit pour insérer le droit
            while (Racine->droit!=NULL)
            {
                Racine=Racine->droit;
            }
            Racine->droit=NoeudASupprimer->droit;
			return NoeudASupprimer->gauche;
		}
		free(NoeudASupprimer);
	}
	else
	{
		if (Racine->valeur>valeur)
		{
			Racine->gauche=supprimer(Racine->gauche,valeur);
		}
		else
		{
			Racine->droit=supprimer(Racine->droit,valeur);
		}
	}
	return Racine;
}
예제 #2
0
/* un petit exemple d'utilisation */
int main(int argc, char **argv)
{ list_item *ma_liste;
  list_item *vlist_move;

  /* initialise la liste comme une liste vide (pas d'elements) */
  ma_liste = NULL;

  /* on rajoute la valeur 4 au debut de la liste */
  ma_liste = inserer_debut(ma_liste, 4);
  /* on rajoute la valeur 3 au debut de la liste */
  ma_liste = inserer_debut(ma_liste, 3);
  /* on rajoute la valeur 44 a la fin de la liste */
  ma_liste = inserer_fin(ma_liste, 44);
  /* on rajoute la valeur 5 a la fin de la liste */
  ma_liste = inserer_fin(ma_liste, 5);
  /* on supprime la valeur 44 de la liste */
  ma_liste = supprimer(ma_liste, 44);

  /* on parcours la liste pour en afficher le contenu */
  for(vlist_move=ma_liste;vlist_move!=NULL;vlist_move=vlist_move->next)
  {
    printf("valeur %d\n",vlist_move->val);
  }

  return(0);
}
예제 #3
0
Elem *recup_min(Tas *tas)
{
  Elem *e;

  if(tas->nbNoeud == 0) {
    //tas vide
    e = NULL;
  }
  else {
    e = tas->val[tas->tas[0]];
    supprimer(tas, e);
  }

  return e;
}
예제 #4
0
Accueil::Accueil(QWidget* parent): QDialog(parent)
{
    message = new QLabel("Etes vous sur de vouloir tout fermer ?", this);
    valider = new QPushButton("Valider", this);
    annuler = new QPushButton("Annuler", this);
    coucheH1 = new QVBoxLayout;
    coucheH1->addWidget(message);
    coucheH2 = new QVBoxLayout;
    coucheH2->addWidget(valider);
    coucheH2->addWidget(annuler);
    couche = new QHBoxLayout;
    couche->addLayout(coucheH1);
    couche->addLayout(coucheH2);
    setLayout(couche);

    connect(valider, SIGNAL(clicked()), this, SLOT(supprimer()));
    connect(annuler, SIGNAL(clicked()), this, SLOT(close()));
}
예제 #5
0
파일: tp.c 프로젝트: simard/MasterCCI
int main (int argc, char ** argv){
	
	char reponse ='0';
	carnet *  p;
	carnet * d;
	while( reponse!='5'){
		printf("-----------------------------------\n");
		printf("-                                  \n");
		printf("-		CHOIX              \n");
		printf("-                                  \n");
		printf("-----------------------------------\n");
		printf("1-Ajouter un contact \n");
		printf("2-Supprimer un contact\n");
		printf("3-Afficher tous mes contact\n");
		printf("4-Enregistrement de la liste\n");
		printf("5-Quitter\n");
		printf("---------------------------------------\n");
		scanf("\n%c", & reponse);
		switch (reponse){
			case '1': 
				d=creer_contact(p);
				break;
			case '2' :
				
				d=supprimer(p);
				break;
			case'3':
				affichage(d);
				break;
			case '4':
				enregistrement(p);
				break;
			case '5':
				return 0;
		
		};
	};
return 0;	
}
예제 #6
0
int main() {
	int k;
	Liste_proc processus = NULL;
	
	// Créer un premier processus
	inserer(99, PRET, &processus);
	
	// Créer 10 processus dans la liste
	for(k = 0; k < 10; k++){
		inserer(k, PRET, &processus);
	}
	
	// Afficher la liste de processus
	afficher(processus);
	
	// Modifier l'état des processus 1, 4, 7
	modifierEtat(1, SUSPENDU, processus);
	modifierEtat(4, SUSPENDU, processus);
	modifierEtat(7, SUSPENDU, processus);
	
	// Afficher à nouveau la liste de processus
	afficher(processus);
	
	// Afficher le pid du premier processus
	printf("Le processus en tête a pour pid %d\n\n", lireNumTete(processus));
	
	// Supprimer le processus 5
	supprimer(5, &processus);
	
	// Dire si les processus 99, 5, 7, 13 appartiennent aux processus listés
	printf("%d : 99 est dans la liste des processus (1=true, 0=false)\n\n", appartient(99, processus));
	printf("%d : 5 est dans la liste des processus (1=true, 0=false)\n\n", appartient(5, processus));
	printf("%d : 7 est dans la liste des processus (1=true, 0=false)\n\n", appartient(7, processus));
	printf("%d : 13 est dans la liste des processus (1=true, 0=false)\n\n", appartient(13, processus));
	
	return 0;
}
예제 #7
0
/**
 * @brief Constructeur
 *
 * Ce constructeur initialise toutes les fonctions de l'Interface Graphique de cette fenêtre : créer et organiser les
 * objets graphiques, et les connecter avec les bons slots.
 */
UVWindow::UVWindow() {
    setWindowTitle("UTProfiler");
    mainlayout = new QVBoxLayout();
    hlayout1 = new QHBoxLayout();
    pbretour = new QPushButton("Retour");
    lcode = new QLabel("Code : ");
    lecode = new QLineEdit();
    pbrechercher = new QPushButton("Rechercher");
    lresponsable = new QLabel("Responsable : ");
    leresponsable = new QLineEdit();
    hlayout1->addWidget(pbretour);
    hlayout1->addWidget(lcode);
    hlayout1->addWidget(lecode);
    hlayout1->addWidget(pbrechercher);
    hlayout1->addWidget(lresponsable);
    hlayout1->addWidget(leresponsable);
    hlayout2 = new QHBoxLayout();
    tedescription = new QTextEdit();
    vlayout21 = new QVBoxLayout();
    hlayout211 = new QHBoxLayout();
    lprintemps = new QLabel("Printemps : ");
    cbprintemps = new QCheckBox();
    hlayout211->addWidget(lprintemps);
    hlayout211->addWidget(cbprintemps);
    hlayout212 = new QHBoxLayout();
    lautomne = new QLabel("Automne : ");
    cbautomne = new QCheckBox();
    hlayout212->addWidget(lautomne);
    hlayout212->addWidget(cbautomne);
    vlayout21->addLayout(hlayout211);
    vlayout21->addLayout(hlayout212);
    hlayout2->addWidget(tedescription);
    hlayout2->addLayout(vlayout21);
    hlayout3 = new QHBoxLayout();
    lcs = new QLabel("CS : ");
    lecs = new QLineEdit();
    ltm = new QLabel("TM : ");
    letm = new QLineEdit();
    ltsh = new QLabel("TSH :");
    letsh = new QLineEdit();
    lsp = new QLabel("SP : ");
    lesp = new QLineEdit();
    hlayout3->addWidget(lcs);
    hlayout3->addWidget(lecs);
    hlayout3->addWidget(ltm);
    hlayout3->addWidget(letm);
    hlayout3->addWidget(ltsh);
    hlayout3->addWidget(letsh);
    hlayout3->addWidget(lsp);
    hlayout3->addWidget(lesp);

    hlayout4 = new QHBoxLayout();

    ltc = new QLabel("TC : ");
    cbtc = new QCheckBox();
    lhutech = new QLabel("HUTECH : ");
    cbhutech = new QCheckBox();
    lgb = new QLabel("GB : ");
    cbgb = new QCheckBox();
    lgi = new QLabel("GI : ");
    cbgi = new QCheckBox();
    lgm = new QLabel("GM : ");
    cbgm = new QCheckBox();
    lgp = new QLabel("GP : ");
    cbgp = new QCheckBox();
    lgsm = new QLabel("GSM : ");
    cbgsm = new QCheckBox();
    lgsu = new QLabel("GSU : ");
    cbgsu = new QCheckBox();

    hlayout4->addWidget(ltc);
    hlayout4->addWidget(cbtc);
    hlayout4->addWidget(lhutech);
    hlayout4->addWidget(cbhutech);
    hlayout4->addWidget(lgb);
    hlayout4->addWidget(cbgb);
    hlayout4->addWidget(lgi);
    hlayout4->addWidget(cbgi);
    hlayout4->addWidget(lgm);
    hlayout4->addWidget(cbgm);
    hlayout4->addWidget(lgp);
    hlayout4->addWidget(cbgp);
    hlayout4->addWidget(lgsm);
    hlayout4->addWidget(cbgsm);
    hlayout4->addWidget(lgsu);
    hlayout4->addWidget(cbgsu);
    hlayout5 = new QHBoxLayout();
    pbnouveau = new QPushButton("Nouveau");
    pbsupprimer = new QPushButton("Supprimer");
    pbsauver = new QPushButton("Sauver");
    hlayout5->addWidget(pbnouveau);
    hlayout5->addWidget(pbsupprimer);
    hlayout5->addWidget(pbsauver);
    mainlayout->addLayout(hlayout1);
    mainlayout->addLayout(hlayout2);
    mainlayout->addLayout(hlayout3);
    mainlayout->addLayout(hlayout4);
    mainlayout->addLayout(hlayout5);
    this->setLayout(mainlayout);
    QObject::connect(pbretour,SIGNAL(clicked()),this,SLOT(close()));
    QObject::connect(pbsupprimer,SIGNAL(clicked()),this,SLOT(supprimer()));
    QObject::connect(pbnouveau,SIGNAL(clicked()),this,SLOT(nouveau()));
    QObject::connect(lecode,SIGNAL(returnPressed()),this,SLOT(rechercher()));
    QObject::connect(pbrechercher,SIGNAL(clicked()),this,SLOT(rechercher()));
    QObject::connect(pbsauver,SIGNAL(clicked()),this,SLOT(sauver()));
    QObject::connect(leresponsable,SIGNAL(textChanged(QString)),this,SLOT(pbsauverEnable()));
    QObject::connect(tedescription,SIGNAL(textChanged()),this,SLOT(pbsauverEnable()));
    QObject::connect(lecs,SIGNAL(textChanged(QString)),this,SLOT(pbsauverEnable()));
    QObject::connect(letm,SIGNAL(textChanged(QString)),this,SLOT(pbsauverEnable()));
    QObject::connect(letsh,SIGNAL(textChanged(QString)),this,SLOT(pbsauverEnable()));
    QObject::connect(lesp,SIGNAL(textChanged(QString)),this,SLOT(pbsauverEnable()));
    QObject::connect(cbprintemps,SIGNAL(stateChanged(int)),this,SLOT(pbsauverEnable()));
    QObject::connect(cbautomne,SIGNAL(stateChanged(int)),this,SLOT(pbsauverEnable()));
    QObject::connect(cbtc,SIGNAL(stateChanged(int)),this,SLOT(pbsauverEnable()));
    QObject::connect(cbhutech,SIGNAL(stateChanged(int)),this,SLOT(pbsauverEnable()));
    QObject::connect(cbgb,SIGNAL(stateChanged(int)),this,SLOT(pbsauverEnable()));
    QObject::connect(cbgi,SIGNAL(stateChanged(int)),this,SLOT(pbsauverEnable()));
    QObject::connect(cbgm,SIGNAL(stateChanged(int)),this,SLOT(pbsauverEnable()));
    QObject::connect(cbgp,SIGNAL(stateChanged(int)),this,SLOT(pbsauverEnable()));
    QObject::connect(cbgsm,SIGNAL(stateChanged(int)),this,SLOT(pbsauverEnable()));
    QObject::connect(cbgsu,SIGNAL(stateChanged(int)),this,SLOT(pbsauverEnable()));
}
예제 #8
0
파일: gestion_compte.c 프로젝트: vlnk/isima
int main(int argc, char** argv)
{
    /*variables locales*/
    login_t * ptete;
    login_t * ajout;
    int confirm = 1;
    char demande_ajout_t;
    char demande_position_t;

    /*allocation du pointeur vers le premier élement de la structure*/
    ptete = (login_t *) malloc (sizeof(login_t));
    (*ptete).suivant = NULL;

    /*initialisation des éléments*/
    initialiser(ptete);

    while (confirm == 1)
    {
        /*demande/choix entre la modif ou la création d'un compte*/
        printf("Voulez-vous ajouter, supprimer un compte ou ne rien faire ? (a/s/f) ");
        fflush(stdout);
        scanf("%s%*c",&demande_ajout_t);

        if ((demande_ajout_t == 'a') && (strcmp("vide", (*ptete).nom_de_login) == 0))
        {
            /*ajout d'un compte sur un élément vide*/
            saisie(ptete);
        }

        else if (demande_ajout_t == 'a')
        {
            /*ajout d'un compte par création d'un élément*/
            ajout = (login_t *) malloc(sizeof(login_t));

            if (ajout == NULL)
            {
                printf("Erreur d'allocation");
            }
            else
            {
                /*saisie du compte*/
                saisie(ajout);

                /*ajout du compte au gestionnaire*/
                printf("Voulez-vous ajouter le compte en fin, au milieu ou au debut (f/n/d) ? ");
                fflush(stdout);
                scanf("%c%*c", &demande_position_t);

                if (demande_position_t == 'f')
                {
                    inserFin(ptete,&ajout);
                }
                else if (demande_position_t == 'd')
                {
                    inserTete(&ptete,&ajout);
                }
                else if (demande_position_t == 'm')
                {
                    inserMilieu(ptete,&ajout);
                }
            }
        }
        else if (demande_ajout_t == 's')
        {
            supprimer(&ptete);
        }
        else
        {
            confirm = 0;
        }
    }

    /*affichage des élements*/
    affichage(ptete);

    /*libération de la mémoire allouée*/
    liberation(&ptete);

	return 0;
}
예제 #9
0
/**
 * @brief Résout un puzzle
 * @param[in,out] p le puzzle à résoudre
 * @param[in] t le damier initial
 * @param[in,out] os flux de sortie
 */
void jouer(Puzzle& p, const Tab2D& t, std::ostream& os) {
	Etat etatInitial;
	Etat etatCourant;
	Tab2D damierFinal;
	Etat etatDerive;

	double tempsDebutRecherche = getTime();

	but(damierFinal, t.nbL, t.nbC);
	initialiser(etatInitial.damier, t.nbL, t.nbC);
	etatInitial.mouvement = FIXE;
	etatInitial.precedent = 0;
	etatInitial.g = 0;

	//Copie du damier inititial dans etatInitial
	for (unsigned int l = 0; l < t.nbL; ++l) {
		for (unsigned int c = 0; c < t.nbC; ++c) {
			etatInitial.damier.tab[l][c] = t.tab[l][c];
		}
	}
	etatInitial.h = manhattan(etatInitial.damier, damierFinal);

	initialiser(etatDerive.damier, t.nbL, t.nbC);

	inserer(p.lEAE, 0, etatInitial); //étatInitial dans LEAE

	bool solutionTrouvee = false;
	bool mvtPossible;
	unsigned int pos;

	while (p.lEAE.nb != 0) {
		pos = minimal(p.lEAE);
		etatCourant = lire(p.lEAE, pos); //on prend le 1er état à explorer
		//insérer étatCourant dans LEE
		inserer(p.lEE, longueur(p.lEE), etatCourant);
		supprimer(p.lEAE, pos); //supprimer étatCourant de LEAE

		if (etatCourant.h == 0) { // le damier de étatCourant est le damier but
			solutionTrouvee = true;
			break; //sortir de la boucle while
		}

		/*pour_tout (mouvement possible associé à étatCourant)
		mouvement possible relatif à damier de étatCourant (etatCourant.damier)
		ordre d'exploration (obligatoire) NORD, EST, SUD, OUEST */
		//initialiser un étatDérivé // d'après le mouvement

		for(int m = OUEST; m >= NORD; --m) {
			mvtPossible = deriver(etatCourant, (Mouvement) m, etatDerive);
			if (mvtPossible && !rechercher(etatDerive, p.lEAE)\
				&& !rechercher(etatDerive, p.lEE)) {
				etatDerive.precedent = longueur(p.lEE) - 1;
				etatDerive.h = manhattan(etatDerive.damier, damierFinal);
				etatDerive.g = etatCourant.g + 1;
				//insérer étatDérivé dans LEAE
				inserer(p.lEAE, longueur(p.lEAE), etatDerive);
			}
		}
	}

	double tempsFinRecherche = getTime();
	cout << "Durée de recherche : " << tempsFinRecherche - tempsDebutRecherche
		<<" seconde(s)."<< endl;

	if (solutionTrouvee) {
		Pile sol;
		Etat etatSol;
		initialiser(sol, 3, 2);
		initialiser(etatSol.damier, t.nbL, t.nbC);

		//Stockage de la solution
		etatSol = lire(p.lEE, longueur(p.lEE)-1);
		empiler(sol, etatSol);
		while (etatSol.precedent != 0) {
			etatSol = lire(p.lEE, etatSol.precedent);
			empiler(sol, etatSol);
		}
		empiler(sol, etatInitial);

		//Affichage de la solution
		os << "Damier : " << t.nbL << " lignes " << t.nbC << " colonnes"
			<< endl;
		os << "Solution en " << sol.sommet << " mouvements" << endl;
		while (!estVide(sol)) {
			afficher(sommet(sol), os);
			os << endl;
			depiler(sol);
		}
		detruire(sol);
		detruire(etatSol.damier);
	}
	else {
		os << "Solution non trouvée" << endl;
	}
	detruire(etatInitial.damier);
	detruire(etatCourant.damier);
	detruire(etatDerive.damier);
	detruire(damierFinal);
}
예제 #10
0
int main(int argc, char ** argv){
  struct timeval start, end;
  Liste * fichiers = fichiers_reguliers(SHAKESPEARE_DIR);
  Liste * mots;
  char * fichier;
  TrieHybride * t = NULL;
  int i,fd,fd2,arg_fusion,res;
  double res_d;
  char buff[128];
  pthread_t tid[NB_THREADS];
  pthread_attr_t attr; 
  briandais_t * br;

  /****************************************************************************
                      BENCHMARK INSERTION NON MULTITHREADE
  ****************************************************************************/
  printf("Insertion de toutes les pieces de Shakespeare \t\t: En cours ...");
  fflush(stdout);
  temps(&start);
  while((fichier=supprimer_debut(fichiers))){
    t=lire_fichier_th(fichier,t);
    free(fichier);
  }
  temps(&end);
  afficher_res(start,end);
  destroy_liste(fichiers);

  /****************************************************************************
                          SUPPRESSION MOTS HAMLET
  ****************************************************************************/
  printf("Suppression des mots de la piece \"Hamlet\" \t\t: En cours ...");  
  fflush(stdout);

  fd=ouvrir_fichier(SHAKESPEARE_DIR"hamlet.txt");
  if(fd<0){
    perror("ouverture fichier");
    exit(EXIT_FAILURE);
  }

  temps(&start);
  while(mot_suivant(fd,buff)>0){
    t=supprimer(t,buff);
  }
  temps(&end);
  afficher_res(start,end);

  if(close(fd)==-1){
    perror("close");
    exit(EXIT_FAILURE);
  }

  /****************************************************************************
                         RECHERCHE ALL'S WELL & HAMLET
  ****************************************************************************/
  printf("Recherche des mots de All's Well et Hamlet \t\t: En cours ...");  
  fflush(stdout);

  fd=ouvrir_fichier(SHAKESPEARE_DIR"hamlet.txt");
  if(fd<0){
    perror("ouverture fichier");
    exit(EXIT_FAILURE);
  }

  fd2=ouvrir_fichier(SHAKESPEARE_DIR"allswell.txt");
  if(fd2<0){
    perror("ouverture fichier");
    exit(EXIT_FAILURE);
  }

  temps(&start);
  while(mot_suivant(fd,buff)>0){
    recherche_trie_hybride(t,buff);
  } 
  while(mot_suivant(fd2,buff)>0){
    recherche_trie_hybride(t,buff);
  }
  temps(&end);

  afficher_res(start,end);
  if(close(fd)==-1){
    perror("close");
    exit(EXIT_FAILURE);
  } 

  if(close(fd2)==-1){
    perror("close");
    exit(EXIT_FAILURE);
  }

  /****************************************************************************
                        DESTRUCTION TRIE HYBRIDE
  ****************************************************************************/
  printf("Destruction du trie hybride \t\t\t\t: En cours ...");  
  fflush(stdout);

  temps(&start);
  free_trie_hybride(t);
  temps(&end);

  afficher_res(start,end);

  /****************************************************************************
                       CREATION SHAKESPEARE MULTITHREADE
  ****************************************************************************/
  fics=fichiers_reguliers(SHAKESPEARE_DIR);
  tries=creer_liste();
  sem_init(&sem,1,0);
  arg_fusion=fics->taille;  
  pthread_attr_init(&attr);
  pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);

  printf("Insertion multithreade des oeuvres de Shakespeare\t: En cours ...");  
  fflush(stdout);


  temps(&start);
  pthread_mutex_lock(&mutex_fics);
  for(i=0;i<NB_THREADS-1;i++){
    if(pthread_create(&(tid[i]),&attr,creation_trie_thread,NULL)==-1){
      perror("pthread_create");
      exit(EXIT_FAILURE);
    }
  }
  
  if(pthread_create(&(tid[NB_THREADS-1]),&attr,fusion_thread,&arg_fusion)==-1){
    perror("pthread_create");
    exit(EXIT_FAILURE);
  }

  pthread_cond_wait(&cond,&mutex_fics);
  temps(&end);

  afficher_res(start,end);

  destroy_liste(fics);
  t=supprimer_debut(tries);
  destroy_liste(tries);

 /****************************************************************************
                                COMPTAGE MOTS
  ****************************************************************************/
  printf("Comptage des mots \t\t\t\t\t: En cours ...");
  fflush(stdout);

  temps(&start);
  res=comptage_mots(t);
  temps(&end);
  afficher_res(start,end);
  printf("\t\t\t\t\t\t\t  %d\n",res);

  /****************************************************************************
                              POINTEURS VERS NULL
  ****************************************************************************/ 
  printf("Comptage des pointeurs vers NULL\t\t\t: En cours ...");
  fflush(stdout);

  temps(&start);
  res=comptage_nil(t);
  temps(&end);
  afficher_res(start,end);
  printf("\t\t\t\t\t\t\t  %d\n",res);

  /****************************************************************************
                 CREATION ET DESTRUCTION DE LA LISTE DES MOTS
  ****************************************************************************/ 
  printf("Creation et destruction de la liste des mots\t\t: En cours ...");
  fflush(stdout);

  temps(&start);
  mots=liste_mots(t);
  while(mots->taille!=0){
    char * tmp=supprimer_debut(mots);
    free(tmp);
  }
  free(mots);
  temps(&end);
  afficher_res(start,end);

  /****************************************************************************
                                   HAUTEUR
  ****************************************************************************/
  printf("Calcul de la hauteur \t\t\t\t\t: En cours ...");
  fflush(stdout);
  temps(&start);
  res=hauteur(t);
  temps(&end);
  afficher_res(start,end);
  printf("\t\t\t\t\t\t\t  %d\n",res);


  /****************************************************************************
                                 EQUILIBRAGE
  ****************************************************************************/
  printf("Equilibrage du trie\t\t\t\t\t: En cours ...");
  fflush(stdout);
  temps(&start);
  t=equilibrer(t);
  temps(&end);
  afficher_res(start,end);

  /****************************************************************************
                              RECALCUL HAUTEUR
  ****************************************************************************/
  printf("Recalcul de la hauteur \t\t\t\t\t: En cours ...");
  fflush(stdout);
  temps(&start);
  res=hauteur(t);
  temps(&end);
  afficher_res(start,end);
  printf("\t\t\t\t\t\t\t  %d\n",res);

  /****************************************************************************
                             PROFONDEUR MOYENNE
  ****************************************************************************/
  printf("Profondeur Moyenne\t\t\t\t\t: En cours ...");
  fflush(stdout);
  temps(&start);
  res_d=profondeur_moyenne(t);
  temps(&end);
  afficher_res(start,end);
  printf("\t\t\t\t\t\t\t  %f\n",res_d);

  /****************************************************************************
                          CONVERSION VERS BRIANDAIS
  ****************************************************************************/
  printf("Conversion vers arbre de la briandais\t\t\t: En cours ...");
  fflush(stdout);
  temps(&start);
  br=conversion(t);
  temps(&end);
  afficher_res(start,end);
  destroy_briandais(&br);

  /****************************************************************************
                        INSERTION D'UN MOT INEXISTANT
  ****************************************************************************/
  printf("Insertion d'un mot inexistant(anticonstitutionnellement): En cours ...");
  fflush(stdout);
  temps(&start);
  t=ajouter_trie_hybride("anticonstitutionnellement",t);
  temps(&end);
  afficher_res(start,end);
 
 /****************************************************************************
                        INSERTION D'UN MOT INEXISTANT
  ****************************************************************************/
  printf("Usage memoire (en octets)\t\t\t\t: En cours ...");
  fflush(stdout);
  temps(&start);
  res=usage_memoire(t);
  temps(&end);
  afficher_res(start,end);
  printf("\t\t\t\t\t\t\t  %d\n",res);

  free_trie_hybride(t);
  return EXIT_SUCCESS;
}
예제 #11
0
int main()
{
  int choix;
  Liste *liste = NULL; // Liste des variables
  do
    {
      printf("\n______________________________\n"
             "1 - Utilisation de la mémoire\n"
             "2 - Ajouter une variable\n"
             "3 - Afficher une variable\n"
             "4 - Supprimer une variable\n"
             "Autre - Quitter\n"
             "Choix : ");
      scanf("%d", &choix);
      printf("------------------------------\n\n");

      switch(choix)
        {
        case 1: // Utilisation de la mémoire
          printf("Mémoire utilisée : %d octet\n", mem.fin + 1);
          break;
        case 2: // Ajout d'une variable
          {
            // nom
            char nom[100];
            printf("Nom de la variable : ");
            scanf("%s", nom);

            if(recherche_variable(liste, nom))
              printf("%s existe déja\n", nom);
            else
              {
                // taille
                int taille;
                printf("Taille : ");
                scanf("%d", &taille);

                // type
                int typeNum = 0;
                printf("Type : \n"
                       "0 - INT\n"
                       "1 - CHAR\n"
                       "2 - FLOAT\n"
                       "3 - SHORT\n"
                       "4 - LONG\n"
                       "5 - DOUBLE\n");
                scanf("%d", &typeNum);

                // allocation
                Variable var = allouer(nom, taille, (Type) typeNum);

                // valeur
                printf("Valeurs : \n");
                lire_valeur(var);

                // stockage dans la liste
                liste_ajout(&liste, var);
              }
            break;
          }
        case 3: // Affichage d'une variable
          {
            char nom[100];
            printf("Entrez le nom de la variable : ");
            scanf("%s", nom);
            Variable *var = recherche_variable(liste, nom);
            if(var)
              {
                printf("Adresse : %d\n"
                       "Type : %s\n"
                       "Valeur : \n",
                       var->adrs, type_a_chaine(var->type));
                afficher_val(*var);
                printf("\n");
                printf("Taille : %d\n", var->size);
              }
            else printf("\"%s\" n'existe pas\n", nom);
            break;
          }
        case 4: // Supression d'une variable
          {
            char nom[100];
            printf("Entrez le nom de la variable : ");
            scanf("%s", nom);

            Variable *recherche = recherche_variable(liste, nom);
            if(recherche)
              {
                supprimer(*recherche);
                liste_supprimer(&liste, nom);
              }
            else
              printf("%s n'existe pas\n", nom);

          }
        }
    } while( 1 <= choix && choix <= 4);

  return 0;
}