IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Résolution d'un programme de gestion de carnet d'adresses


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Par défaut Résolution d'un programme de gestion de carnet d'adresses
    Bonjour, étant débutant en C, je m'entraines sur ce langage, j'ai trouver un énoncé d'un examen antérieur de ma faculté et j'aimerais le résoudre mais je ni parvient pas. Si quelqu'un pouvait m'aider.

    On me demande dans le cadre de gestion d'un carnet d'adresses, de concevoir une fonction pour obtenir la liste des adresses correspondant à un nom de famille donné. Le carnet d'adresse pouvant contenir plusieurs adresses correspondant à un même nom de famille. On considère les deux fonctions suivants comme données:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /*Returns the number of addresses corresponding to the family name
    * name must be a pointer to a string
    */ 
    int nb_occ(char* name)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /*When several address match the same family name, we refer to each of them seperataly by using their index. 
    *This function store a unique address identified by name and index in the structured pointed to by address. 
    *Valid values for index are from 0 to nb_occ-1(name)-1. 
    *address must be a valid pointer to a structure to be filled by this function. *name must be a pointer to a string. *Returns 0 in case of success, or -1 in case of error. 
    *If an error occurs, errno is set to the appropriate error code. */
    int get_addr_at(char* name, int index, struct addr* address)
    Sur base de ces 2 fonctions, on nous demande de fournir une fonction qui renvoie l'ensemble des adresses correspondant à unnom donné, dans un tableau, quelque soit le nombre d'adresses. Voici la signature des fonctions a implémenter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /* Creates an array containing all the addresses matching whith the name name. 
    *A pointer to the created array is stored inside addresses. 
    *Returns the number of stored addresses in case of succes or -1 in case of failure. 
    *name must be a pointer to a string. */
    int get_addr_array(char* name, struct addr** addresses)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /* Release the memory associated to the address array addresses. *Returns 0 in cases of succes, 61 in case of error */
    int free_addr_array(struct addr** addresses)
    En définitive ce que l'on nous demande de faire c'est:
    • - Définir la structure addr. Celle_ci ne contiendra que les trois chaînes de caractères suivantes: first_name, last_name, city. Ces trois chaînes auront une longueur fice de 50 caractères.
      - Implémenter complètement les fonctions get_addr_array et free_addr_array
      - Implémenter une fonction main destinée à tester les fonctions. elle devra effectuer une requête pour le nom "dupont". Dans cette onfction le tableau d'adresses doit etre récupérer grâce à un appel à get_addr_array. Ensuite libérer la méoire de celui-ci.


    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par jchenoy
    <...>En définitive ce que l'on nous demande de faire c'est:
    C'est bien à toi qu'on demande de faire ça ? Alors où est le code avec lequel tu as un problème ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Par défaut
    C'est surtout que je ne suis pas sur de mes fonctions, surtout pour la méthoe free_addr_array... Voila ce que j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    #include <stdio.h>
     
    /* Returns the number of addresses corresponding to the family name name.
     * name must be a pointer to a string.
     */
    int nb_occ(char* name);
     
    /* When several addresses match de same family name, 
     * we refer to each of them seperataly by using their index.
     * This function stores a unique address identified by name and index,
     * in the structure pointed to by address.
     * Valid values for index are from 0 to nb_occ(name)-1.
     * address must be a valid pointer to a structure to be filled by this function.
     * name must be a pointer to a string.
     * Returns 0 in case of success, or -1 in case of error.
     * In an error occurs, errno is set to the appropiate error code.
     */
    int get_addr_at(char* name, int index, struct addr* address);
     
    /* Creates an array containing all the addresses mayching with the name name.
     * A pointer to the created array is stored inside addresses.
     * name must be a pointer to a string.
     * Returns the number of stored addresses in case of succes, 
     * or -1 in case of failure.
     */
    int get_addr_array(char* name, struct addr** addresses);
     
    /* Release the memory associated to the address array addresses.
     * Returns 0 in case of  success, -1 in case of error.
     */
    int free_addr_array(struct addr** addresses);
     
     
    struct addr{
    	char first_name[50];
    	char last_name[50];
    	char city[50];
    }
     
     
    int get_addr_array(char* name, struct addr** addresses){
    	int index, numberAdd;
    	index = numberAdd = nb_occ(name);
    	index -= 1;
    	*addresses = (struct addr *)malloc(nb_occ(name)*sizeof(numberAdd*sizeof(struct addr));
     
    	while(get_addr_at(name, index, addresses) == 0){
    		(*addresses)++;
    		index--;
    	}
     
    	if (index == 0) return numberAdd;
    	else return -1;
    }
     
     
    int free_addr_array(struct addr **addresses){
    	struct addr *memory = *adresses;
    	(*addresses)++;
    	free(memory);
    }
     
     
    main(){
    	struct addr *addresses
    	get_addr_array("Smith", addresses);
    	free_addr_array(adresses);
    	return 0;
    }
    Si quelqu'un pouvait m'orienter et me dire ce qui ne vas pas, cela me serait vraiment utile. Merci d'avance...

Discussions similaires

  1. Gestion du carnet d'adresses
    Par ALT dans le forum Thunderbird
    Réponses: 0
    Dernier message: 11/02/2010, 16h27
  2. Recherche d'un programme de gestion de connection
    Par lermit dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 06/07/2006, 10h04
  3. Cherche à faire un programme de gestion pour PC et MAC
    Par morgantip dans le forum Windows
    Réponses: 12
    Dernier message: 23/05/2006, 09h01
  4. Création d'un programme de Gestion / compta : langage ?
    Par Alexino2 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 11/04/2006, 15h00
  5. Programme de gestion d'image qui permet de tout renommer
    Par snoopy69 dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 07/02/2006, 07h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo