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 :

remplir matrice triangulaire


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut [*]remplir matrice triangulaire
    Bonjour,
    Je souhaite remplir une matrice rectangulaire sous c++ et de taille n(n-1)colonnes, par n(n+5)/2 lignes. je construit les deuc boucles for pour i et pour j, et à l'interieur je ve fais une condition, si elle est vérifée je mets un "1", sinon, un "0". Le probleme c'est que ça prend plus de 30mn. C'est d'ailleurs bizarre.
    Aidez moi, je vous prie.

    Merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Que vaut n ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Ouf, merci de me répondre.

    le dernier test que j'ai fait et là ou ça se bloquait: n=120. alors ?

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Dans ce cas ce n'est pas normal, il faut voir ton code.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Dans le code, je fais comme d'hab, i.e :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (i=1,i<=n*(n+5)/2;i++)
     {
      for (j=1,j<=n*(n-1);j++)
     {
    //ici je fais une condition en appelant une fonction externe
    //puis je remplis selon cette condition par 0 ou par 1.
     }
     
     }

    et sinon, t'aura pas une autre méthode, stp?

  6. #6
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    c'est la condition qui doit prendre tant de temps. On peut la voir? De plus les multiplications et divisions sont un peu longues, ce serait plus rapide de définir une variable maxi et une maxj.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    En voici le code : (rien que de parcourir i de n+1 à n*(n+1)/2, y a déjà des pbms)

    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
    for (int i=n+1;i<=n*(n+1)/2 ;i++ )
    {
     
      for (int j=1;j<=n*(n-1);j++ )
      {
     
         if (found(mat2[0][i], mat2[j][0]))
    	{
    	   mat2[j][i]=1;
            }
     
    	else
    	 {
    	    mat2[j][i]=0;
    	 }
     
      }
    }


    la fonction found, vérifie si des chaines de caracteres ; exemple : 1.12 se trouve dans : 12. 1 ou 1.12, si oui mettre un 1, sinon 0.
    voila.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Waou, pour une simple condition de if au milieu, tout le système est bloqué, c'est tout simplement térrible, je ne comprend rien. voici un simple exemple testé mais sans issue:

    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
     int a, b;
     a=1; b=2;
    for (int i=n+1;i<=n*(n+1)/2 ;i++ )
    {
     
      for (int j=1;j<=n*(n-1);j++ )
      {
     
    	if (a<b)
    	{
    	  mat2[j][i]=1;
    	}
    	else
    	 {
    	   mat2[j][i]=0;
    	 }
     
      }
    }

  9. #9
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 295
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    concernant le dernier code que tu as posté, quel est le problème? Quelle est la valeur de n quand tu rentres dans cette boucle?

    ps: penses à utiliser la balise [code]

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Salut,
    essaye le code avec n=120, et dis moi si t'aura pas un blocage.
    merci

  11. #11
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    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
    #include <iostream>
     
    int main()
    {
        long long int a, b, n, maxi, maxj;
        a=1;
        b=2;
        n=120;
        maxi = n*(n+1)/2;
        maxj = n*(n-1);
        exit(0);
        bool mat2[maxj][maxi];
        for (int j=0;j<maxj ;j++ )
        {
            for (int i=0;i<maxi;i++ )
            {
                if (a<b)
                {
                    mat2[j][i]=1;
                }
                else
                {
                    mat2[j][i]=0;
                }
     
            }
        }
     
        return 0;
    }
    ca marche

Discussions similaires

  1. [Débutant] parcourir et remplir matrice
    Par angel_tn dans le forum Images
    Réponses: 7
    Dernier message: 23/04/2010, 16h31
  2. Remplir matrice de 0 sous condition d'un vecteur.
    Par Newenda dans le forum MATLAB
    Réponses: 6
    Dernier message: 07/08/2009, 16h18
  3. [OpenOffice][Tableur] Obtenir un matrice triangulaire?
    Par psic dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 27/10/2008, 22h58
  4. Matrice triangulaire dans un tableau 1D
    Par lguignar dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 28/08/2008, 14h10
  5. Remplir Matrice par intervale de colonnes
    Par lloyd_r dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/07/2008, 17h47

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