Algorithme tableaux triée
ma
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
bonjour je dois ecrire un algo qui permet de retourner le nombre de valeur presente dans deux tableaux triée sachant qu'ils ont la meme taille et qu'il n'y a pas de valeur double dans un tableau. J'ai ecrit un tableau qui ne marche pas vraiment et je ne sais pas pourquoi. merci d'avance pour votre aide
Mon programme:
Le resultat:
i est 0
j est 0
(avant le if) c est 0
i est 0
j est 0
(apres le if) c est 0
i est 1
j est 0
(apres le else) c est 0
i est 1
j est 0
(avant le if) c est 0
i est 1
j est 0
(apres le if) c est 0
i est 2
j est 0
(apres le else) c est 0
i est 2
j est 0
(avant le if) c est 0
i est 2
j est 0
(apres le if) c est 0
i est 3
j est 0
(apres le else) c est 0
i est 3
j est 0
(avant le if) c est 0
i est 4
j est 1
(apres le if) c est 1
i est 4
j est 1
(avant le if) c est 1
i est 5
j est 2
(apres le if) c est 2
c est 2
Mon programme:
int a[3]; a[0]=1; a[1]=3; a[2]=4; a[3]=6; a[4]=9;
int b[3]; b[0]=2; b[1]=3; b[2]=4; b[3]=8; b[4]=9;
int i=0,c=0,j=0;
while(i<5){
printf("i est %d \n", i);
printf("j est %d \n", j);
printf("(avant le if) c est %d \n", c);
if(a[i]==b[j]){i++;c++;j++;}
printf("i est %d \n", i);
printf("j est %d \n", j);
printf("(apres le if) c est %d \n", c);
if(a[i]!=b[j]){
a[i]=a[i+1];
i++;
printf("i est %d \n", i);
printf("j est %d \n", j);
printf("(apres le else) c est %d \n", c);
}
}
printf("c est %d \n", c);
Le resultat:
i est 0
j est 0
(avant le if) c est 0
i est 0
j est 0
(apres le if) c est 0
i est 1
j est 0
(apres le else) c est 0
i est 1
j est 0
(avant le if) c est 0
i est 1
j est 0
(apres le if) c est 0
i est 2
j est 0
(apres le else) c est 0
i est 2
j est 0
(avant le if) c est 0
i est 2
j est 0
(apres le if) c est 0
i est 3
j est 0
(apres le else) c est 0
i est 3
j est 0
(avant le if) c est 0
i est 4
j est 1
(apres le if) c est 1
i est 4
j est 1
(avant le if) c est 1
i est 5
j est 2
(apres le if) c est 2
c est 2
1 réponse
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, "ne marche pas vraiment": tu souhaitais avoir un résultat différent? que souhaitais-tu avoir comme résultat?-
-
ton algorithme est mal conçu. avant d'écrire le programme, réfléchis à comment tu ferais ce travail si tu avais deux colonnes de 20 chiffres triés écrits sur une feuille.
quel est le but de la ligne 13?
en ligne 4, ne devrais-tu pas tester également j?
en ligne 14, pourquoi augmenter i plutôt que j? -
-
avant de répondre, je te suggère de réfléchir à tes choix, de te remettre en question.
je ne pense pas la même chose que toi:
- la ligne 13 n'avance pas dans le tableau 1: que fait-elle réellement? est-ce utile, nuisible?
- nous discuterons plus tard la ligne 4
- tu n'as pas répondu à la question "en ligne 14, pourquoi augmenter i plutôt que j?"
écris d'abord ton algorithme en texte, avant de faire le programme.
tu as eu la très bonne idée d'afficher en détails ce que fait le programme. examine donc aussi soigneusement cela: es-tu satisfait de son comportement? à quel moment exact se comporte-t-il bizarrement, pourquoi le résultat final est-il incorrect?
fait l'exercice sur une feuille avec les mêmes tableaux, puis compare ce que tu fais à la main et ce que le programma a fait. -
-