IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

chercher un tableau dans une matrice


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Points : 25
    Points
    25
    Par défaut 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.

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut 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()).
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Points : 25
    Points
    25
    Par défaut 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.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Points : 25
    Points
    25
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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?

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut 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 ?
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Tu parcours le tableau jusqu'à trouver ce que tu cherches.
    Je crois que vous ne m'avez pas bien compris.Ce que je veux:c'est verifier l'existence d'un tableau dans un matrice.Si vous pouvez jeter un coup d'oeil sur ce que j'ai fait un peu plus haut.

  7. #7
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    En C ça fait qqch du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for(int i=0; i<nombre_element;i++)
    {
       if(tableau[i]  ==  ce_que_tu_cherches)
       { 
       std::cout << "trouve en position " << i;
       }
       else{}
    }
    Bon c'est pas super mais ça te montre le principe
    PS:code pas vérifié

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par reggae
    En C ça fait qqch du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       std::cout << "trouve en position " << i;
    Hum ...
    Pas de Wi-Fi à la maison : CPL

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Points : 25
    Points
    25
    Par défaut chercher un tableau dans une matrice
    Je sais comment trouver si une valeur existe ou non dans un tableau.
    Voilà par ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par devdébuto
    Citation Envoyé par Emmanuel Delahaye
    Tu parcours le tableau jusqu'à trouver ce que tu cherches.
    Je crois que vous ne m'avez pas bien compris.Ce que je veux:c'est verifier l'existence d'un tableau dans un matrice.
    L'existence d'un tableau ? Si c'est une matrice codée avec un tableau de pointeurs, on peut supposer que si un des pointeurs est NULL, le tableau n'existe pas...
    Si vous pouvez jeter un coup d'oeil sur ce que j'ai fait un peu plus haut.
    Incomplet. Ne compile pas. Merci de poster un code complet mais réduit au minimum montrant le problème.
    Pas de Wi-Fi à la maison : CPL

  11. #11
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Points : 25
    Points
    25
    Par défaut chercher un tableau dans une matrice
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
    }

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut 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 ...
    Pas de Wi-Fi à la maison : CPL

  13. #13
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Encore ton probleme de permutations?

    A part les remarques d'Emmanuel:

    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é...
    Lesquels tu pourrais commencer a prendre note quand meme, ce n'est pas la premiere fois qu'on te le dit je crois...

    Ton algorithme bien que pas tres intelligent/rapide a l'avantage d'etre assez simple pour qu'on puisse voir qu'il marchera. La seule erreur que tu as dans ton code est ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("%d",m[i][j]);
    ou il faudrait mettre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("%d",m[j][i]);
    Et oui, t'as inverse les indices...


    EDITION: Une bonne page sur les permutations se trouve [url]http://www.bearcave.com/random_hacks/permute.html[/url... Avec un moindre effort, tu pourrais modifier le premier programme donne pour qu'il fasse ce que tu veux et de facon beaucoup plus rapide...

    Jc

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/06/2012, 13h48
  2. [MySQL] Chercher le contenu d'un tableau dans une table MySQL et jointure
    Par javagirl08 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 19/08/2009, 13h40
  3. Réponses: 13
    Dernier message: 03/07/2009, 15h08
  4. Tableau dans une interface idl
    Par Polochon2001 dans le forum CORBA
    Réponses: 2
    Dernier message: 14/05/2004, 09h44
  5. [VB6]Passage d'un tableau dans une DLL écrite en delphi
    Par flash dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/09/2002, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo