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 :

egalité de deux tableaux


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 131
    Points : 106
    Points
    106
    Par défaut egalité de deux tableaux
    bonjour a tous,
    je suis un grand debutant en C et j'ai un souci qui sera surement très simple a resoudre pour vous...
    voila j'ai un exercice ou il faut que je teste si une chaine est du type ch=uu où u est une chaine de caractere (ex: bonbon, chercher).
    donc je sépare ma chaine en deux tableaux, jusque la tout va bien.
    Le probleme arrive au moment ou je veux comparer les deux tableaux.

    Apres pas mal de recherches j'ai essayé strcmp, memcmp et meme de tester tab1==tab2
    mas rien n'y fait j'ai toujours des incoherences dans mes resultats...

    pourriez vous m'eclairer a ce sujet ??

    Merci d'avance

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Sans le code qui te pose souci, ça va être difficile de t'aider. Peux-tu poster le code avec lequel tu rencontres le problème.

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 131
    Points : 106
    Points
    106
    Par défaut
    Voila ma petite fonction qui est censée faire ca...
    quand j'affiche le contenu de mes tableaux debut et fin les deux sont bien identiques
    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
    int chaineCarree(char motSaisi[50]) {
    	char debut[25];
    	char fin[25];
    	int i;
     
    	/* on recupere le debut du mot */
    	for(i=0;(i<strlen(motSaisi)/2);i++) {
    		debut[i] = motSaisi[i];
    	}
     
    	int j=0;
    	/*on recupere la fin du mot*/
    	for ((i=strlen(motSaisi)/2);(i<=strlen(motSaisi));i++) {
    		fin[j] = motSaisi[i];
    		j++;
    	}
     
    	if (strcmp(debut,fin)==0)
    		return 1;
    	else 
    		return 0;
    }

    EDIT: en fait j'ai des symboles bizarres à la fin de mes deux tableaux...

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par kevinou55 Voir le message
    EDIT: en fait j'ai des symboles bizarres à la fin de mes deux tableaux...
    Typiques de chaines non terminées par un 0...

    Nota. Si tu cherches à vérifier si une phrase est un palindrome, il y a beaucoup plus simple...

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 131
    Points : 106
    Points
    106
    Par défaut
    il faut donc que je rajout "/0" a la fin de mes tableaux c'est bien ca ??
    faut-il les caster en int ??

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par kevinou55 Voir le message
    il faut donc que je rajout "/0" a la fin de mes tableaux c'est bien ca ??
    Oui, au bon endroit...
    faut-il les caster en int ??
    il n'y a rien à caster...

    Mais je le redis, ton algo est probablement trop complexe pour ce que tu veux faire. Une seul boucle, 2 indexes et un test astucieux suffisent...

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 131
    Points : 106
    Points
    106
    Par défaut
    bon et bien je vais essayer de faire tout ca avec ta solution et je vous retiens au courant.

    Merci pour ton aide bonne soirée

    EDIT: le bon endroit c'est une fois que j'ai fini de rentrer mes valeurs j'ajoute "/0" c'est bien ca ?? pas tout a la fin de mon tableau ?

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par kevinou55 Voir le message
    bon et bien je vais essayer de faire tout ca avec ta solution et je vous retiens au courant.

    Merci pour ton aide bonne soirée

    EDIT: le bon endroit c'est une fois que j'ai fini de rentrer mes valeurs j'ajoute "/0" c'est bien ca ?? pas tout a la fin de mon tableau ?
    Non. La saisie le place comme il faut. C'est dans tes copies (maintenant inutiles) qu'il manquait. Avec le nouvel algo, plus besoin de tout ce bazar...

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 131
    Points : 106
    Points
    106
    Par défaut
    voila j'ai trouvé la solution et en effet c'est beaucoup plus imple que precedemment...
    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
    int chaineCarree(char motSaisi[50]) {
    	int indPremPart,indSecPart;
    	int carree; /*booleen vrai si la chaine est carree*/
     
    	indPremPart=0;
    	/*la seconde partie debute a partir du milieu du mot*/
    	indSecPart=strlen(motSaisi)/2;
    	carree = 1;
    	/*boucle tant que les lettres sont identiques et qu'on a pas depacé le milieu du mot*/
    	while(carree==1 && indPremPart<strlen(motSaisi)/2) {
    		/*si les lettres sont identiques on passe a la lettre suivante*/
    		if (motSaisi[indPremPart] == motSaisi[indSecPart] ) {
    			indPremPart++;
    			indSecPart++;
    		}
    		else {
    			carree=0;
    		}
    	}
     
    	if (carree==1) {
    		return 1;
    	}
    	else {
    		return 0;
    	}
    }
    Merci beaucoup pour ton aide et pour ton aiguillage vers une meilleure solution

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PL/SQL COMPARAISON DE DEUX TABLEAUX APRES BULK
    Par mimi_été dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/06/2009, 12h14
  2. Concaténation de deux tableaux
    Par mego dans le forum Langage
    Réponses: 6
    Dernier message: 19/11/2008, 11h52
  3. Réponses: 54
    Dernier message: 16/03/2006, 11h42
  4. comparer deux tableaux
    Par djibril dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2005, 15h26
  5. Réponses: 4
    Dernier message: 11/10/2005, 10h17

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