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 une matrice binaire


Sujet :

C++

  1. #1
    Membre régulier
    Homme Profil pro
    chercheur
    Inscrit en
    Février 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : chercheur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2011
    Messages : 78
    Points : 109
    Points
    109
    Par défaut Remplir une matrice binaire
    Bonjour,

    Merci de m'aider à corriger mon code.

    Je pars de la matrice suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    24	29	
    2	13	15	21	22	
    16	5	14	17	
    9	20	
    27	1	28	
    11	10	19
    Je voudrais remplir une autre matrice binaire (district-secteur) de telle sorte que lorsque le secteur "j" est présent dans le district "i" ,
    la nouvelle matrice doit contenir la valeur 1, et 0 sinon.

    Exp :

    Dans le district 0, j'ai deux secteurs présents (24 et 29). Le résultat souhaité obtenir pour ce district :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	1
    Mais ce que je trouve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0
    Mon problème c'est qu'il n'incrémente pas le secteur suivant dans chaque district.

    Mon conde :

    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
    int aff_secteur_district[numberDistricts][sizemax];
    int k;
    for(int i=0;i<numberDistricts; ++i)
    {
    	for(int j=0; j<sizemax ; ++j)
    	{
    		k=0;
    		if ( (k<sizemax) && (Tab_District[i][k]!=-1) && (Tab_District[i][k] == j))
    		{
    			aff_secteur_district[i][j] = 1;
    				k++;
    		}
    			else
    				aff_secteur_district[i][j] = 0;
    	}							
    }
    Le résultat obtenu par mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	
    0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	
    0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
    Merci d'avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Utilisez un débogueur pour voir comment se comporte votre programme.

    Ici, c'est votre réinitialisation de k à chaque début de boucle intérieur qui vous plante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int aff_secteur_district[numberDistricts][sizemax];
    for(int i=0;i<numberDistricts; ++i)
    {
    	for(int j=0, int k = 0; j<sizemax ; ++j)
    	{
    		if ( (k<sizemax) && (Tab_District[i][k]!=-1) && (Tab_District[i][k] == j))
    		{
    			aff_secteur_district[i][j] = 1;
    				k++;
    		}
    			else
    				aff_secteur_district[i][j] = 0;
    	}							
    }
    Code pas testé.

    P.S. : Évitez les tableaux à la C, utilisez les outils du C++11/14/17 pour vous simplifier le code et il serait plus efficace, vu la densité des secteurs, de tout mettre à 0 et de mettre les 1 ensuite, via les index.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment remplir une matrice aléatoirement ?
    Par Hamza dans le forum Langage
    Réponses: 21
    Dernier message: 08/12/2007, 19h59
  2. remplir une matrice 3D d'images
    Par twix24 dans le forum Images
    Réponses: 1
    Dernier message: 05/12/2007, 20h27
  3. Réponses: 2
    Dernier message: 26/06/2007, 15h40
  4. Remplir une matrice et afficher son contenu
    Par annoussa dans le forum Pascal
    Réponses: 2
    Dernier message: 08/11/2006, 11h48
  5. Remplir une matrice de variance/covariance
    Par ToTo13 dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 31/07/2006, 17h55

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