chercher un tableau dans une matrice
bonsoir! je voudrais savoir comment chercher un tableau d'entiers à une dimension s'il existe ou non dans une matrice.
Re: chercher un tableau dans une matrice
Citation:
Envoyé par devdébuto
bonsoir! je voudrais savoir comment chercher un tableau d'entiers à une dimension s'il existe ou non dans une matrice.
C'est une question d'algorithme, pas de C...
Si le tableau n'est pas trié, une recherche lineaire s'impoe.
Si il est trié, une recheche dichotomique est possible (en C, bsearch()).
chercher un tableau dans une matrice
Citation:
Envoyé par Emmanuel Delahaye
Si le tableau n'est pas trié, une recherche lineaire s'impoe.
Je voudrais savoir comment se fait le recherche linéaire.
chercher un tableau dans une matrice
je veux mettre à chaque fois le contenu du tableau dans la matrice aprés avoir fait une permutation aléatoire et vérifier s'il existe ou non dans la matrice.
Voici ce que j'ai écrit:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| ligne=0;
do
{
/*générer un nouveau tableau T*/
i=rand()%n;
do
{
j=rand()%n;}
while(i==j);
aux=t[i];
t[i]=t[j];
t[j]=aux;
/*chercher T dans la matrice m*/
j=0;stop=0;
while(j<ligne && stop==0)
{ different=0;
i=0;
while(i<n && different==0)
{
if(t[i]!=m[ligne][i])
different=1;
else
i++;
}
if(different==1)
j++;
else
stop=1;
}
if(stop==0)
{
/*ajouter t dans m*/
for(j=0;j<n;j++)
m[ligne][j]=t[j];
ligne++;
}
}
while(ligne<fact(n)); |
Le problème c'est que je n'ai pas obtenu le bon résultat.Si vous pouvez me corriger?
Re: chercher un tableau dans une matrice
Citation:
Envoyé par devdébuto
Citation:
Envoyé par Emmanuel Delahaye
Si le tableau n'est pas trié, une recherche lineaire s'impoe.
Je voudrais savoir comment se fait le recherche linéaire.
Tu parcours le tableau jusqu'à trouver ce que tu cherches... C'est un peu le B.A. BA de l'informatique non ? Tu n'as jamais fais d'algorithmique, même la plus élémentaire ?
chercher un tableau dans une matrice
Je sais comment trouver si une valeur existe ou non dans un tableau.
Voilà par ex:
Code:
1 2 3 4 5 6 7 8 9
| i=0;
trouve=0;
while(i<n && trouve==0)
{
if(t[i]==val)
trouve=1;
else
i++;
} |
if(trouve) printf("valeur trouvée");
else printf(".....");
Mon problème c'est comme faire la corrspondance avec les matrices.
S'il vous plait,j'ai besoin de votre aide.
chercher un tableau dans une matrice
voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| #include<stdio.h>
#include<stdlib.h>
void main()
{
int fact(int n);
int t[100],m[1000][100],i,j,aux,different,stop,ligne,n;
do
{
printf("Donner le nombre d'entiers à entrer:\n");
scanf("%d",&n);
}
while(n<=0 || n>100);
printf("Le nombre de combinaisons est %d\n",fact(n));
for(i=0;i<n;i++)
{
printf("Donner le %d%s element ",(i+1),(i)?"eme":"er");
scanf("%d",&t[i]);
}
ligne=0;
do
{
/*générer un nouveau tableau T*/
i=rand()%n;
do
{
j=rand()%n;}
while(i==j);
aux=t[i];
t[i]=t[j];
t[j]=aux;
/*chercher T dans la matrice m*/
j=0;stop=0;
while(j<ligne && stop==0)
{ different=0;
i=0;
while(i<n && different==0)
{
if(t[i]!=m[j][i])
different=1;
else
i++;
}
if(different==1)
j++;
else
stop=1;
}
if(stop==0)
{
/*ajouter t dans m*/
for(j=0;j<n;j++)
m[ligne][j]=t[j];
ligne++;
}
}
while(ligne<fact(n));
/*affichage des combinaisons*/
for(j=0;j<fact(n);j++)
{
for(i=0;i<n;i++)
printf("%d",m[i][j]);
printf("-");
}
}
int fact(int n)
{
int i;int f;
f=1;
for(i=1;i<=n;i++)
f=f*i;
return f;
} |
Re: chercher un tableau dans une matrice
Citation:
Envoyé par devdébuto
voici mon code:
- On a pas déjà dit 3000 fois que main() retournait int ?
- On ne met pas une declaration de fonction dans un bloc.
- La première fois qu'on lit la matrice m, elle n'est pas initialisé...
Si je comprends bien, ta méthode pour trouver les combinaisons est le pseudo-hasard ?
Si j'ai bien compris, tu prends une liste de n valeurs, et tu les melanges autant de fois qu'il faut pour trouver une combinaison originale ? Techniquement, ça devrait marcher, mais il est probable que le temps d'exécution augmente exponentiellement avec le nombre d'éléments à combiner...
Pas sûr que ce soit très efficace...
Pour comparer deux tableaux, on compare chaque éléments des tableaux ...