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 :

probleme d'execution avec DEV C++


Sujet :

C

  1. #81
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par lucky31
    car le tp1 fait appel au tp2 je dois da'bord remplir la matrice d'adjacence puis les 2 listes
    Ben je ne vois pas d'appel à tp2 dans la fonction tp1 !!!

  2. #82
    Membre confirmé Avatar de lucky31
    Inscrit en
    Mai 2006
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 239
    Par défaut
    Citation Envoyé par crocodilex
    Ben je ne vois pas d'appel à tp2 dans la fonction tp1 !!!
    oui c vrai nous en nous a demander d'abord d'effectuer le tp 1 (2 listes) puis tp2( matrice) mais moi j'ai d'abord rempli la matrice puis j'ai fait appel a la matrice pour quel m'aide a me donner le succ de chaque sommets c ca

  3. #83
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par lucky31
    oui c vrai nous en nous a demander d'abord d'effectuer le tp 1 (2 listes) puis tp2( matrice) mais moi j'ai d'abord rempli la matrice puis j'ai fait appel a la matrice pour quel m'aide a me donner le succ de chaque sommets c ca
    Donc tu commences par tp2 alors ?

    Bon, étant donné que tu ne veux pas remplacer les scanf par des fgets, on va essayer de garder tes scanf, a ceci près :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void tp2 ()
    {  
        int c;    
        ......
        printf ("donner le nombre de sommets : ");
        scanf ("%d",&nb);
        while ( ((c = getchar()) != '\n') && c != EOF);
        .....
    Ca evitera quelques soucis, mais ce n'est pas gagné.
    Fais ça partout où tu as scanf, tout en restant cohérent bien entendu.

  4. #84
    Membre confirmé Avatar de lucky31
    Inscrit en
    Mai 2006
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 239
    Par défaut
    Citation Envoyé par crocodilex
    Ben je ne vois pas d'appel à tp2 dans la fonction tp1 !!!
    je vous pose 1 question: je veux remplir 1 tableau avec de sommets j'ai ecris ca mais je crois que c faux
    //initialisation du tableau sommet
    printf("entrer les sommets:\n");
    scanf("%c",&s);
    for (i=1;i<=nb;i++)
    {
    sommet[i]= s ;
    printf(" ");

    }

  5. #85
    Membre confirmé Avatar de lucky31
    Inscrit en
    Mai 2006
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 239
    Par défaut
    Citation Envoyé par crocodilex
    Donc tu commences par tp2 alors ?

    Bon, étant donné que tu ne veux pas remplacer les scanf par des fgets, on va essayer de garder tes scanf, a ceci près :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void tp2 ()
    {  
        int c;    
        ......
        printf ("donner le nombre de sommets : ");
        scanf ("%d",&nb);
        while ( ((c = getchar()) != '\n') && c != EOF);
        .....
    Ca evitera quelques soucis, mais ce n'est pas gagné.
    Fais ça partout où tu as scanf, tout en restant cohérent bien entendu.
    vous pouvez m'expliquer ca sert a quoi c=.....

  6. #86
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par lucky31
    je vous pose 1 question: je veux remplir 1 tableau avec de sommets j'ai ecris ca mais je crois que c faux
    //initialisation du tableau sommet
    printf("entrer les sommets:\n");
    scanf("%c",&s);
    for (i=1;i<=nb;i++)
    {
    sommet[i]= s ;
    printf(" ");

    }
    Lorsque tu déclares un tableau de 5 élements comme ceci :
    tab[0] est le premier élément
    et
    tab[4] est le cinquième élements

    Or, toi tu commences ta boucle à 1 et tu termines à une valeur en dehors du tableau, d'où plantage.
    Il faut que tu fasses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     for (i=0;i<nb;i++)
     {
        sommet[i]= s ;
        ......
     }

  7. #87
    Membre confirmé Avatar de lucky31
    Inscrit en
    Mai 2006
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 239
    Par défaut
    Citation Envoyé par crocodilex
    Lorsque tu déclares un tableau de 5 élements comme ceci :
    tab[0] est le premier élément
    et
    tab[4] est le cinquième élements

    Or, toi tu commences ta boucle à 1 et tu termines à une valeur en dehors du tableau, d'où plantage.
    Il faut que tu fasses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     for (i=0;i<nb;i++)
     {
        sommet[i]= s ;
        ......
     }
    mais lors de l'execution le tableau ne s'affiche pas

  8. #88
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par lucky31
    vous pouvez m'expliquer ca sert a quoi c=.....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     while ( ((c = getchar()) != '\n') && c != EOF);
    Cette ligne permet de flusher le tampon d'entrée (stdin).
    Sur ton clavier lorsque tu rentres un entier, tu valides par la touche entrée.
    Donc dans le tampon, tu as un entier + le code correspondant à la touche entrée (le fameux "\n"). Dans ton cas, scanf attends seulement un entier.
    Que fait-on du "\n" ? Et bien on le flush. De plus rien ne t'empeches de rentrer un entier + n'importe quoi + entrée. C'est pour ces raisons qu'on emploi la manière radicale ; tirer la chasse d'eau...

  9. #89
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par lucky31
    mais lors de l'execution le tableau ne s'affiche pas
    Je n'ai pas saisi là !!!!

  10. #90
    Membre confirmé Avatar de lucky31
    Inscrit en
    Mai 2006
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 239
    Par défaut
    Citation Envoyé par crocodilex
    Je n'ai pas saisi là !!!!
    //initialisation du tableau sommet
    printf("entrer les sommets pour terminer afficher '*': ");
    printf("");
    scanf("%c",&s);
    for (i=0;i<nb;i++)
    {
    sommet[i]= s ;
    printf(" ");

    }

    //initialisation de la matrice M
    for (i=1;i<=nb;i++)
    { printf("\n");
    for (j=1;j<=nb;j++)
    {
    M[i][j]=0;
    printf ("\t%d\t",M[i][j]);
    printf ("\n");
    }
    }il m'affiche n'importe quoi lors de l'execution!!!

  11. #91
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par lucky31
    //initialisation du tableau sommet
    printf("entrer les sommets pour terminer afficher '*': ");
    printf("");
    scanf("%c",&s);
    for (i=0;i<nb;i++)
    {
    sommet[i]= s ;
    printf(" ");

    }

    //initialisation de la matrice M
    for (i=1;i<=nb;i++)
    { printf("\n");
    for (j=1;j<=nb;j++)
    {
    M[i][j]=0;
    printf ("\t%d\t",M[i][j]);
    printf ("\n");
    }
    }
    il m'affiche n'importe quoi lors de l'execution!!!
    Tu n'as pas lus mes précédents messages !!!!!
    J'ai dis quoi pour le scanf ?
    Et pour les tableaux ?

  12. #92
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Alors cette fonction tp2() ? Elle avance ?

  13. #93
    Membre confirmé Avatar de lucky31
    Inscrit en
    Mai 2006
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 239
    Par défaut
    Citation Envoyé par crocodilex
    Alors cette fonction tp2() ? Elle avance ?
    je suis bloqué dans l'affichage des listes

  14. #94
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par lucky31
    je suis bloqué dans l'affichage des listes
    Montres un peu ta fonction tp2() .

  15. #95
    Membre confirmé Avatar de lucky31
    Inscrit en
    Mai 2006
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 239
    Par défaut
    Citation Envoyé par crocodilex
    Montres un peu ta fonction tp2() .
    mais j'utilise tjrs les scanf je ne cpas utilisé d'autre choses alors si tu veux tjrs que je te montre ?????

  16. #96
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par lucky31
    mais j'utilise tjrs les scanf je ne cpas utilisé d'autre choses alors si tu veux tjrs que je te montre ?????
    Ben oui, montres...

  17. #97
    Membre confirmé Avatar de lucky31
    Inscrit en
    Mai 2006
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 239
    Par défaut
    Citation Envoyé par crocodilex
    Ben oui, montres...
    mais j'ai pas encore fini avec la fonction index
    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
    void tp2 ()
    {//tp1();
    int i,j,c;
    char som1,som2;
    int nb=0;
    int nbr=0;
    char sommet[30];
    int M[30][30];
    printf ("donner le nombre de sommets : ");
    scanf ("%d",&nb);
     
     
     
    printf ("donner le nombre d'arcs : ");
    scanf ("%d",&nbr);
    printf("\n");
    //initialisation du tableau sommet
    for (i=0;i<nb;i++)
    {
       printf("\nDonner le nom du sommet nø%d :",i);
      scanf("%s",&sommet[i]);
    }
     
    //initialisation de la matrice M
     
    for (i=1;i<=nb;i++)
    { 
    for (j=1;j<=nb;j++)
    { getchar();
       printf("(%d,%d)= ",i,j);
       scanf("%d",&M[i][j]);
       printf("\n");
    }
    }
       printf( "la lecture de la matrice sommet-sommet");
          for(i=1;i<=nb;i++)
                 {
                            printf("\n");
                    for (j=1;j<=nb;j++)
               printf ("\t%d\t",M[i][j]);
             printf ("\n");
                    }
     
    //parcours en profondeur du graphe
    for (i=1;i<=nbr;i++)
    {
    int x,y;
    printf ("donner l'extremite initiale de l'arc \n: ");
    scanf ("%s",&som1);
    printf ("donner l'extremite terminale de l'arc \n: ");
    scanf ("%s",&som2);
    //x donne l'indice de som1 dans le tableau sommet
    x=Index(som1);
    // meme chose pour y
    y=Index(som2);
    M[x][y]=1;
    }
    //affichage de la matrice
    for (i=1;i<=nb;i++)
    {
    for (j=1;j<=nb;j++)
    printf ("%7d",M[i][j]);
    printf ("\n");
    }
    tp1 ();
    }
    mais il s'execute jusqu'a entrer l'extremite final!!

  18. #98
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Bon allé, en vrac quelques corrections non exhaustives (compares avec ce que tu as déjà), parceque je commence à fatiguer un peu :

    La fonction main :
    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
    int main ()
    {
        int choix;
        do
        {
            choix = choisir ();
     
            if (choix==1)
                tp1 ();
            if (choix==2)
                tp2 ();
            if (choix==3)
                tp3 ();
            //if (choix==4) tp4 ();
        }
        while (choix!=5);
        return 0;
    }
    La fonction choisir :
    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 choisir ()
    {
        int choix, c;
        printf ("tapez 1 pour effectuer le tp1 \n");
        printf ("tapez 2 pour effectuer le tp2 \n");
        printf ("tapez 3 pour effectuer le tp3 \n");
        printf ("tapez 4 pour effectuer le tp4 \n");
        printf ("tapez 5 pour sortir \n");
        printf (" Donner votre choix: ");
        scanf ("%d",&choix);
        while ( ((c = getchar()) != '\n') && c != EOF);
     
        return (choix);
    }
    La fonction tp2:
    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
    void tp2 ()
    {//tp1();
        int i,j,c;
        char som1,som2;
        int nb=0;
        int nbr=0;
        char sommet[30][30]; /* Tableau de 30 chaines de caractères */
        int M[30][30];
        printf ("donner le nombre de sommets : ");
        scanf ("%d",&nb);
        while ( ((c = getchar()) != '\n') && c != EOF);
     
        printf ("donner le nombre d'arcs : ");
        scanf ("%d",&nbr);
        while ( ((c = getchar()) != '\n') && c != EOF);
        //printf("\n");
        //initialisation du tableau sommet
        for (i=0;i<nb;i++)
        {
            printf("\nDonner le nom du sommet nø%d :",i);
            scanf("%s",&sommet[i][0]);
            while ( ((c = getchar()) != '\n') && c != EOF);
        }
     
        //initialisation de la matrice M
     
        for (i=0;i<nb;i++)
        {
            for (j=0;j<nb;j++)
            {
                //getchar();
                printf("(%d,%d)= ",i,j);
                scanf("%d",&M[i][j]);
                while ( ((c = getchar()) != '\n') && c != EOF);
                //printf("\n");
            }
        }
        printf( "la lecture de la matrice sommet-sommet\n");
        for(i=0;i<nb;i++)
        {
            //printf("\n");
            for (j=0;j<nb;j++)
                printf ("\t%d\t",M[i][j]);
            printf ("\n");
        }
     
        //parcours en profondeur du graphe
        for (i=0;i<nbr;i++)
        {
            int x,y;
            printf ("donner l'extremite initiale de l'arc \n: ");
            scanf ("%c",&som1);
            while ( ((c = getchar()) != '\n') && c != EOF);
            printf ("donner l'extremite terminale de l'arc \n: ");
            scanf ("%c",&som2);
            while ( ((c = getchar()) != '\n') && c != EOF);
            //x donne l'indice de som1 dans le tableau sommet
            x=Index(som1);
            // meme chose pour y
            y=Index(som2);
            M[x][y]=1;
        }
        //affichage de la matrice
        for (i=0;i<nb;i++)
        {
            for (j=0;j<nb;j++)
                printf ("%7d",M[i][j]);
            printf ("\n");
        }
        tp1 ();
    }
    Je vais me coucher.....

    Si quelqu'un veut bien prendre la relève...

  19. #99
    Membre confirmé Avatar de lucky31
    Inscrit en
    Mai 2006
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 239
    Par défaut bonjour
    le dernier code poser bloque lors de l'execution au niveau de la fonction Index( elle est fait pour remplir la liste l1 car elle contient l'@ des successeurs et j'ai utilisé la matrice pour cela)
    merci de vouloir bien m'aider

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par lucky31
    allez personne ne veut plus m'aider!!
    Ce code est incomplet. On ne peut pas le compiiler. Tu dois toujours vérifier que ce que tu postes est compilable ou alors tu demandes pourquoi il ne l'est pas...

Discussions similaires

  1. [VB6]Probleme d'execution avec la commande Shell
    Par belfaigore dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/06/2006, 09h28
  2. [DEB]Probleme de compil avec Dev-Cpp
    Par Marc_3 dans le forum Dev-C++
    Réponses: 3
    Dernier message: 31/01/2006, 22h27
  3. Problème d'exécution avec wxWidgets
    Par GLDavid dans le forum wxWidgets
    Réponses: 3
    Dernier message: 10/11/2005, 10h44
  4. probleme de librairie avec Dev-C++
    Par Miksimus dans le forum Dev-C++
    Réponses: 2
    Dernier message: 12/10/2005, 12h21
  5. [System][EXEC] Probleme d'execution avec une commande parametrée.
    Par chicorico dans le forum Général Java
    Réponses: 15
    Dernier message: 20/05/2005, 15h07

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