Les Fous du Binaire
Les Fous du Binaire
Les Fous du Binaire
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


Imaginez un forum qui vous aide a comprendre vos cours d'informatique vos propose des exercices (solutionner / non solutionner), vos aide a réaliser vos Tp d'informatique...& plein d'autre choses intéressantes Un tel forum est : les Fous du Binaire
 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment : -47%
SAMSUNG T7 Shield Bleu – SSD Externe 1 To ...
Voir le deal
89.99 €

 

 Algorithme de l'Annuaire

Aller en bas 
5 participants
AuteurMessage
Choubisoft
Admin
Choubisoft


Masculin Messages : 123
Points : 7129
Date de naissance : 02/11/1989
Date d'inscription : 18/02/2010
Age : 35
Localisation : Casablanca
Emploi/loisirs : Etudiant

Algorithme de l'Annuaire Empty
MessageSujet: Algorithme de l'Annuaire   Algorithme de l'Annuaire I_icon_minitimeDim 23 Mai - 12:23

Bonjour / Bonsoir chers membres,

Voila le code source de l'annuaire Smile bon le code est simple, bien commenter, les fonctions sont si simple a comprendre Smile mais ça empêche d'en discuter si vous rencontrez des difficulté ....

juste je doit motionner que si les barre des encadrement des tableaux et tout; s'il s'affiche bizarrement enlever les et remplacer les par leur code ASCII que vous pouvez retrouver ICI

Donc sans tarder voila le code C:



Code:

/**
  Name:    Annuaire
  Author :  Boukhris Chouaib.
  Date:    09/05/10  12:25.
  Derniere Mise a Jour :  23/05/10 19:04.
  Description: Manipulation des listes chainées .
  Licence : Copyleft OpenSource.
**/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>


//Liste Chainé de l'annuaire.
typedef struct Annuaire{
    char nom[30];
    char tel[11]; // Type Char Pour un controle facile du numéro saisie.

    struct Annuaire *next;
}Liste;

typedef Liste* Annu;


//============================================================================================================================
// Fonction qui saisie l'annuaire (Ajouter en fin de liste).
Annu Saisie(Annu anu_tel){

    char c;
    Annu new_element = (Annu)malloc(sizeof(Liste));

    // Vider le buffer.
    while( (c=getchar())!='\n' && c!=EOF );

    printf("\n\tDonnez le Nom : ");
    gets(new_element->nom);

    do{
        printf("\tDonnez le Numéro de téléphone : ");
        gets(new_element->tel);
    }while((strncmp(new_element->tel, "06", 2)!=0 && strncmp(new_element->tel, "05", 2)!=0) || strlen(new_element->tel)!=10);

    /* On ajoute en fin, donc aucun élément ne va suivre */
    new_element->next = NULL;

    if(anu_tel == NULL)
    {
        /* Si la liste est videé il suffit de renvoyer l'élément créé */
        return new_element;
    }
    else
    {
        /* Sinon, on parcourt la liste à l'aide d'un pointeur temporaire et on
        indique que le dernier élément de la liste est relié au nouvel élément */
        Annu temp= anu_tel;
        while(temp->next != NULL)
        {
            temp = temp->next;
        }
        temp->next = new_element;
        return anu_tel;
    }

}


//=================================================================================================================
// Afficher le numéro de tel d’un abonné.
void Affiche_abo(Annu liste){

    char nom[30], c;


    if(liste== NULL)
    {
        printf("Saisissez daord la liste ...!!");
    }
    else{
        // Création de variable temporaire pour ne pas perdre l'adresse de la tête.
        Annu temp= liste;
        while( (c=getchar())!='\n' && c!=EOF );
        printf("Vous cherchez quel abonné :");
        gets(nom);

        while(temp!= NULL)
        {
                if(strcmp(temp->nom, nom) == 0)
                    printf("\n\t%s  :  %s", temp->nom, temp->tel);

            temp = temp->next;
        }

    }

}


//==================================================================================================================
// Afficher la liste des abonnés.
void Aff_Li_Abo(Annu liste){

    Annu temp = liste;
    if(liste == NULL){
        printf("\n\tSaisissez daord la liste ...!!");
    }
    else{
        printf("\n\n╭───────────────────────────────────────────────────────────────────────────╮\n");
        printf("│                                Liste des abonnés                        │\n");
        printf("├─────────────────────────────────────┬─────────────────────────────────────┤\n");
        printf("│                Nom                  │                Tél                  │\n");
        printf("├─────────────────────────────────────┼─────────────────────────────────────┤\n");

        /* Tant que l'on n'est pas au bout de la liste */
        while(temp)
        {
            /* On affiche */
            printf("│      %20s          │              %10s            │\n", temp->nom, temp->tel);
            /* On avance d'une case */
            temp = temp->next;
        }

        printf("╰─────────────────────────────────────┴─────────────────────────────────────╯");
    }
}


