Fonction tri

tine1m - 6 déc. 2012 à 22:04
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 7 déc. 2012 à 14:04
Bonsoir à tous !

Je suis en train de faire un programme en langage C ayant pour but de montrer si deux mots sont des anagrammes.
Je suis débutante et j'ai un problème au niveau de la fonction pour trier les chaines par ordre alphabétique ... J'ai cru comprendre qu'il fallait créer une sous fonction mais je ne vois pas trop comment m'y prendre ...

Merci d'avance !

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 déc. 2012 à 09:10
aucun besoin de trier pour savoir si anagramme.

ciao...
BruNews, MVP VC++
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
7 déc. 2012 à 11:45
Bonjour.

Comme dit Brunews, pas besoin de trier. Je te donne un indice: deux mots sont des des anagrammes s'ils ont le même nombre d'occurences pour chaque lettre.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
J'ai essayé cela :

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define max 256

typedef enum{faux, vrai} bool;

void tri (char ch[], int n)
{
int i, j;
char temp;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(strcmp(ch[i], ch[j])<0)
{
temp=ch[i];
ch[i]=ch[j];
ch[j]=temp;
}
}

bool anagrammefonction(char* chaine1,char* chaine2)
{
int i, n;
n=strlen(chaine1);
bool anagramme=faux;

if (n==strlen(chaine2))

{
tri(*chaine1,n);
tri(*chaine2,n);
i=1;
do
{

if ((chaine1[i])!=(chaine2[i]))
{
anagramme=vrai;
}
i++;
}while ((i<n) && (anagramme==vrai));
return vrai;

}
else
return faux;

}



int main()
{
char ch1[max], ch2[max];

printf("Entrer les chaînes de caractères à comparer\n");
scanf("%s%s", ch1,ch2);

if (anagrammefonction(ch1,ch2))
printf("Les chaînes de caractères sont des anagramme.\n");
else
printf("Les chaînes de caractères ne sont pas des anagrammes.\n");
return 0;
}

mais j'ai un problème au niveau de la fonction tri :/
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
7 déc. 2012 à 13:11
mais j'ai un problème au niveau de la fonction tri :/

Si tu n'écoutes pas ce qui est dit, y a un moment, on ne peut plus faire grand chose pour toi... (Pas besoin de fonction de tri).

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je ne connais pas l'occurence et mon professeur nous impose cela ...
Sauf que lui il utilisait une fonction "ordrealphabétique" qui n'existe pas.
Si vous voulez m'expliquer l'occurence je veux bien parce que ça fait deux mois que je fais du langage c donc mon niveau de connaissance et très limité.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 déc. 2012 à 13:40
strcmp() prend des pointeurs de chaine en param, PAS DES OCTETS.

Tu dois faire
if(ch[i] > ch[j])
ou
if(ch[i] < ch[j])

ciao...
BruNews, MVP VC++
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
7 déc. 2012 à 14:04
Je ne connais pas l'occurence



C'est du français pourtant... (http://www.larousse.com/en/dictionnaires/francais/occurrence/55515)
Pour simplifier, une occurence, c'est le nombre de fois que tu trouves quelque chose.
Dans le mot patate, il y a 1 occurence de P, 2 occurences de a, 2 occurences de t et 1 occurence de e.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
Rejoignez-nous