Compter le nombre d'éléments différents
Résolu
Sara426
Messages postés
678
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je programme en C.
J'aimerais faire un programme qui prend en entrée un tableau d'entier et qui renvoie combien de lettres différentes il y a dedans.
Par exemple : 5 9 4 4 doit me rendre 3.
Voilà ce que j'ai voulu essayer :
Une fonction existe qui renvoie 1 si le nombre c est déjà dans la liste
int existe (int c, int liste[])
{
int i=0;
int r=0;
while ((i<8)&&(r==0))
{
if (c==liste[i])
r=1;
else i=i+1;
}
return r;
}
Une fonction verif_nb_couleur qui prend mon tableau d'entier t[], le nombre de couleur maximal c, et le nombre de pion (ou la longueur du tableau) p
int verif_nb_couleur (int t[], int c, int p)
{
int r=0;
int i=0;
int liste[8];
int i2=0;
while (i<p)
{
if (existe(t[i], liste)==1)
i=i+1;
else {liste[i2]=t[i];
i2=i2+1;
i=i+1;
}
}
if (i2>(c-1))
r=-1;
else r=0;
return r;
}
Verif_nb_couleur renvoie 0 si on ne dépasse pas c (soit le nombre maximal de couleur) ou -1 si on a dépassé ce nombre.
Merci
Cordialement,
Sara.
Je programme en C.
J'aimerais faire un programme qui prend en entrée un tableau d'entier et qui renvoie combien de lettres différentes il y a dedans.
Par exemple : 5 9 4 4 doit me rendre 3.
Voilà ce que j'ai voulu essayer :
Une fonction existe qui renvoie 1 si le nombre c est déjà dans la liste
int existe (int c, int liste[])
{
int i=0;
int r=0;
while ((i<8)&&(r==0))
{
if (c==liste[i])
r=1;
else i=i+1;
}
return r;
}
Une fonction verif_nb_couleur qui prend mon tableau d'entier t[], le nombre de couleur maximal c, et le nombre de pion (ou la longueur du tableau) p
int verif_nb_couleur (int t[], int c, int p)
{
int r=0;
int i=0;
int liste[8];
int i2=0;
while (i<p)
{
if (existe(t[i], liste)==1)
i=i+1;
else {liste[i2]=t[i];
i2=i2+1;
i=i+1;
}
}
if (i2>(c-1))
r=-1;
else r=0;
return r;
}
Verif_nb_couleur renvoie 0 si on ne dépasse pas c (soit le nombre maximal de couleur) ou -1 si on a dépassé ce nombre.
Merci
Cordialement,
Sara.
A voir également:
- Compter le nombre d'éléments différents
- Photoshop elements gratuit - Télécharger - Retouche d'image
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Afficher le 0 devant un nombre dans excel - Guide
- Excel compter le nombre de cellule d'une couleur - Guide
2 réponses
bonjour,
tu pourrais utiliser une fonction de tri, qui te donnerait directement le nombre de valeurs differentes :
( je n'ai pas teste la fonction c'est juste une idée )
int t[....]={5,9,4,4....
faire une copie du tableau si tu souhaites le conserver intact
int verif_nb_couleur(int t[], int c, int p)
{
int i, j
int Min3;
int nbcol=0;
int MinPrec=-1;
for ( i =0; i<p;i++)
{
Min3 = t[i];
for ( j =i+1; j<p;j++)
{
if ( t[j] <Min3 )
{
Min3 =t[j];
t[j]=t[i];
t[i]=Min3;
}
}
if ( Min3 >MinPrec )
nbcol++;
MinPrec=Min3;
}
if ( nbcol <= c)
return 0;
return -1;
}
tu pourrais utiliser une fonction de tri, qui te donnerait directement le nombre de valeurs differentes :
( je n'ai pas teste la fonction c'est juste une idée )
int t[....]={5,9,4,4....
faire une copie du tableau si tu souhaites le conserver intact
int verif_nb_couleur(int t[], int c, int p)
{
int i, j
int Min3;
int nbcol=0;
int MinPrec=-1;
for ( i =0; i<p;i++)
{
Min3 = t[i];
for ( j =i+1; j<p;j++)
{
if ( t[j] <Min3 )
{
Min3 =t[j];
t[j]=t[i];
t[i]=Min3;
}
}
if ( Min3 >MinPrec )
nbcol++;
MinPrec=Min3;
}
if ( nbcol <= c)
return 0;
return -1;
}
autre solution + simple toujours avec une seule fonction
se servir de ton tableau comme indice d'un autre tableau ( tab )
tu initialises à 0 ton nouveau tableau de taille egale au nombre maximal de couleurs
tu places 1 dans le nouveau tableau à l'indice qui corrrespond à chaque valeur de ton tableau de couleurs
à la fin tu comptes le nombre de 1, ça te donne le nombre de valeurs differentes de ta liste (:-)
int verif_nb_couleur(int t[], int c, int p)
{
int i;
int nbcol=0;
int tab[50];
for ( i =0; i<50;i++)
tab[i]=0;
for ( i =0; i<p;i++)
tab[t[i]]=1;
for ( i =0; i<50;i++)
nbcol = nbcol + tab[i];
if ( nbcol <= c)
return 0;
return -1;
}
c'est parce que la vitesse de la lumière est supérieure à celle du son que certains ont l'air brillant avant d'avoir l'air k.on !
se servir de ton tableau comme indice d'un autre tableau ( tab )
tu initialises à 0 ton nouveau tableau de taille egale au nombre maximal de couleurs
tu places 1 dans le nouveau tableau à l'indice qui corrrespond à chaque valeur de ton tableau de couleurs
à la fin tu comptes le nombre de 1, ça te donne le nombre de valeurs differentes de ta liste (:-)
int verif_nb_couleur(int t[], int c, int p)
{
int i;
int nbcol=0;
int tab[50];
for ( i =0; i<50;i++)
tab[i]=0;
for ( i =0; i<p;i++)
tab[t[i]]=1;
for ( i =0; i<50;i++)
nbcol = nbcol + tab[i];
if ( nbcol <= c)
return 0;
return -1;
}
c'est parce que la vitesse de la lumière est supérieure à celle du son que certains ont l'air brillant avant d'avoir l'air k.on !