//==================================================================================================================
// Fonction récursive pour Supprimer un abonnés.
Annu Sppr_Abo(Annu liste , char *Abo){

    /* Liste vide, il n'y a plus rien à supprimer */
    if(liste == NULL){
        printf("\n\tSaisissez daord la liste ...!!");
        return NULL;
    }

    /* Si l'élément en cours de traitement doit être supprimé */
    if(strcmp(liste->nom, Abo) == 0){

        /* On le supprime en prenant soin de mémoriser
        l'adresse de l'élément suivant */
        Annu temp = liste->next;
        free(liste);

        /* L'élément ayant été supprimé, la liste commencera à l'élément suivant
        pointant sur une liste qui ne contient plus aucun élément ayant la valeur recherchée */
        temp = Sppr_Abo(temp, Abo);
        return temp;
    }
    else{

        /* Si l'élement en cours de traitement ne doit pas être supprimé,
        alors la liste finale commencera par cet élément et suivra une liste ne contenant
        plus d'élément ayant la valeur recherchée */
        liste->next = Sppr_Abo(liste->next, Abo);
        return liste;
    }
}


//==================================================================================================================
// Fonction de tri de la liste chainée avec boucle for.
Annu Tri_for(Annu liste){

    Annu i, j, min;
    char aux_nom[30], aux_tel[11];

    /* Liste vide, il n'y a rien à trié */
    if(liste == NULL){
        printf("\n\tSaisissez daord la liste ...!!");
        return NULL;
    }

    for(i= liste; i->next != NULL; i= i->next){
        min= i;

        for(j= i->next; j != NULL; j= j->next){
            if(strcmp(min->nom, j->nom) > 0)
                min=j;
        }

        if(min != i){
            strcpy(aux_nom, min->nom);
            strcpy(min->nom, i->nom);
            strcpy(i->nom, aux_nom);

            strcpy(aux_tel, min->tel);
            strcpy(min->tel, i->tel);
            strcpy(i->tel, aux_tel);
        }
    }

    return liste;

}

//====================================================================================================================
// Fonction de tri de la liste chainée avec boucle while.
Annu Tri_while(Annu liste){

    Annu i, j, min;
    char aux_nom[30], aux_tel[11];

    /* Liste vide, il n'y a rien à trié */
    if(liste == NULL){
        printf("\n\tSaisissez daord la liste ...!!");
        return NULL;
    }

    i= liste;
    while(i->next){
        min= i;

        j= i->next;
        while(j){
            if(strcmp(min->nom, j->nom) > 0)
                min=j;

            j= j->next;
        }

        if(min != i){
            strcpy(aux_nom, min->nom);
            strcpy(min->nom, i->nom);
            strcpy(i->nom, aux_nom);

            strcpy(aux_tel, min->tel);
            strcpy(min->tel, i->tel);
            strcpy(i->tel, aux_tel);
        }

        i= i->next;
    }

    return liste;

}


//====================================================================================================================
//Effacer complètement une liste chaînée de la mémoire.
Annu Effacer(Annu liste){

    if(liste == NULL)
    {
        /* Si la liste est vide, il n'y a rien à effacer, on retourne
        une liste vide i.e. NULL */
        return NULL;
    }
    else
    {
        /* Sinon, on efface le premier élément et on retourne le reste de la
        liste effacée */
        Annu temp;
        temp = liste->next;
        free(liste);
        return Effacer(temp);
    }
}


//====================================================================================================================
// Menu
//====================================================================================================================
// Menu.
int menu(void){

    int choix;


    printf("\n\n╭───────────────────────────────────────────────────────────────────────────╮\n");
    printf("│                                    Menu                                  │\n");
    printf("├─────────┬─────────────────────────────────────────────────────────────────┤\n");
    printf("│    N°  │                          Choix                                │\n");
    printf("├─────────┼─────────────────────────────────────────────────────────────────┤\n");
    printf("│    1    │                        Saisir l'annuaire                        │\n");
    printf("├─────────┼─────────────────────────────────────────────────────────────────┤\n");
    printf("│    2    │            Afficher  le numéro de tel d’un abonné              │\n");
    printf("├─────────┼─────────────────────────────────────────────────────────────────┤\n");
    printf("│    3    │                  Afficher la liste des abonnés                  │\n");
    printf("├─────────┼─────────────────────────────────────────────────────────────────┤\n");
    printf("│    4    │                      Supprimer un abonné                      │\n");
    printf("├─────────┼─────────────────────────────────────────────────────────────────┤\n");
    printf("│    5    │                        Trier l’annuaire                        │\n");
    printf("├─────────┼─────────────────────────────────────────────────────────────────┤\n");
    printf("│    0    │                    ** Qutier le programme **                  │\n");
    printf("╰─────────┴─────────────────────────────────────────────────────────────────╯");
    printf("\n\t\t\tTapez votre choix : ");

    scanf("%d",&choix);

    return (choix);
}

