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 :

question sur un tri de chaines de caractères...


Sujet :

C

  1. #1
    En attente de confirmation mail Avatar de wareq
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 257
    Points : 94
    Points
    94
    Par défaut question sur un tri de chaines de caractères...
    Bonjour,

    Je dois commenter un programme (ce n'est pas moi qui l'ai fait) , mais je peux le compiler , l'executer tout ce que je veux , pourvu que je le commente là ou ca semble le plus utile pour la compréhension...et je dois aussi décrire les fonctions ... bref on débute juste et donc voici les points sur lesquels je bute , que je ne comprend pas ( ils sont reperés par // ???). Dites moi egalement si les autres commentaires sont valables s'ils ovus plait. Je vous remercie par avance . Voici le code :

    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
    #include <stdio.h>
    #include <string.h>
     
    extern int SaisirMot(char[], char [][]);
    extern void Afficher(char[][], int);
    extern void TrierTab(char[][]);
     
    int main()
    {
    	int choix,n;
    	char noms [10][20], mot[10];
    	do
    	{
    		printf("...:::MENU:::...\n");
    		printf("1.Veuillez entrers des mots\n");
    		printf("2.Trier le tableau par ordre alphabètique\n");
    		printf("3.Afficher le tableau\n");
    		printf("4.Quitter\n");
    		scanf("%d",&choix);
    		printf("\n");
    		switch(choix)					// construction du tableau 
    		{
    			case 1:n=SaisirMot(mot,noms);
    			break;
    			case 2:
    			break;
    			case 3:Afficher(noms,n); 
    			break;
    			case 4:printf("au revoir\n");
    			break;
    			default: printf("???\n");		// ???
    		}
    	} while (choix != 4);					// tant que le choix fait est différent de 4 retour au début
    	return(0);	
     
    } 
     
    // Fonction Saisir
     
    int SaisirMot(char mot[10], char noms[10][20])
     
    {
     
    	int n,i;					// déclaration des variables n et i
     
    	printf("Combien de mots voulez vous entrer?\n");		
    	scanf("%d",&n);
     
    	for(i=1;i<=n;i++)				// boucle for...???
    	{
    		printf("entrez un mot\n");
    		scanf("%s",mot);
    		strcpy(noms[i-1],mot);			// copie de...???
    	}
    	return(n);
    }
     
    // Fonction afficher	
     
    void Afficher (char noms[10][20], int n)
    {
    	int i;						// déclaration de i
    	for(i=0;i<n;i++)				// boucle for...???
    	printf("le mot mot d'indice %d est %s\n",i+1,noms[i]); // ???
    }
     
    // Fonction trier
     
    void TrierTab(char noms[][])
    {
    	printf("en construction");
    }

  2. #2
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    switch(choix)               // construction du tableau
    ???? switch ne construit pas des tableaux, c'est comme un "if" en gros ->FAQ je pense.

    Les commentaires ne se réduisent pas qu'à annoncer le nom de la fonction ou l'initialisation d'une variable. Tu pourrais par exemple indiquer les arguments, ce que fait la fonction, comment elle le fait, ce qu'elle renvoie, etc.

  3. #3
    Membre averti Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Points : 396
    Points
    396
    Par défaut
    C'est dur de commenter clairement pas vrai ?

    Des remarques sur la forme :
    • Le plus clair c'est de mettre ses commentaire au debut de chaque fonction en expliquant son role. Personellement je fais comme ca:
      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
       
       
      #include <stdio.h>
       
       
      /*
      ** function : my_func
      **
      ** role : print a string given as parameter on standard output and return the 
      **        sum of the two first parameters
      **
      ** parameters :
      **  int a	: first int for the addition
      **  int b	: second int for the addition
      **  char * str	: string to print
      **
      ** return value :
      **  a + b
      */
       
      int		my_func(int a, int b, char *str)
      {
        my_putstr(str);
        return (a + b);
      }
      Bon la c'est un peu disproportionne mais pour des fonctions tres longues (a eviter mais quand on droit reprendre du code...) c'est pas mal.
    • Les commentaires // sont a la mode C++. Je ne suis pas sur que ca fasse parti de la norme C. A verifier.


    Au niveau de tes problemes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    default: printf("???\n");      // ???
    L'instruction qui suit default est executee si aucun des cas precedents n'a ete rencontres.
    En l'occurence si choix ne vaut ni 1 ni 2 ni 3 ni 4.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(i=1;i<=n;i++)            // boucle for...???
    Cette boucle est executee pour i de 1 a n. n est initialise par le scanf() du dessus.
    Si n vaut 3, la boucle s'executera 3 fois :
    pour i = 1, pour i = 2 et pour i = 3.

    Rappel: scanf() est TRES deconseille pour les saisies utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strcpy(noms[i-1],mot);         // copie de...???
    Copie la chaine "mot" dans la chaine "noms[i - 1]"
    noms etant declaree comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char noms [10][20], mot[10];
    Il faut veiller a ce que mot ne fasse pas plus de 20 caracteres. Sinon boum.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("le mot mot d'indice %d est %s\n",i+1,noms[i]); // ???
    $> man printf.

    printf ecrit une chaine en remplacant certains tags speciaux par des valeurs de variables.

    En l'occurence:

    "le mot d'indice [un entier] est [une chaine]\n" avec [un entier] = i + 1 et [une chaine] = noms[i].

    Je crois que c'est a peu pres tout.

    N'hesites pas si je n'ai pas ete clair.
    Don't worry, be serious.
    La vie est courte. Prenez votre temps.

    Jack.

  4. #4
    En attente de confirmation mail Avatar de wareq
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 257
    Points : 94
    Points
    94
    Par défaut
    Oui j'aimerais avoir plus de renseignements sur le switch .....
    Sinon est ce correct ce que j'ai fais ?


    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
    #include <stdio.h>
    #include <string.h>
     
    extern int SaisirMot(char[], char [][]);
    extern void Afficher(char[][], int);
    extern void TrierTab(char[][]);
     
    int main()
    {
    	int choix,n;
    	char noms [10][20], mot[10];
    	do
    	{
    		printf("...:::MENU:::...\n");
    		printf("1.Veuillez entrers des mots\n");
    		printf("2.Trier le tableau par ordre alphabètique\n");
    		printf("3.Afficher le tableau\n");
    		printf("4.Quitter\n");
    		scanf("%d",&choix);
    		printf("\n");
    		switch(choix)					 
    		{
    			case 1:n=SaisirMot(mot,noms);
    			break;
    			case 2:
    			break;
    			case 3:Afficher(noms,n); 
    			break;
    			case 4:printf("au revoir\n");
    			break;
    			default: printf("???\n");		
    		}
    	} while (choix != 4);					// tant que le choix fait est différent de 4
    	return(0);						// retour au début
     
    } 
     
     
    /*  Fonction : Saisir
    **  
    **  rôle : choix du nombre de mots que l'on veut saisir et saisie de ces derniers
    ** 
    **  paramètres : entier n, entier i.
    **   
    **  retourne : n
    */
     
    int SaisirMot(char mot[10], char noms[10][20])
     
    {
     
    	int n,i;					// déclaration des variables n et i
     
    	printf("Combien de mots voulez vous entrer?\n");		
    	scanf("%d",&n);
     
    	for(i=1;i<=n;i++)				// pour i allant de 1 à n
    	{
    		printf("entrez un mot\n");
    		scanf("%s",mot);
    		strcpy(noms[i-1],mot);			// Copie la chaine "mot" dans la chaine "noms[i - 1]" 
    	}
    	return(n);
    }
     
     
    /*  Fonction : Afficher
    **  
    **  rôle : Affiche les mots saisis au clavier
    ** 
    **  paramètres : entier i
    **   
    */
     
     
    void Afficher (char noms[10][20], int n)
    {
    	int i;						// déclaration de i
    	for(i=0;i<n;i++)				// boucle for...???
    	printf("le mot d'indice %d est %s\n",i+1,noms[i]); // ???
    }
     
    /*  Fonction : Trier
    **  
    **  rôle : Trie les mots saisis au clavier par ordre alphabètique
    **   
    */
     
    void TrierTab(char noms[][])
    {
    	printf("en construction");
    }

  5. #5
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 337
    Points : 130 288
    Points
    130 288
    Billets dans le blog
    1
    Par défaut
    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
    /*  Fonction : Afficher
    ** 
    **  rôle : Affiche les mots saisis au clavier
    **
    **  paramètres : entier i
    **   
    */
     
     
    void Afficher (char noms[10][20], int n)
    {
       int i;                  // déclaration de i
       for(i=0;i<n;i++)            // boucle for...???
       printf("le mot d'indice %d est %s\n",i+1,noms[i]); // ???
    }


    Tu confonds paramètres et variable locale.

    Un paramètre est une variable passée en... paramètre de la fonction. C'est ce que tu dois renseigner quand tu appelles la fonction. C'est généralement elle que l'on documente dans les commentaires.

    Une variable locale est une variable déclarée à l'intérieur d'une fonction, qui ne sert que dans cette dernière. Cela fait partie de la "cuisine interne" de la fonction, et ne devrait pas être commenté (sauf exception).
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  6. #6
    En attente de confirmation mail Avatar de wareq
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 257
    Points : 94
    Points
    94
    Par défaut
    D'accord mais ici c'est quoi les paramètres ? Il n'y en a pas ?

    Sinon j'ai juste a changer paramètres par variables locales..

    le reste est correct ?

    Sinon char noms, char mot... ca se place ou dans ma description ?

    Et aussi pour la case 2 j'ai pas vu ... maiis y'avais rien en faite mais je crois que le prog marche quand meme c'est normal ?

    Sinon moi je propose cela : "case 2:Trier(noms);" est ce bon?

    Merci pour votre réponse à mes nombreuses questions!

  7. #7
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 337
    Points : 130 288
    Points
    130 288
    Billets dans le blog
    1
    Par défaut


    Un paramètre est une variable passée en... paramètre de la fonction. C'est ce que tu dois renseigner quand tu appelles la fonction. C'est généralement elle que l'on documente dans les commentaires.
    Donc dans le cas de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Afficher (char noms[10][20], int n)
    Les paramètres sont "noms" et "n"...

    Sinon j'ai juste a changer paramètres par variables locales..
    Il n'y a aucun intérêt à documenter les variables locales...

    Et aussi pour la case 2 j'ai pas vu ... maiis y'avais rien en faite mais je crois que le prog marche quand meme c'est normal ?
    Oui, tu ne fais aucun traitement pour le cas 2.
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  8. #8
    En attente de confirmation mail Avatar de wareq
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 257
    Points : 94
    Points
    94
    Par défaut
    est ce que vous pourriez m'expliquer par contre a partir de la fonction saisir ce que fait le prog exactement ? car strcpy je ne comprend pas trop ..... et je pense que ca doit jouer pour les autres fonctions par la suite...donc c'est pour ca que je demande...merci


    Et aussi pour la case 2 j'ai pas vu ... maiis y'avais rien en faite mais je crois que le prog marche quand meme c'est normal ?

    Sinon moi je propose cela : "case 2:Trier(noms);" est ce bon?

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par wareq
    car strcpy je ne comprend pas trop
    Ouvre ton livre de C, c'est basique. Sinon voici un cours de C sérieux :

    http://www.linux-kheops.com/doc/ansi-c/Introduction_ANSI_C.htm
    Pas de Wi-Fi à la maison : CPL

  10. #10
    En attente de confirmation mail Avatar de wareq
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 257
    Points : 94
    Points
    94
    Par défaut
    ben je sais ce que cest , copie de chaine de caractères .... mais c'est dans le prog je comprend pas la place qu'il a! Pourquoi noms[i-1] deja ?! et l'influence que ca a sur la suite..

  11. #11
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 337
    Points : 130 288
    Points
    130 288
    Billets dans le blog
    1
    Par défaut
    Lit un mot au clavier et le place dans la variable "mot".

    Copie le mot qui a été lu dans le clavier dans le tableau noms à l'indice i - 1.

    Pourquoi i - 1 ? Parce que cette boucle va de 1 à n, or les indices d'un tableau vont de 0 à n-1.

    Tu comprends un peu mieux ou je peux aller me pendre de désespoir ? (profond soupir)

    Si tu veux des conseils pour progresser plus efficacement :
    - Achète-toi un bon livre sur le C (tous les livres ne sont pas bons).
    - Plutôt que d'étudier les programmes des autres (même si ça reste bien sûr nécessaire), tente de faire des programmes par toi-même... ça sera bien plus efficace, tu finiras par avoir les bons réflexes.
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  12. #12
    En attente de confirmation mail Avatar de wareq
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 257
    Points : 94
    Points
    94
    Par défaut
    Ok merci bien , enfin la c'est le prof qui nous a donné le prog pour le commenter et savoir décrire ce que fais un prog quoi...voila :p

  13. #13
    En attente de confirmation mail Avatar de wareq
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 257
    Points : 94
    Points
    94
    Par défaut
    Sinon avez vous testé le prog ?

    Pour la fonction trier le prog le fait tout seul ? car il y'a qu'un printf dans le void TrierTab c'est normal?


    C'est vrai il fallait la chercher , je l'ai donc fait et je propose ceci :

    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
    void TrierTab(char noms[10][20],int n)
    {    		
    	int i ,j, tst ;
    	char tmp[20];
     
    		for ( i=0; i<n ; i++)
    		{
    			j=i+1;
    			for ( j=0 ; j<n ; j++ )
    			{
    				tst = strcmp (noms[i],noms[j]);
              	if (tst > 0)	
    					{
              //Permutation des variables 			
    					strcpy(tmp,noms[i]);
    					strcpy(noms[i],noms[j]);
            				strcpy(noms[j],tmp);
             				}				
    	    		}
        		}			
    }
    Est-ce correct?

  14. #14
    Inscrit
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    992
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 992
    Points : 217
    Points
    217
    Par défaut
    Bonjour
    En faite j'avais le même probléme sauf que mes données sont séparés par un point virgule

    Vos avez une idée la dessus

    MErci d'avance

  15. #15
    En attente de confirmation mail Avatar de wareq
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 257
    Points : 94
    Points
    94
    Par défaut
    Voici mon prog tout neuf mais avec des erreurs cette fois
    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
    #include <stdio.h>
    #include <string.h>
     
    extern int SaisirMot(char[], char [][]);
    extern void Afficher(char[][], int);
    extern void TrierTab(char[][]);
     
    int main()
    {
    	int choix,n;
    	char noms [10][20], mot[10];
    	do
    	{
    		printf("...:::MENU:::...\n");
    		printf("1.Veuillez entrers des mots\n");
    		printf("2.Trier le tableau par ordre alphabètique\n");
    		printf("3.Afficher le tableau\n");
    		printf("4.Quitter\n");
    		scanf("%d",&choix);
    		printf("\n");
    		switch(choix)					 
    		{
    			case 1:n=SaisirMot(mot,noms);
    			break;
    			case 2:TrierTab(noms);
    			break;
    			case 3:Afficher(noms,n); 
    			break;
    			case 4:printf("au revoir\n");
    			break;
    			default: printf("Faites un choix entre 1 et 4!\n");		
    		}
    	} while (choix != 4);					// tant que le choix fait est différent de 4
    	return(0);						
     
    } 
     
     
    /*  Fonction : Saisir
    **  
    **  rôle : choix du nombre de mots que l'on veut saisir et saisie de ces derniers
    **
    **  paramètres : mot, noms
    ** 
    **  variables locales : entier n, entier i
    **   
    **  retourne : n
    */
     
    int SaisirMot(char mot[10], char noms[10][20])
     
    {
     
    	int n,i;					// déclaration des variables n et i
     
    	printf("Combien de mots voulez vous entrer?\n");		
    	scanf("%d",&n);
     
    	for(i=1;i<=n;i++)				// pour i allant de 1 à n
    	{
    		printf("Entrez un mot:\n");
    		scanf("%s",mot);
    		strcpy(noms[i-1],mot);			// Copie la chaine "mot" dans la chaine "noms[i-1]" 
    	}
    	return(n);
    }
     
     
    /*  Fonction : Afficher
    **  
    **  rôle : Affiche les mots saisis au clavier
    **  
    **  paramètres : noms , n
    ** 
    **  variables locales : entier i
    **   
    */
     
     
    void Afficher(char noms[10][20], int n)
    {
    	int i;						// déclaration de i
    	for(i=0;i<n;i++)				// pour i allant de 1 à n
    	printf("le mot d'indice %d est %s\n",i+1,noms[i]); // affiche le résultat
    }
     
    /*  Fonction : Trier
    **  
    **  rôle : Trie les mots saisis au clavier par ordre alphabètique
    **
    **  paramètres : noms, n
    **
    **  variables locales : entier i,j,tst ; caractère tmp[20]   
    */
     
    void TrierTab(char noms[10][20],int n)
    {    		
    	int i ,j, tst ;
    	char tmp[20];
     
    		for ( i=0; i<n ; i++)
    		{
    			j=i+1;
    			for ( ; j<n ; j++ )
    			{
    				tst = strcmp (noms[i],noms[j]);		// compare la chaine "noms[i]" à "noms[j]
              	if (tst > 0)						// si tst est supérieur à 0
    					{
              //Permutation des variables 			
    					strcpy(tmp,noms[i]);		// copie la chaine "noms[i]" dans la chaine "tmp"
    					strcpy(noms[i],noms[j]);	// copie la chaine "noms[j]" dans la chaine "noms[i]"
            				strcpy(noms[j],tmp);		// copie la chaine "tmp" dans la chaine "noms[j]"
             				}				
    	    		}
        		}			
    }
    Les erreurs :

    Exécution de gcc.exe...
    gcc.exe "C:\Documents and Settings\****\Bureau\tri.c" -o "C:\Documents and Settings\****\Bureau\tri.exe" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
    C:\Documents and Settings\****\Bureau\tri.c:97: error: conflicting types for 'TrierTab'
    C:\Documents and Settings\****\Bureau\tri.c:6: error: previous declaration of 'TrierTab'
    Je n'arrive pas a corriger ces erreurs pouvez vous m'aider ?

    Ce qui est sur c'est quand j'ai créé la fonction trier car en plus c'est la ou ya des bug..

    mercii

  16. #16
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    void TrierTab(char noms[10][20],int n) 
    extern void TrierTab(char[][]);
    Y'a un petit soucis là ...

    Nas'

  17. #17
    En attente de confirmation mail Avatar de wareq
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 257
    Points : 94
    Points
    94
    Par défaut
    Ah bien vu....
    ca serait plutot ca :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void TrierTab(char noms[10][20],int n )
    extern void TrierTab(char[][],int );
    Non?

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par wareq
    Voici mon prog tout neuf mais avec des erreurs cette fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    extern int SaisirMot(char[], char [][]);
     
    int SaisirMot(char mot[10], char noms[10][20])
    {
    Ben oui, il y a incohérence entre le prototype et la définition de la fonction.

    Pour créer un prototype séparé correct :

    copier la première ligne de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int SaisirMot(char mot[10], char noms[10][20])
    Ajouter un ';'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int SaisirMot(char mot[10], char noms[10][20]);
    C'est tout. Le mot 'extern' ne sert à rien.

    Nota. Sauf en de rares exceptions, un prototype séparé n'a d'intérêt que si on fait de la compilation séparée. Ici, comme il n'y a qu'un fichier, il suffit de suivre le principe de base 'définir avant d'utiliser', et tu verras qu'il n'y a pas besoin de prototype séparé. La fonction la plus 'publique' se retrouvant tout naturellement à la fin. (main(), bien sûr)
    Pas de Wi-Fi à la maison : CPL

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

Discussions similaires

  1. code de filtre et tri des chaines de caractères
    Par fatenatwork dans le forum Collection et Stream
    Réponses: 18
    Dernier message: 12/03/2008, 16h31
  2. case sur une partie de chaine de caractère
    Par jonathan1 dans le forum VBA Access
    Réponses: 5
    Dernier message: 27/04/2007, 17h03
  3. Réponses: 4
    Dernier message: 14/10/2006, 23h38
  4. question sur le tri à bulle
    Par argon dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 23/09/2006, 17h57
  5. [FORMS 10g] Question sur le TRI
    Par TheNerdPhreak dans le forum Forms
    Réponses: 1
    Dernier message: 10/07/2006, 18h19

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