Algorithme tableaux triée

Fermé
ma - 31 oct. 2018 à 18:53
yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024 - 31 oct. 2018 à 21:54
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:

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 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024 1 477
31 oct. 2018 à 20:29
bonjour, "ne marche pas vraiment": tu souhaitais avoir un résultat différent? que souhaitais-tu avoir comme résultat?
0
Bonsoir, je voudrais avoir en retour le nombre de valeur qui est présente dans les deux tableau à la fois
0
yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024 1 477 > Hh
31 oct. 2018 à 20:44
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?
0
J’ai essayer de faire sur une feuille et après j’ai écrit cet algo, pour moi la ligne 13 permet d’avancer dans l’entrée tableau 1 quand la valeur des 2 tableaux est différente, j’ai tester seulement i parce que quand le premier tableau est fini il ne peut plus y avoir des valeurs en commun
0
yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024 1 477 > Hh
31 oct. 2018 à 20:59
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.
0
Quand je dessine les deux tableau sur une feuille pensez vous qu’il faudrait que j’avance dans les deux tableau si ils n’ont pas la meme valeurs ou plutôt dans un seul?
0