L'utilité du compteur.

Résolu/Fermé
Gretyzde Messages postés 97 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 1 avril 2016 - 2 janv. 2015 à 20:35
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 - 3 janv. 2015 à 18:15
Bonsoir,

après avoir fini cet exercice. Je me suis rendu compte que je n'avais fait que suivre le schéma des exercices précédents sans trop réfléchir et que l'exercice avec bien abouti mais que je n'avais pas compris l'utilité du cpt dans ce code.

L'énoncé de l'exercice était celui-ci:
Déterminer le nombre de fois qu'un élément est présent dans le tableau( de 20 cellules).

Ma question est la suivante: Pour tester, j'ai utilisé le nb8 qui s'avérait, avec le 7, être le seul réapparaissant une deuxième fois. J'ai pourtant la sensation de ne pas avoir compris le but du "if" et du "cpt". Comment se fait-il que j'obtienne la réponse 2 (qui est correcte)? L compteur est il associé au nombre?

int i=0;
	int cpt=0;
	int nb;
	int tabnbr[20];
	tabnbr[0]=1;
	tabnbr[1]=2;
	tabnbr[2]=3;
	tabnbr[3]=4;
	tabnbr[4]=5;
	tabnbr[5]=6;
	tabnbr[6]=7;
	tabnbr[7]=8;
	tabnbr[8]=9;
	tabnbr[9]=10;
	tabnbr[10]=11;
	tabnbr[11]=12;
	tabnbr[12]=13;
	tabnbr[13]=14;
	tabnbr[14]=15;
	tabnbr[15]=16;
	tabnbr[16]=7;
	tabnbr[17]=8;
	tabnbr[18]=19;
	tabnbr[19]=20;

	printf("Veuillez entrer un nombre : ");
	scanf("%d",&nb);
	

	do
	{
		if(tabnbr[i] == nb)
		{
			cpt++;
		}
		i++;
	}
	while(i<20);

	printf("%d\n", cpt);


Merci d'avance.

3 réponses

Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 928
2 janv. 2015 à 20:57
Bonsoir,

tachons de t'aider sans pour autant résoudre ce mystère à ta place.
Il faut chercher un peu pour progresser.

Pourrais tu essayer de formuler en "français" ce que fait cette partie du code
	do
	{
		if(tabnbr[i] == nb)
		{
			cpt++;
		}
		i++;
	}
	while(i<20);

0
Gretyzde Messages postés 97 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 1 avril 2016 2
Modifié par Gretyzde le 3/01/2015 à 08:50
Bonjour,

TANT QUE i est inférieur à 20 (tout en incrémentant i de 1 à chaque fois) SI une cellule quelconque du tableau nbr = a un certain nombre (8 dans cet exemple) alors il faut incrémenter la variable cpt de 1.... comme quoi quand on réfléchis un peu. Le tableau comporte deux fois la valeur 8 donc le compteur a été incrémenté de 2.

Je ne sais pas si ce que j'ai dit a été correctement formulé mais l'idée est comprise en tout cas., merci beaucoup.
0
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
3 janv. 2015 à 17:20
Bonjour
il y a une petite erreur dans la réponse de @Gretyzde
C'est plutôt, on exécute les instructions au moins une fois avant que l'expression ne soit évalué pour savoir si on continue ou pas en clair, instructions exécuté puis l'expression évalué
Exemple
#include <stdio.h>
#include <stdlib.h>

int main( void ){

	unsigned int i = 0;
	unsigned int icpt = 0;
	unsigned int iTab[] = { 0,4,8,7,6,8,4,1,8 };

	do{
		printf("\t->BLOC INSTRUCTION EXECUTER I = %d\n", i );
		if( *(iTab+i) == 8 ){
			icpt+=1;
			printf("VALEUR TROUVER DANS TABLEAUX COMPTEUR = %d\n", icpt );
		}
	}while(++i < 8 && printf("\t->EXPRESSION EVALUER I = %d\n", i));

	printf("RESULTAT\t:%d",icpt );

	return( EXIT_SUCCESS );
}

à bientôt
0
Gretyzde Messages postés 97 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 1 avril 2016 2
3 janv. 2015 à 17:47
Oui, c'est vrai que j'ai oublié de mentionner la particularité du "do while" qui est de lancer le bloc d'instruction au moins une fois même si la condition n'est pas réalisée.
0
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 928 > Gretyzde Messages postés 97 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 1 avril 2016
3 janv. 2015 à 18:15
Il est exact qu'au réveil j'ai laissé passer cette coquille.
0
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 928
3 janv. 2015 à 08:46
C'est ça.

--
-1