Ben je ne vois pas d'appel à tp2 dans la fonction tp1 !!!Envoyé par lucky31
Ben je ne vois pas d'appel à tp2 dans la fonction tp1 !!!Envoyé par lucky31
Software Failure. Press left mouse button to continue.Guru Meditation #0100000C.000FE800
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 caEnvoyé par crocodilex
"un ordinateur est une machine à convertir la pensée en actions". JF
Donc tu commences par tp2 alors ?Envoyé par lucky31
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 :
Ca evitera quelques soucis, mais ce n'est pas gagné.
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); .....
Fais ça partout où tu as scanf, tout en restant cohérent bien entendu.
Software Failure. Press left mouse button to continue.Guru Meditation #0100000C.000FE800
je vous pose 1 question: je veux remplir 1 tableau avec de sommets j'ai ecris ca mais je crois que c fauxEnvoyé par crocodilex
//initialisation du tableau sommet
printf("entrer les sommets:\n");
scanf("%c",&s);
for (i=1;i<=nb;i++)
{
sommet[i]= s ;
printf(" ");
}
"un ordinateur est une machine à convertir la pensée en actions". JF
vous pouvez m'expliquer ca sert a quoi c=.....Envoyé par crocodilex
"un ordinateur est une machine à convertir la pensée en actions". JF
Lorsque tu déclares un tableau de 5 élements comme ceci :Envoyé par lucky31
tab[0] est le premier élément
Code : Sélectionner tout - Visualiser dans une fenêtre à part int tab[5];
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 ; ...... }
Software Failure. Press left mouse button to continue.Guru Meditation #0100000C.000FE800
mais lors de l'execution le tableau ne s'affiche pasEnvoyé par crocodilex
"un ordinateur est une machine à convertir la pensée en actions". JF
Envoyé par lucky31Cette ligne permet de flusher le tampon d'entrée (stdin).
Code : Sélectionner tout - Visualiser dans une fenêtre à part while ( ((c = getchar()) != '\n') && c != EOF);
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...
Software Failure. Press left mouse button to continue.Guru Meditation #0100000C.000FE800
Je n'ai pas saisi là !!!!Envoyé par lucky31
Software Failure. Press left mouse button to continue.Guru Meditation #0100000C.000FE800
//initialisation du tableau sommetEnvoyé par crocodilex
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!!!
"un ordinateur est une machine à convertir la pensée en actions". JF
Tu n'as pas lus mes précédents messages !!!!!Envoyé par lucky31
J'ai dis quoi pour le scanf ?
Et pour les tableaux ?
Software Failure. Press left mouse button to continue.Guru Meditation #0100000C.000FE800
Alors cette fonction tp2() ? Elle avance ?
Software Failure. Press left mouse button to continue.Guru Meditation #0100000C.000FE800
je suis bloqué dans l'affichage des listesEnvoyé par crocodilex
"un ordinateur est une machine à convertir la pensée en actions". JF
Montres un peu ta fonction tp2() .Envoyé par lucky31
Software Failure. Press left mouse button to continue.Guru Meditation #0100000C.000FE800
mais j'utilise tjrs les scanf je ne cpas utilisé d'autre choses alors si tu veux tjrs que je te montre ?????Envoyé par crocodilex
"un ordinateur est une machine à convertir la pensée en actions". JF
Ben oui, montres...Envoyé par lucky31
Software Failure. Press left mouse button to continue.Guru Meditation #0100000C.000FE800
mais j'ai pas encore fini avec la fonction indexEnvoyé par crocodilex
mais il s'execute jusqu'a entrer l'extremite final!!
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 (); }
"un ordinateur est une machine à convertir la pensée en actions". JF
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 :
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
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 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 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); }
Je vais me coucher.....
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 (); }
Si quelqu'un veut bien prendre la relève...
Software Failure. Press left mouse button to continue.Guru Meditation #0100000C.000FE800
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
"un ordinateur est une machine à convertir la pensée en actions". JF
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...Envoyé par lucky31
Pas de Wi-Fi à la maison : CPL
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager