Tableau en c
sweetwink
Messages postés
77
Date d'inscription
Statut
Membre
Dernière intervention
-
dioufym Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
dioufym Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je veux chercher la valeur la plus fréquente dans 1 tableau ..je sais bien que je doi parcourir le tableu avec 2 compteur dans 2 boucles pour ..mais le probléme si je retrouve 1e valeur ke jé deja fé la recherche de son nombre d'occurence 1e autre foi dans 1e autre case.kommon jpourré donc évité ke le méme parcour de tableaue se fé
je veux chercher la valeur la plus fréquente dans 1 tableau ..je sais bien que je doi parcourir le tableu avec 2 compteur dans 2 boucles pour ..mais le probléme si je retrouve 1e valeur ke jé deja fé la recherche de son nombre d'occurence 1e autre foi dans 1e autre case.kommon jpourré donc évité ke le méme parcour de tableaue se fé
A voir également:
- Tableau en c
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
13 réponses
je te conseille de faire une seule boucle pour parcourir ton tableau (si il est a une dimension)
e te conseille d'utiliser une liste chainée, stockant dans l'odre croissant tout les nombres que tu trouve.
la structure de ta liste chainée sera:
struct maillon{
maillon* suivant;
int valeur;
int occurence;
};
e te conseille d'utiliser une liste chainée, stockant dans l'odre croissant tout les nombres que tu trouve.
la structure de ta liste chainée sera:
struct maillon{
maillon* suivant;
int valeur;
int occurence;
};
tu peut utiliser soit:
1- les pointeurs :(ptr.num ,ptr.nb_occ)
2- un tableau de 2 dimensions :(t[0][0]pour le num ,t[0][1] pour nb_occ)
cdlt
1- les pointeurs :(ptr.num ,ptr.nb_occ)
2- un tableau de 2 dimensions :(t[0][0]pour le num ,t[0][1] pour nb_occ)
cdlt
Oui, utilise deux boucles for, c'est le plus simple.
Poste ton code que tu as fait jusqu'à maintenant qu'on te corrige ;)
Cdlt
Poste ton code que tu as fait jusqu'à maintenant qu'on te corrige ;)
Cdlt
#include<stdio.h>
void main()
{
int tab[100];
int i,j,n,nbmax,x,nbocc;
do{
printf("n=");
scanf("%i",&n);}
while( (n>0) &&(n<100));
for (i=0;i<n;i++)
{printf("saisir le element ",i);
scanf("%i\t",t[i]);
nbmax=0;
for(i=0;i<n;i++) ///là je peu avoir kom par hasard 1e autre valeur x ke jé déja fai son parcour de tableau dé le
{ début or je né pa besoin puiske jé trouvé son nb d'occurence////
x=t[i];
nbocc=o;
for(j=0;j<n;j++)
{
if{(x==t[i])
nbocc=nbocc+1}
}
if{(nbocc>nbmax)
nbmax=nbocc;
valfréq=x;
}
}
}
void main()
{
int tab[100];
int i,j,n,nbmax,x,nbocc;
do{
printf("n=");
scanf("%i",&n);}
while( (n>0) &&(n<100));
for (i=0;i<n;i++)
{printf("saisir le element ",i);
scanf("%i\t",t[i]);
nbmax=0;
for(i=0;i<n;i++) ///là je peu avoir kom par hasard 1e autre valeur x ke jé déja fai son parcour de tableau dé le
{ début or je né pa besoin puiske jé trouvé son nb d'occurence////
x=t[i];
nbocc=o;
for(j=0;j<n;j++)
{
if{(x==t[i])
nbocc=nbocc+1}
}
if{(nbocc>nbmax)
nbmax=nbocc;
valfréq=x;
}
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
#include<stdio.h>
void main()
{
int tab[100];
int i,j,n,nbmax,x,nbocc,valfréq;
do{
printf("saisir n":);
scanf("%i",&n);}
while( (n>0) &&(n<100));
for (i=0;i<n;i++)
{printf("saisir le element ",i);
scanf("%i\t",t[i]);
nbmax=0;
for(i=0;i<n;i++) ///là je peu avoir kom par hasard 1e autre valeur x ke jé déja fai son parcour de tableau dé le
{ début or je né pa besoin puiske jé trouvé son nb d'occurence////
x=t[i];
nbocc=o;
for(j=0;j<n;j++)
{
if{(x==t[i])
nbocc=nbocc+1}
}
if{(nbocc>nbmax)
nbmax=nbocc;
valfréq=x;
}
}
}
void main()
{
int tab[100];
int i,j,n,nbmax,x,nbocc,valfréq;
do{
printf("saisir n":);
scanf("%i",&n);}
while( (n>0) &&(n<100));
for (i=0;i<n;i++)
{printf("saisir le element ",i);
scanf("%i\t",t[i]);
nbmax=0;
for(i=0;i<n;i++) ///là je peu avoir kom par hasard 1e autre valeur x ke jé déja fai son parcour de tableau dé le
{ début or je né pa besoin puiske jé trouvé son nb d'occurence////
x=t[i];
nbocc=o;
for(j=0;j<n;j++)
{
if{(x==t[i])
nbocc=nbocc+1}
}
if{(nbocc>nbmax)
nbmax=nbocc;
valfréq=x;
}
}
}
Bonjour,
je suis débutant en c , je suis en train d'essayer ,
ce que j'ai comme idée c'est le suivant :
- Trier le tableau ( tri croissant ) ;
- construire un autre tableau : T2 à partir du T1 en supprimant toutes les occurrences des éléments de T1 ;
- faire une fonction "nboccu" qui détermine le nombre d'occurrences d'une valeur donnée dans un tableau ;
- construire un troisième tableau : T3 à deux dimension ( n lignes et 2 colonnes ) dont :
* chaque ligne contient une valeur de T2 suivi du nombre d'occurrences correspondant
je suis débutant en c , je suis en train d'essayer ,
ce que j'ai comme idée c'est le suivant :
- Trier le tableau ( tri croissant ) ;
- construire un autre tableau : T2 à partir du T1 en supprimant toutes les occurrences des éléments de T1 ;
- faire une fonction "nboccu" qui détermine le nombre d'occurrences d'une valeur donnée dans un tableau ;
- construire un troisième tableau : T3 à deux dimension ( n lignes et 2 colonnes ) dont :
* chaque ligne contient une valeur de T2 suivi du nombre d'occurrences correspondant
Salut,
Comme je vous ai déjà dit , je suis débutant en C, j'ai rencontré pas mal de difficultés ,
Je suis pas sûr du résultat, j'ai fait ce que je peux ,
mais çà donne des résultats correctes ;
Tu peux me demander des explications .
#include<stdio.h>
#include<conio.h>
int nbocc(int t[],int x)
{
int d=0;
int i=0;
while(t[i])
{
if(t[i]==x)
d++;
i++;
}
return(d);
}
void remplir(int t[],int n)
{
for(int i=0;i<n;i++)
{
printf("\n donnerle %diŠme ‚l‚ment ",i+1);
scanf("%d",&t[i]);
}
}
void trier(int t[],int n)
{
int intermid;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(t[j]<t[i])
{
intermid=t[i];
t[i]=t[j];
t[j]=intermid;
}
}
}
}
void affiche(int t[],int y)
{
printf("\n");
for(int i=0;i<y;i++)
{
printf("%d \t",t[i]);
}
}
void main()
{
int t[100];
int p[100];
int T[100][2];
int i,n,j;
int k;
clrscr();
do
{
printf("donner la dimension du tableau : ");
scanf("%d",&n);
}
while(n<0 || n>100);
remplir(t,n);
affiche(t,n);
trier(t,n);
// printf("\n");
// puts("\n Le tableau tri‚ est :");
// affiche(t,n);
i=0;
k=0;
j=0;
int nbelem=0;
do
{
j=i+1;
p[k]=t[i];
if(t[j]==t[i])
{
i=j;
}
else
{
k++;
i=j;
nbelem++;
}
}
while(j<n);
printf("\n");
puts("\n Le tableau lors du tri et de suppression d'occu est :");
affiche(p,nbelem);
for(int q=0;q<nbelem;q++)
{
T[q][0]=p[q];
T[q][1]=nbocc(t,p[q]);
}
for(int x=0;x<nbelem;x++)
{
printf("\n \n");
printf("%d : existe %d fois",T[x][0],T[x][1]);
}
int indicemax=0;
for(int m=0;m<nbelem;m++)
{
if(T[m][1]>T[indicemax][1])
indicemax=m;
}
printf("\n \n");
printf(" La valeur la plus fr‚quente est : %d",T[indicemax][0]);
printf("\n \n");
printf(" Et son nombre d'occurence est : %d", T[indicemax][1]);
getch();
}
Comme je vous ai déjà dit , je suis débutant en C, j'ai rencontré pas mal de difficultés ,
Je suis pas sûr du résultat, j'ai fait ce que je peux ,
mais çà donne des résultats correctes ;
Tu peux me demander des explications .
#include<stdio.h>
#include<conio.h>
int nbocc(int t[],int x)
{
int d=0;
int i=0;
while(t[i])
{
if(t[i]==x)
d++;
i++;
}
return(d);
}
void remplir(int t[],int n)
{
for(int i=0;i<n;i++)
{
printf("\n donnerle %diŠme ‚l‚ment ",i+1);
scanf("%d",&t[i]);
}
}
void trier(int t[],int n)
{
int intermid;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(t[j]<t[i])
{
intermid=t[i];
t[i]=t[j];
t[j]=intermid;
}
}
}
}
void affiche(int t[],int y)
{
printf("\n");
for(int i=0;i<y;i++)
{
printf("%d \t",t[i]);
}
}
void main()
{
int t[100];
int p[100];
int T[100][2];
int i,n,j;
int k;
clrscr();
do
{
printf("donner la dimension du tableau : ");
scanf("%d",&n);
}
while(n<0 || n>100);
remplir(t,n);
affiche(t,n);
trier(t,n);
// printf("\n");
// puts("\n Le tableau tri‚ est :");
// affiche(t,n);
i=0;
k=0;
j=0;
int nbelem=0;
do
{
j=i+1;
p[k]=t[i];
if(t[j]==t[i])
{
i=j;
}
else
{
k++;
i=j;
nbelem++;
}
}
while(j<n);
printf("\n");
puts("\n Le tableau lors du tri et de suppression d'occu est :");
affiche(p,nbelem);
for(int q=0;q<nbelem;q++)
{
T[q][0]=p[q];
T[q][1]=nbocc(t,p[q]);
}
for(int x=0;x<nbelem;x++)
{
printf("\n \n");
printf("%d : existe %d fois",T[x][0],T[x][1]);
}
int indicemax=0;
for(int m=0;m<nbelem;m++)
{
if(T[m][1]>T[indicemax][1])
indicemax=m;
}
printf("\n \n");
printf(" La valeur la plus fr‚quente est : %d",T[indicemax][0]);
printf("\n \n");
printf(" Et son nombre d'occurence est : %d", T[indicemax][1]);
getch();
}
Bon, je vais faire une explication pas à pas de mon programme :
SVP en cas d'erreurs de compilation , informez moi ,
En cas de besoin d'autres explications ...
#include<stdio.h>
#include<conio.h>
// nbocc est une fonction qui retourne le le nombre d'occurences
// d'un entier donné x dans un tableau t ;
int nbocc(int t[],int x)
{
int d=0;
int i=0;
while(t[i])
{
if(t[i]==x)
d++;
i++;
}
return(d);
}
// remplir : permet de remplir un tableau t de dimension n ;
void remplir(int t[],int n)
{
for(int i=0;i<n;i++)
{
printf("\n donner le %d ième élément ",i+1);
scanf("%d",&t[i]);
}
}
// la fonction trier permet de trier un tableau t de dimension n dans l'ordre croissant ;
void trier(int t[],int n)
{
int intermid;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(t[j]<t[i])
{
intermid=t[i];
t[i]=t[j];
t[j]=intermid;
}
}
}
}
// affiche permet l'affichage des élément d'un tableau t de dimension y ;
void affiche(int t[],int y)
{
printf("\n");
for(int i=0;i<y;i++)
{
printf("%d \t",t[i]);
}
}
void main()
{
// déclaration des variables ;
int t[100];
int p[100];
int T[100][2];
int i,n,j;
int k;
clrscr();
// la boucle do-while suivante permet d'assurer que la valeur de la dimension n
// du tableau t introduite soit positive et ne dépasse pas 100 ;
do
{
printf("donner la dimension du tableau : ");
scanf("%d",&n);
}
while(n<0 || n>100);
remplir(t,n); // remplir le tableau t ;
affiche(t,n); // afficher les valeurs du tableau t ;
trier(t,n); // trier le tableau t dans l'ordre croissant ;
// printf("\n");
// puts("\n Le tableau trié est :");
// affiche(t,n);
/* Dans cette partie , notre tableau t est bien trié dans l'ordre croissant , je vais créer un autre tableau nommé p de telle façon que je supprime toutes les occurences , exemple : si (après avoir trier le tableau ) on a : t = |1|1|2|3|3|5| alors le tableau p doit être comme suit :
p= |1|2|3|5|
*/
i=0;
k=0;
j=0;
int nbelem=0; // nbelem est un conteur sur le nombre d'éléments du tab p ;
do
{
j=i+1;
p[k]=t[i];
if(t[j]==t[i])
{
i=j;
}
else
{
k++;
i=j;
nbelem++;
}
}
while(j<n);
// affichage du tableau p ;
printf("\n");
puts("\n Le tableau lors du tri et de suppression d'occu est :");
affiche(p,nbelem);
/* Dans cette partie l'idée c'est de costruire un tableau nommé T à deux dimensions ( nbelem lignes et 2 colonnes )
dont chaque ligne contient un élément du tableau p ( dans la colonne 0)
suivie du nombre d'occurences qui lui correspend ( la colonne 1 du T)
*/
for(int q=0;q<nbelem;q++)
{
T[q][0]=p[q];
T[q][1]=nbocc(t,p[q]);
}
// Affichage du tableau T ;
for(int x=0;x<nbelem;x++)
{
printf("\n \n");
printf("%d : existe %d fois",T[x][0],T[x][1]);
}
/* Enfin , pour déterminer la valeur la plus fréquente dans le tableau initial t , il suffit de parcourir la colonne 1 du tableau T pour déterminer la valeur max , ( cette valeur max corespend au nombre d'occurences de la valeur la plus fréquente dans le tableau t )
une fois trouvée on affiche l'élément qui lui correspend dans la même ligne .
*/
int indicemax=0;
for(int m=0;m<nbelem;m++)
{
if(T[m][1]>T[indicemax][1])
indicemax=m;
}
printf("\n \n");
printf(" La valeur la plus fr‚quente est : %d",T[indicemax][0]);
printf("\n \n");
printf(" Et son nombre d'occurence est : %d", T[indicemax][1]);
getch();
}
SVP en cas d'erreurs de compilation , informez moi ,
En cas de besoin d'autres explications ...
#include<stdio.h>
#include<conio.h>
// nbocc est une fonction qui retourne le le nombre d'occurences
// d'un entier donné x dans un tableau t ;
int nbocc(int t[],int x)
{
int d=0;
int i=0;
while(t[i])
{
if(t[i]==x)
d++;
i++;
}
return(d);
}
// remplir : permet de remplir un tableau t de dimension n ;
void remplir(int t[],int n)
{
for(int i=0;i<n;i++)
{
printf("\n donner le %d ième élément ",i+1);
scanf("%d",&t[i]);
}
}
// la fonction trier permet de trier un tableau t de dimension n dans l'ordre croissant ;
void trier(int t[],int n)
{
int intermid;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(t[j]<t[i])
{
intermid=t[i];
t[i]=t[j];
t[j]=intermid;
}
}
}
}
// affiche permet l'affichage des élément d'un tableau t de dimension y ;
void affiche(int t[],int y)
{
printf("\n");
for(int i=0;i<y;i++)
{
printf("%d \t",t[i]);
}
}
void main()
{
// déclaration des variables ;
int t[100];
int p[100];
int T[100][2];
int i,n,j;
int k;
clrscr();
// la boucle do-while suivante permet d'assurer que la valeur de la dimension n
// du tableau t introduite soit positive et ne dépasse pas 100 ;
do
{
printf("donner la dimension du tableau : ");
scanf("%d",&n);
}
while(n<0 || n>100);
remplir(t,n); // remplir le tableau t ;
affiche(t,n); // afficher les valeurs du tableau t ;
trier(t,n); // trier le tableau t dans l'ordre croissant ;
// printf("\n");
// puts("\n Le tableau trié est :");
// affiche(t,n);
/* Dans cette partie , notre tableau t est bien trié dans l'ordre croissant , je vais créer un autre tableau nommé p de telle façon que je supprime toutes les occurences , exemple : si (après avoir trier le tableau ) on a : t = |1|1|2|3|3|5| alors le tableau p doit être comme suit :
p= |1|2|3|5|
*/
i=0;
k=0;
j=0;
int nbelem=0; // nbelem est un conteur sur le nombre d'éléments du tab p ;
do
{
j=i+1;
p[k]=t[i];
if(t[j]==t[i])
{
i=j;
}
else
{
k++;
i=j;
nbelem++;
}
}
while(j<n);
// affichage du tableau p ;
printf("\n");
puts("\n Le tableau lors du tri et de suppression d'occu est :");
affiche(p,nbelem);
/* Dans cette partie l'idée c'est de costruire un tableau nommé T à deux dimensions ( nbelem lignes et 2 colonnes )
dont chaque ligne contient un élément du tableau p ( dans la colonne 0)
suivie du nombre d'occurences qui lui correspend ( la colonne 1 du T)
*/
for(int q=0;q<nbelem;q++)
{
T[q][0]=p[q];
T[q][1]=nbocc(t,p[q]);
}
// Affichage du tableau T ;
for(int x=0;x<nbelem;x++)
{
printf("\n \n");
printf("%d : existe %d fois",T[x][0],T[x][1]);
}
/* Enfin , pour déterminer la valeur la plus fréquente dans le tableau initial t , il suffit de parcourir la colonne 1 du tableau T pour déterminer la valeur max , ( cette valeur max corespend au nombre d'occurences de la valeur la plus fréquente dans le tableau t )
une fois trouvée on affiche l'élément qui lui correspend dans la même ligne .
*/
int indicemax=0;
for(int m=0;m<nbelem;m++)
{
if(T[m][1]>T[indicemax][1])
indicemax=m;
}
printf("\n \n");
printf(" La valeur la plus fr‚quente est : %d",T[indicemax][0]);
printf("\n \n");
printf(" Et son nombre d'occurence est : %d", T[indicemax][1]);
getch();
}
je ne sais pas mais je t'assure que cet exercice ne demande pas tout ce travail moi aussi je suis débutante , je crois que le probléme en c c'est l'optimisation est c'est ce qu'on en pense pas de le faire souvent
pour voir la valeur la plus fréquente on peut se baser sur leur pourcentaga
#include<conio.h>
#include<stdio.h>
void pourcentage(int n,int t[])
{int i=0,j,l,k,cpt;
while(i<n)
{for(j=0;j<n;j++)
{if(tab[i]=tab[j])
cpt++;}
printf("le pourcentage de %d est %d",t[i],cpt*100/n);
}
i++;l=i;k=0;
while((k<i)&&(l=i))
{if(tab[i]==tab[k])
i++;
else
k++;
}}
void main()
{int n,t[n],i;
printf("entrer la dimension\n);
scanf("%d",&n);
printf("remplissage du tableau\n");
for(i=0;i<n;i++)
scanf("%d",t[i]);
pourcentage(n,t)
getch();
}
#include<conio.h>
#include<stdio.h>
void pourcentage(int n,int t[])
{int i=0,j,l,k,cpt;
while(i<n)
{for(j=0;j<n;j++)
{if(tab[i]=tab[j])
cpt++;}
printf("le pourcentage de %d est %d",t[i],cpt*100/n);
}
i++;l=i;k=0;
while((k<i)&&(l=i))
{if(tab[i]==tab[k])
i++;
else
k++;
}}
void main()
{int n,t[n],i;
printf("entrer la dimension\n);
scanf("%d",&n);
printf("remplissage du tableau\n");
for(i=0;i<n;i++)
scanf("%d",t[i]);
pourcentage(n,t)
getch();
}
salut c dioufym le sènègalais j'avè ècri un progamme mais yavè kelkes erreus car gtè pressè mais ce programme ci dessous est meilleur ke tout autre programme et facile a comprendre.il te donne la presence de chaque occurence du tableau et èvite les doublons
#include<conio.h>
#include<stdio.h>
void frequent(int n,int t[])
{
int i=0,j,k,l,cpt;
while(i<n)
{
cpt=0;
for(j=0;j<n;j++)
{if(t[i]==t[j])
cpt++;
}
printf("la presence de %d dans le tableau est %d\n",t[i],cpt);
i++;l=i;k=0;
while((k<i)&&(l=i))
{if(t[i]==t[k])
i++;
else
k++;}
}
}
main()
{int n,t[n],i;
printf("entrer la dimension du tableau\n");
scanf("%d",&n);
printf("remplissage du tableau\n");
for(i=0;i<n;i++)
scanf("%d",&t[i]);
frequent(n,t);
getch();
}
#include<conio.h>
#include<stdio.h>
void frequent(int n,int t[])
{
int i=0,j,k,l,cpt;
while(i<n)
{
cpt=0;
for(j=0;j<n;j++)
{if(t[i]==t[j])
cpt++;
}
printf("la presence de %d dans le tableau est %d\n",t[i],cpt);
i++;l=i;k=0;
while((k<i)&&(l=i))
{if(t[i]==t[k])
i++;
else
k++;}
}
}
main()
{int n,t[n],i;
printf("entrer la dimension du tableau\n");
scanf("%d",&n);
printf("remplissage du tableau\n");
for(i=0;i<n;i++)
scanf("%d",&t[i]);
frequent(n,t);
getch();
}