Trouver les entiers de 1à 100 qui ne sont pas dans le tableau

Fermé
zazaaaaaaaaa Messages postés 1 Date d'inscription vendredi 22 décembre 2017 Statut Membre Dernière intervention 22 décembre 2017 - 22 déc. 2017 à 13:12
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 23 déc. 2017 à 19:50
bonjour ,
on m'a demandé d'afficher tous les nombres de 0 à 100 ne se trouvant pas dans un tableau.voici le code en c mais il marche pas.
A voir également:

3 réponses

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 251
Modifié le 22 déc. 2017 à 13:37
salut ,

message d'erreur?

là je dirai que ton print est faux (&i pas i) mais a voir.

naga

edit non x) (je suis rouillé xD)
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 251
22 déc. 2017 à 13:43
tiens si tu veux la même sur 10:

#include  <stdio.h>
void nbr( int * tab , int size) {


	for(int i = 0 ; i < 10 ; i++) {
		int iF = 0; 
		for(int j=0; j< size && iF == 0 ; j++) {
			if(tab[j] == i) iF=1;
		}
		if(iF == 0){
			printf("%d is not founded in array \n",i);
		}
	}
	
	

}
int main(void)
{
    int test[5];
    test[0] = 3;
    test[1] = 2;
    test[2] = 7;
    test[3] = 0;
    test[4] = 5;
    nbr(&test , 5);
    return 0;
}



naga
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
23 déc. 2017 à 19:50
Bonjour,

@zazaaaaaaaaa, la variable
j
n'est pas initialisée au bon endroit, il faut la remettre à zéro à chaque itération de la boucle sur
i
.
Le test
if ( tab[j] == i )
, n'est pas celui qu'il faut faire car si on est sorti de la boucle précédente c'est que ou bien
tab[j] == i
ou bien on a atteint la fin, et dans le cas où on a atteint la fin on fera
if ( tab[j] == i )
et il pourra être ou vrai ou faux, on est dans le cas "comportement indéfini" car l'élément
tab[j]
est en dehors du tableau pouvant faire n'importe quoi (produire une erreur, ou retourner un nombre quelconque pouvant être
i
.) On peut mettre l'autre test à la place
if ( j < size )
.

Un code plus "optimal" (avec moins de parcours et re-parcours inutiles du tableau), consisterait à trier le tableau initial, puis il ne reste qu'à le parcourir en affichant toutes les séquences croissantes existant entre chaque valeur du tableau.
0