Tri par permutation [C]
Répondre à la discussion
Affichage des résultats 1 à 28 sur 28

Tri par permutation [C]



  1. #1
    invite3f95ae44

    Tri par permutation [C]


    ------

    Bonjour,

    On a fait ce programme en cours:

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    int T[i],temp,j;
    for(i=0,i<10;i++){
    printf("entrer une valeur");
    scanf("%d",&T[i]);
    }
    for(j=0;j<10-2;j++){
    for(i=0;i<10-2-j;i++){
    If(T[i]>T[i+1]){
    temp=T[i];
    T[i]=T[i+1];
    T[i+1]=temp;
    }
    }
    }
    }

    Or il ne fonctionne pas, j'ai du donc mal recopier et je ne vois pas l'erreur
    Merci d'avance.

    -----

  2. #2
    invite4492c379

    Re : Tri par permutation [C]

    Citation Envoyé par bouri76 Voir le message
    Bonjour,

    On a fait ce programme en cours:

    (...)
    Or il ne fonctionne pas, j'ai du donc mal recopier et je ne vois pas l'erreur
    Merci d'avance.
    Hello,

    Le code est bien plus lisible si tu l'encadres avec les balises [ code] [/ code].

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
      int T[i],temp,j;
      for(i=0,i<10;i++){
        printf("entrer une valeur");
        scanf("%d",&T[i]);
      }
      for(j=0;j<10-2;j++){
        for(i=0;i<10-2-j;i++){
          If(T[i]>T[i+1]){
            temp=T[i];
            T[i]=T[i+1];
            T[i+1]=temp;
          }
        }
      }
    }
    Je suppose que lorsque tu dis que ça ne fonctionne pas tu parles de la compilation car ton programme ne compileras pas.
    Peux=tu me donner les messages d'erreur du compilateur, nous les étudierons ici pour débugguer le source.

  3. #3
    invite3f95ae44

    Re : Tri par permutation [C]

    Il y'a déjà une erreur a corriger j'ai oublié d'initialiser le i, et

    C:\Users\Louis\Documents\ddd\m ain.c||In function `main'
    C:\Users\Louis\Documents\ddd\m ain.c|7|error: syntax error before ')' token|
    C:\Users\Louis\Documents\ddd\m ain.c|6|warning: unused variable `temp'|
    C:\Users\Louis\Documents\ddd\m ain.c|6|warning: unused variable `j'|
    C:\Users\Louis\Documents\ddd\m ain.c|11|error: syntax error before "for"|
    C:\Users\Louis\Documents\ddd\m ain.c|15|error: `i' undeclared here (not in a function)|
    C:\Users\Louis\Documents\ddd\m ain.c|15|warning: type defaults to `int' in declaration of `T'|
    C:\Users\Louis\Documents\ddd\m ain.c|15|warning: data definition has no type or storage class|
    C:\Users\Louis\Documents\ddd\m ain.c|16|warning: type defaults to `int' in declaration of `T'|
    C:\Users\Louis\Documents\ddd\m ain.c|16|error: `temp' undeclared here (not in a function)|
    C:\Users\Louis\Documents\ddd\m ain.c|16|warning: data definition has no type or storage class|
    C:\Users\Louis\Documents\ddd\m ain.c|17|error: syntax error before '}' token|
    C:\Users\Louis\Documents\ddd\m ain.c||In function `main'
    C:\Users\Louis\Documents\ddd\m ain.c|7|warning: value computed is not used|
    C:\Users\Louis\Documents\ddd\m ain.c|15|error: storage size of `T' isn't known|
    C:\Users\Louis\Documents\ddd\m ain.c|16|error: storage size of `T' isn't known|
    ||=== Build finished: 7 errors, 7 warnings ===|

  4. #4
    whoami

    Re : Tri par permutation [C]

    Bonjour,

    De toute manière, ça ne peut pas marcher en l'état : la déclaration
    Code:
     int T[i],temp,j;
    utilise une variable non déclarée, ET non initialisée pour définir la taille du tableau !!

    et la boucle
    Code:
        for(i=0;i<10-2-j;i++)
    utilise la même variable i non déclarée.

    Règle absolue si on veut un programme qui fonctionne : TOUJOURS initialiser les variables avant utilisation, sinon on va droit dans le mur.

  5. A voir en vidéo sur Futura
  6. #5
    invite3f95ae44

    Re : Tri par permutation [C]

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
      int i,N,T[i],temp,j;
      for(i=0,i<10;i++){
        printf("entrer une valeur");
        scanf("%d",&T[i]);
      }
      for(j=0;j<N-2;j++){
        for(i=0;i<N-2-j;i++){
          If(T[i]>T[i+1]){
            temp=T[i];
            T[i]=T[i+1];
            T[i+1]=temp;
          }
        }
      }
    }
    Le programme ressemble plus a à en faites mais il y'a le problème de la variable N
    Dernière modification par yoda1234 ; 06/11/2011 à 19h08.

  7. #6
    invite4492c379

    Re : Tri par permutation [C]

    En admettant que tu as corrigé les erreurs de déclaration de variables,

    Citation Envoyé par bouri76 Voir le message
    Il y'a déjà une erreur a corriger j'ai oublié d'initialiser le i, et

    C:\Users\Louis\Documents\ddd\m ain.c||In function `main'
    C:\Users\Louis\Documents\ddd\m ain.c|7|error: syntax error before ')' token|
    Il te signale une erreur de syntaxe ... la syntaxe de la boucle for est :
    for( initialisations ; conditionnelle ; incrémentation )

    Attention de mettre de ; et non des ,

    Citation Envoyé par bouri76 Voir le message
    C:\Users\Louis\Documents\ddd\m ain.c|6|warning: unused variable `temp'|
    C:\Users\Louis\Documents\ddd\m ain.c|6|warning: unused variable `j'|
    C:\Users\Louis\Documents\ddd\m ain.c|11|error: syntax error before "for"|
    C:\Users\Louis\Documents\ddd\m ain.c|15|error: `i' undeclared here (not in a function)|
    C:\Users\Louis\Documents\ddd\m ain.c|15|warning: type defaults to `int' in declaration of `T'|
    C:\Users\Louis\Documents\ddd\m ain.c|15|warning: data definition has no type or storage class|
    C:\Users\Louis\Documents\ddd\m ain.c|16|warning: type defaults to `int' in declaration of `T'|
    C:\Users\Louis\Documents\ddd\m ain.c|16|error: `temp' undeclared here (not in a function)|
    C:\Users\Louis\Documents\ddd\m ain.c|16|warning: data definition has no type or storage class|
    C:\Users\Louis\Documents\ddd\m ain.c|17|error: syntax error before '}' token|
    C:\Users\Louis\Documents\ddd\m ain.c||In function `main'
    C:\Users\Louis\Documents\ddd\m ain.c|7|warning: value computed is not used|
    C:\Users\Louis\Documents\ddd\m ain.c|15|error: storage size of `T' isn't known|
    C:\Users\Louis\Documents\ddd\m ain.c|16|error: storage size of `T' isn't known|
    ||=== Build finished: 7 errors, 7 warnings ===|
    Peux-tu corriger,relancer une compilation et nous faire part de ce qui se passe ?

  8. #7
    invite3f95ae44

    Re : Tri par permutation [C]

    C:\Users\Louis\Documents\ddd\m ain.c||In function `main':|
    C:\Users\Louis\Documents\ddd\m ain.c|13|warning: implicit declaration of function `If'|
    C:\Users\Louis\Documents\ddd\m ain.c|13|error: syntax error before '{' token|
    C:\Users\Louis\Documents\ddd\m ain.c|20|error: syntax error before '}' token|
    ||=== Build finished: 2 errors, 1 warnings ===|
    Dernière modification par yoda1234 ; 06/11/2011 à 19h09.

  9. #8
    invite4492c379

    Re : Tri par permutation [C]

    Citation Envoyé par bouri76 Voir le message
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
      int i,N,T[i],temp,j;
      for(i=0,i<10;i++){
        printf("entrer une valeur");
        scanf("%d",&T[i]);
      }
      for(j=0;j<N-2;j++){
        for(i=0;i<N-2-j;i++){
          If(T[i]>T[i+1]){
            temp=T[i];
            T[i]=T[i+1];
            T[i+1]=temp;
          }
        }
      }
    }
    Le programme ressemble plus a à en faites mais il y'a le problème de la variable N
    oublie les espaces dans les balises

    Pour initialiser un tableau il faut lui donner un taille. Si tu déclares un tableau par
    Code:
    int T[i];
    la valeur de i doit être connue (fixée et constante) lors de la compilation. Si ce n'est pas le cas il faut faire une allocation dynamique par malloc. Dans ton cas je te conseille simplement (vu la fin de ton code) d'être direct et de déclarer (même si ce n'est certainement pas la mailleure des méthodes) :
    Code:
    int T[10];
    Une méthode pour rendre le code un peu plus lisible serait de passer par un define :

    Code:
    #include ...
    
    #define TAILLE 10
    
    int main()
    {
      int T[TAILLE];
    
     ...
    
      for(i=0; i<TAILLE;i++)
    
    ...

  10. #9
    invite4492c379

    Re : Tri par permutation [C]

    Citation Envoyé par bouri76 Voir le message
    C:\Users\Louis\Documents\ddd\m ain.c||In function `main'
    C:\Users\Louis\Documents\ddd\m ain.c|13|warning: implicit declaration of function `If'|
    C:\Users\Louis\Documents\ddd\m ain.c|13|error: syntax error before '{' token|
    C:\Users\Louis\Documents\ddd\m ain.c|20|error: syntax error before '}' token|
    ||=== Build finished: 2 errors, 1 warnings ===|
    Que peux-tu dire de l'erreur implicitdeclaration of function 'If' ?

    un classique quand on débute.

  11. #10
    invite3f95ae44

    Re : Tri par permutation [C]

    Ah oui il faut faire attention aux majuscule donc c'est : if et non pas If,
    par contre après avoir corriger le programme, et rajouter un printf il ne m'affiche pas vraiment ce que je veux
    juste une valeur et ne me le trie pas arghh

  12. #11
    invite4492c379

    Re : Tri par permutation [C]

    Citation Envoyé par bouri76 Voir le message
    Ah oui il faut faire attention aux majuscule donc c'est : if et non pas If,
    par contre après avoir corriger le programme, et rajouter un printf il ne m'affiche pas vraiment ce que je veux
    juste une valeur et ne me le trie pas arghh
    poste ton code stp

  13. #12
    ventilopomme

    Re : Tri par permutation [C]

    Citation Envoyé par photon57 Voir le message
    poste ton code stp
    je veux bien croire qu'il débute en C , mais à quoi cela sert de compiler un programme si on a pas commencé à voir les bases du c et au moins ouvrir un livre comme celui de kernighan et ritchie ...
    c'est comme essayer de deviner des hiéroglyphes sans les avoir étudier avant ...
    exclu à jamais du présent

  14. #13
    invite4492c379

    Re : Tri par permutation [C]

    Je suis entièrement d'accord avec toi, et même plus en amont il faut avoir un minimum de base en algo.
    Je suppose que notre ami les a. Maintenant quand tu apprends un langage tu fais des erreurs, et à mon avis le plus simple est de comprendre les erreurs (pourquoi c'est une erreur, ce que tu n'as pas saisi, etc ...) et dans ce cas le compilateur t'aide à comprendre. Je pense que notre ami est dans la phase où il balbutie du C et n'a encore aucun des automatismes (ça se sent sur la vision qu'il a des tableaux par exemple).

  15. #14
    ventilopomme

    Re : Tri par permutation [C]

    Citation Envoyé par photon57 Voir le message
    Je suis entièrement d'accord avec toi, et même plus en amont il faut avoir un minimum de base en algo.
    Je suppose que notre ami les a. Maintenant quand tu apprends un langage tu fais des erreurs, et à mon avis le plus simple est de comprendre les erreurs (pourquoi c'est une erreur, ce que tu n'as pas saisi, etc ...) et dans ce cas le compilateur t'aide à comprendre. Je pense que notre ami est dans la phase où il balbutie du C et n'a encore aucun des automatismes (ça se sent sur la vision qu'il a des tableaux par exemple).
    il suffit qu'il prenne un livre ou un pdf sur le c et il aura toutes les réponses à ses questions
    http://emmanuel-delahaye.developpez....pragmatique-c/
    http://c.developpez.com/cours/#cours-c
    exclu à jamais du présent

  16. #15
    Dlzlogic

    Re : Tri par permutation [C]

    Bonjour,
    Ce qui m'étonne un peu, c'est la première phrase : "On a fait ce programme en cours:"
    Il me semble qu'avant de faire un traitement de tri, les notions fondamentales concernant les tableaux sont indispensables.
    Par ailleurs, j'ai pris l'habitude de déclarer le compteur de boucle dans l'instruction for(...).
    Sur le plan logique, ça me parait meilleur, puisque c'est un variable locale utilisée localement, en plus on ne risque pas de l'écraser si le module est un peu long.

  17. #16
    whoami

    Re : Tri par permutation [C]

    Bonjour,
    Citation Envoyé par ventilopomme Voir le message
    je veux bien croire qu'il débute en C , mais à quoi cela sert de compiler un programme si on a pas commencé à voir les bases du c et au moins ouvrir un livre comme celui de kernighan et ritchie ...
    c'est comme essayer de deviner des hiéroglyphes sans les avoir étudier avant ...
    Désolé, mais le K&R est tout, sauf un livre à conseiller aux débutants.

  18. #17
    ventilopomme

    Re : Tri par permutation [C]

    Citation Envoyé par Dlzlogic Voir le message
    Bonjour,
    Ce qui m'étonne un peu, c'est la première phrase : "On a fait ce programme en cours:"
    Il me semble qu'avant de faire un traitement de tri, les notions fondamentales concernant les tableaux sont indispensables.
    Par ailleurs, j'ai pris l'habitude de déclarer le compteur de boucle dans l'instruction for(...).
    Sur le plan logique, ça me parait meilleur, puisque c'est un variable locale utilisée localement, en plus on ne risque pas de l'écraser si le module est un peu long.
    Bonjour Dlzlogic
    je présumes que tu fais ceci for(int i=0; .... )
    pour que cela passe tu dois compiler en mode C99
    exclu à jamais du présent

  19. #18
    ventilopomme

    Re : Tri par permutation [C]

    Citation Envoyé par whoami Voir le message
    Bonjour,

    Désolé, mais le K&R est tout, sauf un livre à conseiller aux débutants.
    il faudrait déjà qu'ils débutent de la bonne manière , comment veux tu qu'ils débutent s'ils ne connaissent pas au départ la grammaire du langage .
    les mots clés etc , les règles d'écriture ...
    l'apprentissage par l'exemple n'est pas le meilleur apprentissage avant de comprendre comment les autres programment il faudrait peût etre commencer a savoir programmer par soi même ...
    cela éviterait de voir dans la vie active des programmes qui sont qu'une suite de copier coller indigeste ...
    exclu à jamais du présent

  20. #19
    Jack
    Modérateur

    Re : Tri par permutation [C]

    tu as raison sur le fond, mais la meilleure façon d'apprendre le Français par exemple n'est pas de lire un dictionnaire.
    Il existe des tutos bien faits qui permettent de démarrer, quitte à approfondir un peu plus tard, surtout quand on débute en info.

    A+
    Dernière modification par Jack ; 09/11/2011 à 00h01.

  21. #20
    ventilopomme

    Re : Tri par permutation [C]

    Citation Envoyé par Jack Voir le message
    tu as raison sur le fond, mais la meilleure façon d'apprendre le Français par exemple n'est pas de lire un dictionnaire.
    Il existe des tutos bien faits qui permettent de démarrer, quitte à approfondir un peu plus tard, surtout quand on débute en info.
    A+
    chalut
    sans maitriser la déclaration de variables , ne pas savoir que le c est sensible à la casse etc tout cela tu le trouves dans les différents tutoriels que j'ai mis en ligne sur le fil .
    C'est un peu du style je lance un truc écrit dans un language de programmation que je connais pas, cela marche pas je fais donc le tour de tout le monde pour demander où est le problème .
    Désolé mais c'est pas ma démarche , je préfère fouiller par moi même surtout qu'avec internet on trouve facilement des informations .
    Et si je trouve rien bah je viens poser une question .
    exclu à jamais du présent

  22. #21
    Jack
    Modérateur

    Re : Tri par permutation [C]

    je n'ai jamais lu le K & R. J'ai appris la syntaxe du C grâce au manuel de turbo C sous DOS. Tout y était et c'était même didactique je trouve.
    Maintenant je n'ai rien contre le K & R qui reste un ouvrage de référence.

    A+

  23. #22
    Dlzlogic

    Re : Tri par permutation [C]

    Bonjour,
    Juste pour ne pas rester muet, malgré mes autres bouquins, j'ai toujours le K&R à portée de main.
    Dernière modification par Dlzlogic ; 09/11/2011 à 18h43.

  24. #23
    invite4492c379

    Re : Tri par permutation [C]

    Citation Envoyé par ventilopomme Voir le message
    chalut
    sans maitriser la déclaration de variables , ne pas savoir que le c est sensible à la casse etc tout cela tu le trouves dans les différents tutoriels que j'ai mis en ligne sur le fil .
    C'est un peu du style je lance un truc écrit dans un language de programmation que je connais pas, cela marche pas je fais donc le tour de tout le monde pour demander où est le problème .
    Désolé mais c'est pas ma démarche , je préfère fouiller par moi même surtout qu'avec internet on trouve facilement des informations .
    Et si je trouve rien bah je viens poser une question .
    Hello,

    oui, tu fais comme la plupart des gens qui ne posent pas de questions ici
    Dans mes réponses, je cherche surtout à faire comprendre aux personnes qui cherchent de l'aide qu'elles doivent apprendre à débugguer mais surtout à comprendre le pourquoi du comment. J'essaye également de leur faire comprendre que «programmer» ce n'est pas se mettre devant son PC et taper du code, mais que cela recquiert une démarche ...
    Il est vrai que souvent on se frotte à des personnes qui tatonnent et finissent par avoir un programme qui tombe en marche à peu près et par hasard sans comprendre ; mais au final, demandent-elles plus ? Apparemment pas vu le suivi que ces mêmes personnes font de leur problème.

    Apprendre à programmer peut être un but, apprendre le C, juste pour apprendre le C l'est certainement beaucoup moins, sauf si tu as un examen de C à passer.

  25. #24
    whoami

    Re : Tri par permutation [C]

    Bonjour,
    Citation Envoyé par Dlzlogic Voir le message
    Bonjour,
    Juste pour ne pas rester muet, malgré mes autres bouquins, j'ai toujours le K&R à portée de main.
    Évidemment, c'est un bouquin de référence, mais pas de cours pour un débutant !
    Citation Envoyé par ventilopomme Voir le message
    chalut
    sans maitriser la déclaration de variables , ne pas savoir que le c est sensible à la casse etc tout cela tu le trouves dans les différents tutoriels que j'ai mis en ligne sur le fil .
    C'est un peu du style je lance un truc écrit dans un language de programmation que je connais pas, cela marche pas je fais donc le tour de tout le monde pour demander où est le problème .
    Désolé mais c'est pas ma démarche , je préfère fouiller par moi même surtout qu'avec internet on trouve facilement des informations .
    Et si je trouve rien bah je viens poser une question .
    Tu as donc appris la grammaire et la syntaxe du français avant d'avoir appris le moindre mot de la langue ...

  26. #25
    Dlzlogic

    Re : Tri par permutation [C]

    Bonsoir,
    Il est vrai que j'ai appris le développement et la programmation avec des manuels de référence, ce qu'on trouvait vers les années 70. Olivette et HP pour commencer, puis le Fortran, puis le C. En fait, je crois que je n'ai jamais eu de bouquin d'apprentissage, sauf en PHP, mais là c'était hier.
    C'est probablement pour ça que j'ai énormément de lacunes ... non je rigole.
    En fait ce que je pense, c'est que quelqu'un qui a la tournure d'esprit nécessaire se contentera d'une information (livre de référence) alors que celui qui ne l'a pas, y arrivera difficilement, même avec le meilleur cours possible.

  27. #26
    ventilopomme

    Re : Tri par permutation [C]

    Citation Envoyé par whoami Voir le message
    Bonjour,
    Évidemment, c'est un bouquin de référence, mais pas de cours pour un débutant !
    Tu as donc appris la grammaire et la syntaxe du français avant d'avoir appris le moindre mot de la langue ...
    Compare déja ce qui est comparable
    Ouvre déja un manuel de programmation et tu verras la grammaire la définition des mots clés etc tout y est
    croire qu'on peut programmer en faisant une passe avec les mains et surtout avec les idées des autres c un peu facile
    Aprés y a débutant et débutant , débutant scolaire et le débutant pour sa culture personnelle (projet perso ou projet pour une association)
    quand on débute dans un langage informatique , on prends surtout le bouqin de référence et ensuite on se mets a faire des petits programmes
    mais faire l'inverse c'est comme construire une maison en commencant par le toit ...
    exclu à jamais du présent

  28. #27
    Tryph

    Re : Tri par permutation [C]

    Ola!

    Citation Envoyé par ventilopomme Voir le message
    Compare déja ce qui est comparable
    Citation Envoyé par ventilopomme Voir le message
    quand on débute dans un langage informatique , on prends surtout le bouqin de référence et ensuite on se mets a faire des petits programmes
    mais faire l'inverse c'est comme construire une maison en commencant par le toit ...

    désolé

    perso j'ai commencé a apprendre la programmation avec des exemples à la con et des tutos.
    c'est seulement une fois que j'ai su (à peu près) programmer - je devrais dire "assimilé les concepts de base de l'algo" - que j'ai commencé a m'intéresser aux références.

    a+
    Dernière modification par Tryph ; 16/11/2011 à 13h15.

  29. #28
    ventilopomme

    Re : Tri par permutation [C]

    Citation Envoyé par Tryph Voir le message
    Ola!





    désolé

    perso j'ai commencé a apprendre la programmation avec des exemples à la con et des tutos.
    c'est seulement une fois que j'ai su (à peu près) programmer - je devrais dire "assimilé les concepts de base de l'algo" - que j'ai commencé a m'intéresser aux références.

    a+
    oui mais tout dépend si la personne en question a des facilités concernant la programmation , c'est pas donné à tout le monde ....
    exclu à jamais du présent

Discussions similaires

  1. tri des matériaux par densité ...
    Par invited6ccf487 dans le forum Physique
    Réponses: 1
    Dernier message: 01/06/2011, 20h28
  2. Tri par sélection
    Par invite7753bc49 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 16/04/2011, 21h33
  3. Tri par tas en C
    Par invite9eb6db85 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 26/02/2011, 18h21
  4. algorithme de tri par sélection
    Par invite8b421ec7 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 11/05/2009, 22h10
  5. Démarrage moteur tri 220V par réhostat
    Par invitea800ac64 dans le forum Technologies
    Réponses: 1
    Dernier message: 01/05/2008, 17h27