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 :

ajouter des mots et des caracteres


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 89
    Points : 11
    Points
    11
    Par défaut ajouter des mots et des caracteres
    bonjour en fait je voudrais ajouter des mots et de caractere dans mon tablo dynamique et de l affiché et de chercher des valeurs
    voila mon code
    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
    #include<stdio.h>
    #include<stdlib.h>
    int TAILLE= 10;	
    void afficher(int* tableau) {
     
    	int i;
     
    	printf("[ ");
    	for (i = 0 ; i < TAILLE ; i++) {
    		printf("%c ", tableau[i]);
    	}	
    	printf("]\n");
     
    	return ;
    }
     
    /**
     * Cette fonction permet d'ajouter un élément au bout d'un tableau dynamique.
     * 
     * @param int** tableau : pointeur vers le pointeur d'un tableau d'entiers
     * @param int* taille : pointeur vers la taille du tableau
     * @param int elemnt : l'élément à ajouter
     * @return int : Vrai si l'élément a été ajouté, faux sinon.
     */
    int ajouteElement(int** tableau, char var) {
     	TAILLE++;
     
    	*tableau = (int*)realloc(*tableau, TAILLE * sizeof(int));
    	(*tableau)[TAILLE - 1] = var;
     
    	return (*tableau != NULL);
    }
    int chercher(int *tab,char var)
    {
    int i,trouve=0;
    for(i=0;i<TAILLE;i++)
    {
    if(tab[i]==var)
    trouve=1;
    else
    trouve=0;
    }
    return trouve;
    printf("\n");
     
    }
    int main(int argc, char* argv[]) {
     
    	int* tableau = NULL;
    	char element;
    	ajouteElement(&tableau, 's');
    	ajouteElement(&tableau, 'r');
    	ajouteElement(&tableau, 'c');
    	afficher(tableau);
    	printf("\n");
    //	printf("%d",chercher(tableau,'d'));
    	printf("%d\n",chercher(tableau,'r'));
     
    		return 0;
    }
    j arrive a ajouter que des caractere mais j arrive pas a ajouter des mots comme ca ca marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajouteElement(&tableau, 'toto');
    en plus quand je voudrai chercher une valeur que c est trouve dans le tablo
    il m affiche tjs 0 commme si il n existe pas pourtan qu il existe

    codialement

  2. #2
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Il y a des incohérences dans ton code !!
    Pourquoi "int* tableau = NULL;" alors que tu gères des 'char' ?
    Le compilateur ne met pas de Warning sur les comparaison int <-> char ?

    Si tu veux ajouter un mot, il faut faire une nouvelle fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int ajouteMot(int** tableau, char *var, int tailleVar)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajouteMot(&tableau, "toto", strlen("toto"));
    PS : Passe les int* en char* !!!!

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 89
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par fregolo52 Voir le message
    Il y a des incohérences dans ton code !!
    Pourquoi "int* tableau = NULL;" alors que tu gères des 'char' ?
    Le compilateur ne met pas de Warning sur les comparaison int <-> char ?

    Si tu veux ajouter un mot, il faut faire une nouvelle fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int ajouteMot(int** tableau, char *var, int tailleVar)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajouteMot(&tableau, "toto", strlen("toto"));
    PS : Passe les int* en char* !!!!
    j ai fais comme ca dans la foction ajouterelement() et ca marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char ajouteElement(char** tableau, char* var) {
     	TAILLE++;
     
    	*tableau = (char*)realloc(*tableau, TAILLE * sizeof(int));
    	(*tableau)[TAILLE - 1] =var;//ici j ai cet  erreur (*tableau)[TAILLE - 1] =var;
     
    	return (*tableau != NULL);
    }

  4. #4
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Quand je disais de remplacer les int par des char, je parlais du tableau. Pourquoi avoir change le type du code de retour de la fonction !!!

    TAILLE = 10 à la base,
    puis TAILLE ++
    puis (*tableau)[TAILLE - 1] = var;

    Donc ton 1er appel à ajouteElement écrit à la 10e position du tableau.

    Il faudrait commencer par réfléchir à un algo sur papier avant de se lancer dans le code.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Attention à l'utilisation de realloc : si la fonction foire, cela provoque une fuite de mémoire.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 89
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par jeroman Voir le message
    Attention à l'utilisation de realloc : si la fonction foire, cela provoque une fuite de mémoire.
    oh putin
    je ne jamais trouvé une reponse positive

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Citation Envoyé par simplyc Voir le message
    oh putin
    je ne jamais trouvé une reponse positive
    Je n'ai pas compris ta réponse.

Discussions similaires

  1. [RegEx] Trouver des mots entre des mots avec le Regex seulement
    Par mutkas10 dans le forum Langage
    Réponses: 3
    Dernier message: 16/01/2013, 11h48
  2. Ajouter des liens sur des mots clefs contenu dans une div
    Par Nementon dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/05/2010, 12h32
  3. [COM] Trouver des mots dans des PDF et autres documents ?
    Par zyongh dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 02/11/2006, 15h23

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