//====================================================================================================================
// Main
int main(void){

    Annu Mon_Annu= NULL;
    char ch, abo[30], c;
    int choix;


    while(1){
        choix=menu();

        switch (choix){
            case 0:
                exit (0); // end of programme.

            case 1:
                system("clear");
                do{
                    Mon_Annu=Saisie(Mon_Annu);
                    printf("voulez vous saisre Oui/Non :");
                    ch=getchar();

                }while(tolower(ch) != 'n');

                printf("\n\n\t\tAppuyer sur n'importe quel touche pour continuer ...");
                while( (c=getchar())!='\n' && c!=EOF );
                getchar();
                system("clear");
                break;

            case 2:
                system("clear");
                Affiche_abo(Mon_Annu);

                printf("\n\n\t\tAppuyer sur n'importe quel touche pour continuer ...");
                while( (c=getchar())!='\n' && c!=EOF );
                getchar();
                system("clear");
                break;


            case 3:
                system("clear");
                Aff_Li_Abo(Mon_Annu);

                printf("\n\n\t\tAppuyer sur n'importe quel touche pour continuer ...");
                while( (c=getchar())!='\n' && c!=EOF );
                getchar();
                system("clear");
                break;

            case 4:
                system("clear");
                printf("\n\n\tDonnez le nom de l'abonné a supprimé : ");
                scanf("%s", abo);
                Mon_Annu=Sppr_Abo(Mon_Annu , abo);

                printf("\n\n\t\tAppuyer sur n'importe quel touche pour continuer ...");
                while( (c=getchar())!='\n' && c!=EOF );
                getchar();
                system("clear");
                break;


            case 5:
                system("clear");
                Mon_Annu= Tri_while(Mon_Annu);
                printf("\n\n\tTrie réussi :D ...");

                printf("\n\n\t\tAppuyer sur n'importe quel touche pour continuer ...");
                while( (c=getchar())!='\n' && c!=EOF );
                getchar();
                system("clear");
                break;

            default:
                system("clear");
                printf("\n\n╭───────────────────────────────────────────────────────────────────────────────╮\n");
                printf("│                                  Erreur...!!                                  │\n");
                printf("│                                Choix invalide                                │\n");
                printf("╰───────────────────────────────────────────────────────────────────────────────╯\n");
                printf("\n\n\t\tAppuyer sur n'importe quel touche pour continuer ...");
                while( (c=getchar())!='\n' && c!=EOF );
                getchar();
                system("clear");
                break;

        }
    }

    Mon_Annu = Effacer(Mon_Annu);
    return 0;
}


Cordialement.


Dernière édition par Choubisoft le Mar 25 Mai - 4:04, édité 1 fois
Revenir en haut Aller en bas
https://fous-du-binaire.1fr1.net
adib jihad

avatar


Messages : 21
Points : 5435
Date d'inscription : 23/02/2010

Algorithme de l'Annuaire Empty
MessageSujet: Re: Algorithme de l'Annuaire   Algorithme de l'Annuaire I_icon_minitimeDim 23 Mai - 13:03

merci chouchou
Revenir en haut Aller en bas
nowara

nowara


Messages : 3
Points : 5330
Date d'inscription : 02/05/2010

Algorithme de l'Annuaire Empty
MessageSujet: Re: Algorithme de l'Annuaire   Algorithme de l'Annuaire I_icon_minitimeDim 23 Mai - 13:11

enfinnnnnnn merci choub
Revenir en haut Aller en bas
khalidmaroc1988

khalidmaroc1988


Masculin Messages : 39
Points : 5510
Date de naissance : 19/11/1988
Date d'inscription : 01/03/2010
Age : 36

Algorithme de l'Annuaire Empty
MessageSujet: Re: Algorithme de l'Annuaire   Algorithme de l'Annuaire I_icon_minitimeVen 28 Mai - 17:17

merci
Revenir en haut Aller en bas
pecmaker

pecmaker


Messages : 4
Points : 5398
Date d'inscription : 25/02/2010

Algorithme de l'Annuaire Empty
MessageSujet: Re: Algorithme de l'Annuaire   Algorithme de l'Annuaire I_icon_minitimeSam 5 Juin - 15:05

Bonsoir,
Merci pour l algorithme >_<
j ai besoin de l énoncé de cet exercice ...
merci d avance ^^
Revenir en haut Aller en bas
Choubisoft
Admin
Choubisoft


Masculin Messages : 123
Points : 7129
Date de naissance : 02/11/1989
Date d'inscription : 18/02/2010
Age : 35
Localisation : Casablanca
Emploi/loisirs : Etudiant

Algorithme de l'Annuaire Empty
MessageSujet: Re: Algorithme de l'Annuaire   Algorithme de l'Annuaire I_icon_minitimeDim 6 Juin - 8:21

Voila le lien de la serie Lien

Cordialement.
Revenir en haut Aller en bas
https://fous-du-binaire.1fr1.net
Contenu sponsorisé





Algorithme de l'Annuaire Empty
MessageSujet: Re: Algorithme de l'Annuaire   Algorithme de l'Annuaire I_icon_minitime

Revenir en haut Aller en bas
 
Algorithme de l'Annuaire
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Qu’est-ce qu’un algorithme ?
» Algorithme de la bibliothèque
» Algorithme du dictionnaire
» algorithme de l'employer
» A quoi sert un algorithme ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Les Fous du Binaire :: Programmation :: Langage C-
Sauter vers: