Algorithme tableaux triée
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
-
Contributeurbonjour, "ne marche pas vraiment": tu souhaitais avoir un résultat différent? que souhaitais-tu avoir comme résultat?
-
-
Contributeur@Hhton 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? -
-
Contributeur@Hhavant 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. -
-