A voir également:
- Comparer deux tableaux en c
- Fusionner deux tableaux excel - Guide
- Deux ecran pc - Guide
- Tableaux croisés dynamiques - Guide
- Faire deux colonnes sur word - Guide
- Deux whatsapp sur un téléphone - Guide
5 réponses
Kuku007
Messages postés
183
Date d'inscription
dimanche 28 février 2010
Statut
Membre
Dernière intervention
7 septembre 2011
23
30 avril 2010 à 19:55
30 avril 2010 à 19:55
Salut !
Ton problème vient de ta fonction de comparaison !
Alors déjà ton algorithme ne m'a pas forcément l'air au point, ou alors c'est voulu... mais j'en doute un peu...
Pour commencer lors de la saisie de tes tableaux, ils n'ont pas forcément la même taille ! Je ne sais pas si tu l'avais remarqué ou si c'est volontaire. Bref je vais considérer que l'utilisateur a saisi autant de nombres pour les 2 tableaux pour faciliter la comparaison.
Ensuite lors de la comparaison, si j'ai bien compris ce que tu dis au début du post tu souhaites comparer les éléments de chaque tableau un à un.
Et c'est là que ça coince totalement !
Tu pars du premier élément de tab1 et tu le compares à l'ensemble des éléments de tab2 (première incohérence) et ensuite tu vas écrire (i3-1) fois le même nombre (en fonction de ton résultat if) dans ton tableau tab3.
D'ailleurs ce nombre devrait être le résultat issu du if entre le premier élément de tab1 et du dernier élément de tab2 !
Je me trompe ?
Ton problème vient de ta fonction de comparaison !
Alors déjà ton algorithme ne m'a pas forcément l'air au point, ou alors c'est voulu... mais j'en doute un peu...
Pour commencer lors de la saisie de tes tableaux, ils n'ont pas forcément la même taille ! Je ne sais pas si tu l'avais remarqué ou si c'est volontaire. Bref je vais considérer que l'utilisateur a saisi autant de nombres pour les 2 tableaux pour faciliter la comparaison.
Ensuite lors de la comparaison, si j'ai bien compris ce que tu dis au début du post tu souhaites comparer les éléments de chaque tableau un à un.
Et c'est là que ça coince totalement !
Tu pars du premier élément de tab1 et tu le compares à l'ensemble des éléments de tab2 (première incohérence) et ensuite tu vas écrire (i3-1) fois le même nombre (en fonction de ton résultat if) dans ton tableau tab3.
D'ailleurs ce nombre devrait être le résultat issu du if entre le premier élément de tab1 et du dernier élément de tab2 !
Je me trompe ?
Bonjour et merci pour ta réponse.
Alors je ne devrais pas faire de boucle for pour les éléments du 2eme tableau et je ferais une boucle for simplement pour le 1er tableau et ensuite une boucle if pour le second?
Pour le 3ème tableau, je retirerais aussi la boucle for (qui ne me paraissait pas très correcte) je le l'écrirais alors comme ceci:
si tab1[i1]>tab2[i2]
tab3[i3]=tab1[i1]
sinon tab3[i3]=tab2[i2]???
Alors je ne devrais pas faire de boucle for pour les éléments du 2eme tableau et je ferais une boucle for simplement pour le 1er tableau et ensuite une boucle if pour le second?
Pour le 3ème tableau, je retirerais aussi la boucle for (qui ne me paraissait pas très correcte) je le l'écrirais alors comme ceci:
si tab1[i1]>tab2[i2]
tab3[i3]=tab1[i1]
sinon tab3[i3]=tab2[i2]???
Bonjour,
J'ai modifié mon code pour les fonctions comparaison et affiche3 mais j'ai maintenant un gros plantage :/
J'ai modifié mon code pour les fonctions comparaison et affiche3 mais j'ai maintenant un gros plantage :/
int comparaison(int tab3[], int tab1[],int tab2[],int i1,int i2) { int n1,n2,n3; for(n1=0;n1<=i1;n1++) { if(tab1[n1]>tab2[n2]) { tab3[n3]=tab1[n1]; n2++; n3++; } else { tab3[n3]=tab2[n2]; n2++; n3++; } } return n3; } void affiche3(int tab3[],int n3) { int f3; for(f3=0;f3<=n3;f3++) { printf(" %d ",tab3[f3]); } }
Kuku007
Messages postés
183
Date d'inscription
dimanche 28 février 2010
Statut
Membre
Dernière intervention
7 septembre 2011
23
Modifié par Kuku007 le 3/05/2010 à 13:03
Modifié par Kuku007 le 3/05/2010 à 13:03
Normal que ça plante !
Tu n'initialises pas tes compteurs n2 et n3.
C'est pas grave c'est de toute manière pas la bonne démarche !
Si tu fais bien de la comparaison une à une ! C'est simple : tu conserves que n1 !!!
Un seul compteur de boucle suffit si tous les tableaux ont la même tailles.
du style
int comparaison(int tab3[], int tab1[],int tab2[],int i1)
{
int n1;
for(n1=0;n1<i1;n1++)
{
if(tab1[n1]>tab2[n1])
tab3[n1]=tab1[n1];
else
tab3[n1]=tab2[n1];
}
return n1;
}
Tu n'initialises pas tes compteurs n2 et n3.
C'est pas grave c'est de toute manière pas la bonne démarche !
Si tu fais bien de la comparaison une à une ! C'est simple : tu conserves que n1 !!!
Un seul compteur de boucle suffit si tous les tableaux ont la même tailles.
du style
int comparaison(int tab3[], int tab1[],int tab2[],int i1)
{
int n1;
for(n1=0;n1<i1;n1++)
{
if(tab1[n1]>tab2[n1])
tab3[n1]=tab1[n1];
else
tab3[n1]=tab2[n1];
}
return n1;
}
Kuku007
Messages postés
183
Date d'inscription
dimanche 28 février 2010
Statut
Membre
Dernière intervention
7 septembre 2011
23
3 mai 2010 à 12:55
3 mai 2010 à 12:55
Salut !
Désolé j'étais parti en grand week end de mariage donc pas d'internet ;-)
J'essaierais de regarder ça ce soir si j'oublie pas héhé.
Désolé j'étais parti en grand week end de mariage donc pas d'internet ;-)
J'essaierais de regarder ça ce soir si j'oublie pas héhé.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
30 avril 2010 à 19:57