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 :

aider moi a resoudre le probleme


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 27
    Points : 13
    Points
    13
    Par défaut aider moi a resoudre le probleme
    salut voila j'ai fais un programme avec le langage c++ dans le but de ce programme et parcourir un graphe et faire des calcule et la recherche des composantes connexe dans le graphe alors le calcule de l'intersection entre 2 tableaux ne marche pas c-a-d le calcule est faux voila mon programme aidez moi a résoudre le problème merci


    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    #include <cstdlib>
    #include <iostream>
    #define N 5
    /* ce programme calcule la compante connexe du sommet d'un graphe.
       le graphe est stocké en utilisant la représentation version
       dictionnaire il sera stocké dans un tableau de dimension N*N.
       N étant le nombre de sommet du graphe.*/
    int comp();
    int lecture(void); //fonction de lecture du graphe
    int affi(void);   //fonction d'affichage du graphe
    int x[N][N],     //tableau des sommets
        result[N+1],
        rp[N], //tableau de la composante connexe positive
        rn[N], //tableau de la composante connexe negative
        pos,neg,  //indice de fin des tableaux X+ et X-
        verif[N+1],  //tableau pour verifier tout le graphe
        ajout,    //position d'ajout dans le tableau des résultats
        k,i,j,       //indice de recherche dans le tableau des résultats
        a;       //sommet dont on cherche la composante connexe 
     
     
    using namespace std;
     
    int main(int argc, char *argv[])
    {
        printf("\n\ttapez les sommets tel qu'il existe un arc sortant du point");
        lecture();
        int e=1;
     
        {
     
            printf("\n\n\ttapez le num du sommet dont on cherche la composante connexe:  ");
            scanf("%i",&a);
            a--;
            //calcul de X+ tous les sommets x tel qu'il existe un chemin de x vers a
            comp();   
            pos=k;
            printf("\n\tpos = %i\n",pos);
            printf("\n\n les sommets ayant une chaine de a vres  sont:\n");
            for(i=0;i<k;i++){
                rp[i]=result[i];
                printf(" %i.",rp[i]+1);
            }
            printf("\n\ttapez les sommets tel qu'il existe un arc entrant vers le point");
            lecture();
     
            //calcul de X- tous les sommets x tel qu'il existe un chemin de x vers a
            comp();
            neg=k;
            printf("\n\tneg = %i\n",neg);
            printf("\n\n les sommets ayant une chaine de a vres  sont:\n");
            for(i=0;i<k;i++){
                rn[i]=result[i];
                printf(" %i.",rn[i]+1);
            }
     
     
            e++;
            printf("\n\n");printf("\n\n");
     
      // -------------------------on réalise l'intersection entre les deux tableaux
            result[0]=a;
            k=1;
            for(i=0;i<pos;i++){
                a=1;
                for(j=0;(j<neg)&&(a);j++){
                    if(rp[i]==rn[j]){
                    a=0;
                    result[k]=rp[i];
                    k++;
                }
                                                               }
            }                           
     
     
     
        affi();
        }
        system("PAUSE");
        return EXIT_SUCCESS;
    }
     
    //--------------------------pour lire le graphe
     
    int lecture()
    {
        int i,j,p;
        for(j=0;j<N;j++)for(i=0;i<N;i++)x[i][j]=0;
        printf("\n");
        for(i=0;i<N;i++)
        {
            printf("\n\ntapez pour le point: %i     (pour finir tapez -1)\n\n",i+1);                         
            do {
                scanf("\n%i",&p);
                if(p!=-1){
                    x[i][p-1]=1;
                }
            }while(p!=-1);
        }
        return 0;                 
    }
     
     
     
    //----------------------------------------------pour afficher le résultat
     
    int affi(void)
    {
        printf("\n\n le résultat est:\n");
        for(i=0;i<k;i++)printf("__%i__",result[i]+1);
        return 0;
    }
     
    //calcule la composante connexe pur le point a entré à l'écran
    int comp()
    {
     
     
     
        //initialisation des paramètres
        k=0;
        ajout=1;
        for(i=0;i<N;i++)result[i]=0;
        for(i=0;i<N;i++)verif[i]=1;
        result[0]=a;
        verif[a]=0;
        while(k!=ajout)
        {
            for(i=0;i<N;i++)
            {
                if((x[result[k]][i])&&(verif[i]))
                {
                    result[ajout]=i;
                    ajout++;
                }
            }   
            verif[result[k]]=0;
            k++;
        }
        return 1;
    }

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut, et bienvenue sur le forum.

    A vrai dire, si ce n'était la présence de fichiers d'en-tête C++, tout ton programme semble réellement être écrit en C.

    Dés lors, la question qui me turlupine est de savoir si tu souhaite utiliser C ou C++ pour créer ton programme.

    En fonction de ta réponse, j'envisagerai de déplacer la discussion

    Ceci dit, tu dis que le résultat n'est pas correct, pourrais tu nous en dire plus sur ce point, voire, nous donner un exemple de résultat obtenu comparé au résultat escompté
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. probleme usurforme aider moi svp
    Par rimked dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/01/2008, 15h43
  2. aidez moi a resoudre ce probleme svp
    Par webisa dans le forum Requêtes
    Réponses: 6
    Dernier message: 29/09/2007, 09h57

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