Ca depend de ton IDECitation:
Envoyé par lucky31
Ca doit etre quelquepart dans un truc du genre "options de compilation"
Version imprimable
Ca depend de ton IDECitation:
Envoyé par lucky31
Ca doit etre quelquepart dans un truc du genre "options de compilation"
Pour dev c++ : outils, option du compilateur, cocher ajouter les comandes suivante lors de l'appel du compilateur, et dans l'espace texte tu metCitation:
Envoyé par Gruik
Voila...Code:-Wall -Wextra -O2
Si qqn a des remarque...
ok, regarder 1 peu mon prg je c plus quoi faire!! :cry:
j'ai vu les erreurs mais ca se compile normalement jusqu'a faite entrer l'extremiter initiale 1message d'erreur s'affiche pk?
Met le pour que on voie ce que ta corigé...Citation:
Envoyé par lucky31
Pas que je serais capable dde corriger mais je peu tenter qd mm:bug:
et je comprend pas ces erreurs comment les corriger?
#include <stdio.h>
#include<stdlib.h>
#define N 30
void tp1 ();
void tp2 ();
void tp3 ();
void tp4 ();
int choisir ();
int Index (char s);
char sommet [30];
char l2[30];
int l1[30];
int M[30][30];
int r,nb,nbr;
char s;
int main ()
{
int r, nb, nbr = 0;
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;
}
int choisir ()
{
int choix;
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: ");
choix=getchar();
return (choix);
}
//******************************************************************************
int Index (char s)
{
int r=0;
int p;
p=1;
while ((sommet[p]!=s) && (sommet[p]!='*'))
{
p=p+1;
}
if (sommet[p]==s)
{
return(p);
}
else
{
r=r+1;
sommet[r]=s;
return (r);
}
}
//******************************************************************************
void tp2 ()
{//tp1();
int i,j;
char som1,som2;
int nb=0;
int nbr=0;
char sommet[30];
int M[30][30];
printf ("donner le nombre de sommets : ");
scanf ("%d\n",&nb);
printf ("donner le nombre d'arcs : ");
scanf ("%d\n",&nbr);
//initialisation du tableau sommet
for (i=1;i<=nb;i++)
{
sommet[i]= ' ' ;
}
//initialisation de la matrice M
for (i=1;i<=nb;i++)
for (j=1;j<=nb;j++)
M[i][j]=0;
//parcours en profondeur du graphe
for (i=1;i<=nbr;i++)
{
int x,y;
printf ("donner l'extremite initiale de l'arc \n: ");
scanf ("%c",&som1);
printf ("donner l'extremite terminale de l'arc \n: ");
scanf ("%c",&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 ();
}
//******************************************************************************
void tp1 ()
{
int i,j,k,d,nb,M[30][30],l1[30];
char sommet[30],l2[30];
k=0;
//la lecture de la matrice sommet-sommet
for(i=1;i<=nb;i++)
{
for(j=1;j<=nb;j++)
{
scanf( "%d",M[i][j]);
}
}
//la lecture du tableau des sommets
for (i=1;i<=nb;i++)
{
scanf ("%c" , sommet[i]);
}
//initialisation de la liste l2
for (i=1;i<=N ; i++)
{
l2[i]=' ';
}
//creation de la liste l2
for (i=1;i<=nb;i++)
{
for (j=1;j<=nb;j++)
{
if( M[i][j]==1)
{
printf (" le successeur du sommet : ");
printf ("%c",sommet[i]);
printf (" est : ");
printf ("%c\n",sommet[j]);
k=k+1;
l2[k]=sommet[j];
}
}
}
d=i;
for (j=1;j<=nb;i++)
{
if (M[d][j]!=1)
{
k=k+1;
l2[k]='*';
}
}
//affichage de la liste l2
for(i=1;i<=N;i++)
{
while (l2[i]!=' ' )
{
printf("%c",l2[i]);
printf (" ");
}
}
//initialisation de la liste l1
for(i=1;i<N;i++)
{
l1[i]=0;
}
//creation de la liste l1
i=1;
j=1;
k=0;
a:if(M[i][j]==1)
{
k=k+1;
l1[k]=k;
j=j+1;
while(j<=nb)
{
b:if(M[i][j]==1)
{
k=k+1;
j=j+1;
goto b;
}
else
{
j=j+1;
goto b;
}
}
i=i+1;
j=1;
goto a;
}
else
{
j=j+1;
goto a;
}
int p;
p=k;
for (i=1;i<=N;i++)
{
if(l2[i]=='*')
{
l1[p]=p;
}
}
//affichage de la liste l1
for(i=1;i<=N;i++)
{
while (l1[i]!=0)
{
printf("%d",l1[i]);
printf (" ");
}
}
}
//******************************************************************************
void tp3 ()
{
int i,j,nb,M[30][30];
for (i=1;i<=nb;i++)
{
for (j=1;j<=nb;j++)
{
if ((M[i][j]==1)&&(i!=j))
{
if ((M[j][i]==1)&&(i!=j))
{
printf (" le graphe est symétrique ");
printf ("\n");
}
else printf (" le graphe est antisymetrique ");
}
if ((M[i][j]==0) && (M[j][i]==0))
{
printf (" le graphe n'est complet ");
printf ("\n");
}
else printf("le graphe est complet");
}
}
}
//return ;
//}
:sm:Met des tabulations stp
Je comprend que t'ai du mal a faire qqc avec ca...
Ben non. C'est à toi d'apprendre à le faire. Tu prends les messages un par un en commençant par le premièr et tu regardes ce qui ne va pas.Citation:
Envoyé par lucky31
Si tu ne sais pas lire l'anglais, commence par regler ce problème. Bien que n'étant que la 2 ème langue mondiale (la première étant le mandarin), on a accès à rien d'interessant sans la lecture de l'anglais (c'est quand même très simple...)
:tagcode:Citation:
Envoyé par lucky31
Et c'est quoi ce pavé ? Quel est le problème ?
c pas que je comprend pas l'anglais , mais je comprend pas pk il m'affiche ces erreurs malgre qu'il s'execute et je suis venu ici pour trouver de l'aide si vous m'aider pas qui va m'aider en + je suis une debutante ( tu la ete toi aussi un jour!!).
Quelles erreurs ?Citation:
Envoyé par lucky31
Et STP le bouton http://www.developpez.net/forums/ima...tons/quote.gif, c'est trop compliqué à utiliser ?
le pavé?Citation:
Envoyé par Emmanuel Delahaye
Vous parle du code ?
Oui ! Tu balances un pavé de code sans aucune explication, aucune question, sans balises...Citation:
Envoyé par miron
On fait quoi ? Moi, je me donne la peine de demander un explication, mais la plupart ignorent et je les comprends...
C pas moi qui l'ai mis!!!Citation:
Envoyé par Emmanuel Delahaye
euh : et ce post ?
:oops: desoled... J'en étais resté à miss lucky31Citation:
Envoyé par miron
si vous prenez la peine de lire les pages precedentes vous s'aurai c quoi le pb au lieu de balancer des mots comme ca
Pas grave, en plus moi je demande par souci de lisibilité des tabulation mais bon...:traine:Citation:
Envoyé par Emmanuel Delahaye
lol t'as raison, c'est comme ca qu'on risque de t'aider...Citation:
Envoyé par lucky31
Tu n'as toujours pas trouvé le bouton "CITER" !!!!Citation:
Envoyé par lucky31
Ca vien d'ou ce post?Citation:
Envoyé par FidoDido®
Oui !
Mais ca ne nous dit toujours pas quelles sont les erreurs que tu ne comprends pas...
De ce topic. Je disais juste ça pcq je pense que c'est plus formateur pour elle de lui indiquer comment résoudre ses problèmes plutôt que de les résoudre pour elle.Citation:
Envoyé par miron
Vous avez raison , faut que l'on t'aide, mais pas que l'on face tout.Citation:
Envoyé par lucky31
Esceque tu peut expliquer quesque tu veux que ton programme fasse?
Merci:yaisse2:
le prg doit a partir d'un graphe afficher 2 listes 1 l1 contient pour chaque sommet x l@ de ses successeurCitation:
Envoyé par miron
l2 contient la liste succsessive des succ
puis tp2 c pour la matrice...
Bon et donc tu disais que tu n'arrivais pas à comprendre ce que te disais le compilateur. Mais quels messages te posent problème plus précisément ?
:nosms: Je suis pas parfait, mais la j'ai rien compris!!!Citation:
Envoyé par lucky31
plus clair que ca!!!Citation:
Envoyé par miron
Bah c'est vrai que ce n'est pas très clair.
Bon donc tu veux représenter tes graphes par des listes d'adjacence.
Tu as une première liste de longueur le nombre de sommets qui contient des pointeurs vers d'autres listes contenant, elles, l'ensemble des sommets adjacents au sommet courant (i.e. l'indice du premier tableau)
C'est bien ça ?
D'ailleurs, dans le code que tu as envoyé, tu travailles sur des tableaux et pas sur des listes...
mais OU BLOQUES TU ?
oui c ca mais c l'execution qui bloque essaye d'executer le code et vous allez voir je c pas ou se pose le problemeCitation:
Envoyé par FidoDido®
il m'affiche pour tp1 tapez1....puis quand je tape il y a que le 2 qui repondpuis il me demande d'entrer les sommets puis les arcs puis les 2 extremiter et enfin il se bloqueCitation:
Envoyé par lucky31
ps: j'ai fait 1 appel au tp2 dans le tp1 car j'ai d'abord remplit la matrice d'adjacence pour identifier le successeur de chaque sommet
tp1() bloque !!! Alors regardons tp1() :
Pour commencer, est-ce que tu vois un problème au niveau de la variable "nb" ?Code:
1
2
3
4
5
6
7
8
9
10 void tp1 () { int i,j,k,d,nb,M[30][30],l1[30]; char sommet[30],l2[30]; k=0; //la lecture de la matrice sommet-sommet for(i=1;i<=nb;i++) { for(j=1;j<=nb;j++) .......
non nb c le nombre de sommetsCitation:
Envoyé par crocodilex
Quelle est la valeur de "nb" ?
la valeur de nb sra fixé par rapport au nombre de sommetsCitation:
Envoyé par crocodilex
Le problème c'est que ici, nb est une variable locale et elle n'est pas initialisée. Donc cela se traduit par un comportement indéfini de tes boucles "for"Citation:
Envoyé par lucky31
mais pourquoi quand je tape l'extremiter initiale qui est un caractere rien ne s'affiche et il se bloque???Citation:
Envoyé par crocodilex
Pourquoi es-tu passé sur la fonction tp2() ? Corriges d'abord tp1().Citation:
Envoyé par lucky31
car le tp1 fait appel au tp2 je dois da'bord remplir la matrice d'adjacence puis les 2 listesCitation:
Envoyé par crocodilex