Écrire une fonction nommée hasNValues qui prend un tableau et un entier en paramètre et qui retourne 1 si la quantité totale des éléments du tableau est égale a l’entier sans tenu compte des doublons.
Attention, tu supposes que l'entier donné en paramètre est la quantité d'éléments du tableau (comme on le fait toujours), mais l'énoncé ne le dit pas. Du coup il faut peut-être faire quelque chose comme :
int hasNValues(int arr[TAILLE], int n) // (TAILLE est un #define)
{
if (n == TAILLE) // la quantité d'éléments du tableau est égale à l'entier
return 1 ;
else
return 0 ;
}
(qu'on peut bien sûr écrire de façon plus compacte).
ouais mais il y a un ptit probleme,vous avez oublie les doublons.... int tab[]={1,2,2,5,7,7,8,9,7,4}; la qntite d'element de ce tab est 10 mais sans tenir compte des doublons la qntite devient 7
SonnyAfoulay : pour l'instant tu dois trouver l'algorithme pour faire ceci. Ensuite seulement tu écriras le programme. Une bonne méthode pour trouver cet algorithme, c'est de résoudre le problème à la main, avec un papier et un crayon. En résolvant ce problème à la main, tu regarderas comment tu procèdes (peut-être que tu as barré les doublons, ou que tu les as comptés pour les retrancher ensuite, etc.) et tu en déduiras l'algorithme. Ensuite tu écriras le programme.
voila mon code mais je n'arrive pas a gerer les doublons(les elements qui se repetent)
#include <stdio.h> #include <stdlib.h>
int main() {int hasNValues; int tab[]={2,3,8,8, 7,11}; int len=6; int taille=sizeof (tab) / sizeof(int); printf("le nombre d'element du tableau est:%d",taille); printf("\nl'entier est:%d",len);
Justement, comment ferais-tu pour gérer les doublons si tu le faisais à la main ? Peut-être que tu les compterais ? On pourrait imaginer une fonction qui compte les doublons du tableau. Ensuite, dans la fonction qui compte le nombre d'éléments distincts, on procède d'abord comme tu as fait, puis on y retranche le nombre de doublons. Quelque chose comme ça.
Tu saurais écrire une fonction qui compte les doublons ?
(Au fait, est-ce que les doublons sont forcément consécutifs ? Dans ton exemple oui, mais est-ce qu'on peut avoir un tableau comme {2, 3, 8, 7, 11, 8} ?)
(Au fait, est-ce que les doublons sont forcément consécutifs ? Dans ton exemple oui, mais est-ce qu'on peut avoir un tableau comme {2, 3, 8, 7, 11, 8} ?)
Osons ! Un p'tit coup de qsort() ? (il n'est pas spécifié que le tableau d'origine doit être conservé....)
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Tu peux aussi faire deux boucles imbriquées ou pour chaque case du tableau, tu recherches (à l'aide de la deuxième boucle) si dans les cases précédentes elle a un doublon, s'il n'y a pas de doublon tu incrémentes un compteur, et ainsi de suite avec toutes les cases du tableau.
(Au fait, est-ce que les doublons sont forcément consécutifs ? Dans ton exemple oui, mais est-ce qu'on peut avoir un tableau comme {2, 3, 8, 7, 11, 8} ?)
NN...pas forcément consécutif,,,,,on peut avoir int tab[]={3,8,9,6,3,9,8};
Dans ce cas je pense que l'idée proposée par rouloude hier (les deux boucles imbriquées) est un bon point de départ.
exercice
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent