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 :

Programme de tri


Sujet :

C

  1. #61
    Invité
    Invité(e)
    Par défaut
    la question n'est pas claire car je ne pense pas utiliser le do while correctement

  2. #62
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    La forme générale de cette structure de control de flux (flow control structure) est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    do {
        <code de chaque iteration>
    } while (condition);
    Son exécution est:
    1. executer le <code de chaque itération>
    2. si condition est vraie revenir au point 1

  3. #63
    Invité
    Invité(e)
    Par défaut
    Ok j ai compris...ce qui veut dire que =! Permet de sortir de la boucle dams un code do agile qui demande écrire un nombre 10.

  4. #64
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par morror Voir le message
    Ok j ai compris...ce qui veut dire que =! Permet de sortir de la boucle
    Non. != permet de vérifier une inégalité, rien d'autre. Pour sortir de la boucle (hors instructionbreak ou return), il faut que la condition demandée dans le while ne soit pas vérifiée.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #65
    Invité
    Invité(e)
    Par défaut
    Merci. Es ce que sa veut dire ( ) que elle n est pas vérifié si elle est vrai ou rien à voir ?

  6. #66
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 500
    Billets dans le blog
    1
    Par défaut
    J'ai vraiment l'impression que tu pars dans tous les sens et que tu ne fais pas les efforts pour comprendre ce que tu vois, ce que tu lis, ce que tu dis. Ne le prend pas mal, je te concède que ce n'est pas simple au début. Tu dois prendre à bras le corps cette difficulté et faire tous les efforts nécessaires pour la surmonter.

    La structure do / while est expliquée de manière exhaustive sur internet. Prend le temps de lire et de relire pour bien comprendre.

    Aussi, tu ne sembles pas faire les codes les plus simples, en tout cas tu ne les montres pas, pour comprendre les concepts que tu manipules. Tu te lances directement dans un do while avec une condition composée. Fais déjà une condition simple (ex : continuer tant le nombre saisi n'est pas 10, puis tant que le nombre est 10). Ces codes en apparence simplistes sont utiles voire nécessaires a la bonne compréhension des concepts. N'hésite pas à passer du temps dessus

    Enfin, oui : une condition est vérifiée si elle est vraie. Mais cela ne te semble pas naturel en français ? (ce n'est peut-être pas ta langue maternelle...)

    PS : tu te rends compte que ta façon de vérifier si un nombre est pair est partielle d'un point de vue mathématiques ?

  7. #67
    Invité
    Invité(e)
    Par défaut
    Merci pour cette remarque mais je ne penses pas passer à côté des choses. Je pose simplement des questions pour plus tard...
    Sinon, bien sûr que je fais les efforts pour comprendre ce que je fais sinon je ne saurais pas là mais comme tout bon modérateur tu as le droit de penser que je réécris juste ce qu'on me dit, pourtant j'ai pas l'impression de poster tout le temps de post et poser tout les jours des questions. Quand je n'en pose pas c'est que ça va, j'ai compris.

    Le fait que je pose t'elle ou t'elle question me permet surtout d'avoir une garantie de réponses adéquate...

    Je bosse avec l'ebook que j'ai reçu ici et qui m'aide beaucoup mais peut être que effectivement je ne montre pas mes structures car je n'en ai pas compris que vous aimeriez savoir ou j'en suis dans mon apprentissage du code C...
    J'en suis au chapitre et les chadoks pompaient....Faire
    Saisir un nombre
    Tant Que (nombre != 10)#include<stdio.h>

    int main (){

    int nmbre;

    printf("ecrit un nombre 10 pour arreter\n", nmbre);
    do{
    scanf("%d", &nmbre);
    }while(nmbre =!10);
    return 0;
    }

    exemple de code:
    J'ai fais pleins de choses....

  8. #68
    Invité
    Invité(e)
    Par défaut
    hier j'ai passé toute la journée à faire des boucles, les trois!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
     
    int main (){
    int valeur = 0;
    printf("affichez une valeur entre 1 a 100\n");
     
    do{
    scanf("%d",&valeur);
    }while (valeur <=100);
    return 0;
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
     
    int main ()
     
    {
    int valeur;
     
    printf("saisir une valeur de 1 a 5\n");
    do{
    scanf("%d", &valeur);}
    while((valeur==1)||(valeur==2)||(valeur==3)||(valeur==4)||(valeur==5));
    return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
     
    int main ()
     
    {
    int nombre = 10;
    for(nombre = 10; nombre >= 0; nombre--){
    printf("%d", nombre);
    }
    return 0;
    }

  9. #69
    Invité
    Invité(e)
    Par défaut
    Après l'impression que si l'impression que je donne est un peu perché, c'est normal je le suis resté un peu.
    J'essaye de m'en sortir comme je peux !

    Merci comme même de la remarque du modérateur qui ne me semble pas justifié mais que je comprends très bien,

    Merci à vous !Ternel, nnovic,Bktero et tout les autres !

  10. #70
    Invité
    Invité(e)
    Par défaut
    Bktero je prends très bien les deux premières lignes de ta phrases car effectivement j'ai un problème de concentration et je me bat pour ne pas aller dans tout les sens. (A bras le corps), comme tu dis...merci de ton intérêt !

    Nici

  11. #71
    Invité
    Invité(e)
    Par défaut
    Ternel, je vais faire ça car je ne l'ai pas encore travailler, merci.

    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
     
     
     
    #include<stdio.h>
    void echanger_entiers(int * premier, int * deuxieme) {
        // cette fonction échange la valeur des entiers désignés par premier et deuxieme
        // c'est-à-dire, les nombres *premier et *deuxieme.
     
        // ... à toi de coder ça
    }
     
    int main () {
        int a = 0, b = 0, c = 0;
        //obtenir les trois nombres
        printf("Veuillez saisir trois nombres entiers:");
        scanf("%d %d %d", &a, &b, &c);
     
        printf("Vos trois nombres sont: %d %d %d\n", a, b, c);
     
        //trier les trois nombres en utilisant la fonction echanger_entiers
        // par exemple, pour échanger a et b, utiliser echanger_entiers(&a, &b);
        // ... à toi de coder ça correctement
     
        // comme on les a triés, on a maintenant a < b et b < c;
        //afficher les nombres triés
        printf("Et dans l'ordre croissant: %d %d %d\n", a, b, c);
     
        return 0;
    }

  12. #72
    Invité
    Invité(e)
    Par défaut
    ternel je ne vois pas !

    Ai je oublié quelque chose dans le void ?
    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
    #include<stdio.h>
    void echanger_entiers(int * premier, int * deuxieme){
     
    int a;
    int b;
     
    }
    int main (){;
    int a;
    int b;
    int c;
     
    printf("veuillez saisir 3 entiers");
    scanf("%d %d %d", &a, &b, &c);
    printf("vos 3 nombres etaient %d %d %d\n", a, b, c);
     
    echanger_entiers(&a, &b);
    echanger_entiers(&b, &c);
     
    printf("dans l odre croissant %d %d %d", &a, &b, &c);
     
    return 0;
    }
    Le programme me retourne bien un ordre mais pas de nombre entier mais des nombre décimaux, comme si mes a,b,c n'avaient pas été reconnus !
    Help stp !
    C'était un peu le but du post d ailleurs que je fasse cette exercice, pardon d'avoir mis autant de temps

  13. #73
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par morror Voir le message
    Ai je oublié quelque chose dans le void ?
    Bah je sais pas trop. Peut-être (à tout hasard) on pourrait écrire les instructions effectuant réellement l'échange de façon concrète...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include<stdio.h>
    void echanger_entiers(int *x, int *y){
     
        int tmp;
     
        tmp=(*x);
        *x=(*y);
        *y=tmp;
    }
    Citation Envoyé par morror Voir le message
    Le programme me retourne bien un ordre mais pas de nombre entier mais des nombre décimaux, comme si mes a,b,c n'avaient pas été reconnus !
    Peut-être aussi éviter de mettre "&a" quand tu veux juste afficher a !!!

    PS: évite d'écrire 500 posts à la suite. Si tu oublies un truc, tu appuies sur "editer" et tu rajoutes ce que tu as oublié...
    PS2: pour ta dernière boucle (le "for" qui va de 10 à 0), remplace int nombre = 10 par unsigned int nombre = 10 et ça sera très amusant
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #74
    Invité
    Invité(e)
    Par défaut
    Désolé pour le multipostage

  15. #75
    Invité
    Invité(e)
    Par défaut
    ternel, peux tu me dire si ma structure d echange est juste ? Merci d'avance !

    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
    #include<stdio.h>
    void echanger_entiers(int * premier, int * deuxieme){
     
    int a;
    int b;
     
    }
    int main (){;
    int a;
    int b;
    int c;
     
    printf("veuillez saisir 3 entiers");
    scanf("%d %d %d", &a, &b, &c);
    printf("vos 3 nombres etaient %d %d %d\n", a, b, c);
     
    echanger_entiers(&a, &b);
    echanger_entiers(&b, &c);
     
    printf("dans l odre croissant : %d %d %d", a, b, c);
     
    return 0;
    }

  16. #76
    Invité
    Invité(e)
    Par défaut
    Je pose ma question à bktero, es ce que ma conception mathématique est compliqué dans ce code, je m'explique, le code ne marche pas et je ne saisi pas si c'est parce que je n'arrive pas à écrire autrement mes conditions alors j'aimerais savoir si il existe une autre manière de faire pour exercer les calculs dans un ordre précis, ou pas d'odre mais initialisé.

    Merci d'avance !

  17. #77
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    d'après toi, que fais cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void echanger_entiers(int * premier, int * deuxieme){
    int a;
    int b;
    }

  18. #78
    Invité
    Invité(e)
    Par défaut
    Elle déclare une variable qui n a pas d entier et déclare une variable qui s appelle premier et deuxième. Ensuite les deux int déclare a et b...?

  19. #79
    Invité
    Invité(e)
    Par défaut
    Void echanger entier (int*a, int*b)

  20. #80
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    La réponse est
    Rien.

    C'est une fonction qui ne retourne rien (son type est void)
    Elle prend en argument deux pointeurs d'entiers, qu'elle appelle premier et second.

    Sa seule activité est de définir deux variables locales a et b, toutes deux entières, et toutes deux sans valeur initiales.

    Ca ne correspond pas du tout à son nom "echanger_entiers".


    Lache le code deux minutes, et fait une comparaison.
    Enlevons le problème des pointeurs un instant.

    Prends devant toi deux objets quelconques. Pour la suite je vais dire que ce sont une pomme et une poire.
    Ils vont représenter les valeurs des deux entiers.

    Prends en un dans chaque main (mettons la pomme en main gauche, et la poire en main droite).
    Tes mains, ce sont deux variables.
    Ainsi, la valeur de "main gauche", c'est "pomme".

    Pour échanger le contenu de tes deux mains, comme elles sont pleines, tu dois en libérer une.
    Une solution, c'est:
    • poser la pomme devant toi
    • mettre la poire dans la main gauche
    • reprendre la pomme en main droite.


    Pour le C, c'est un peu pareil (sauf que tu ne vides pas une variable, tu copies les valeurs.

    Sans fonction, ca se fait donc comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int a = 1, b = 2;// les deux mains, dans l'état initial.
    int c = a; // je crée une copie de la valeur de a. (c contient 1)
    a = b; // je copie la valeur de b dans a (donc, a contient 2)
    b = c; // je remplace l'ancienne valeur de b par l'ancienne valeur de a (celle que j'ai soigneusement pensé à copier)
    Avec la fonction, comme il faut modifier les valeurs depuis l'extérieur on utilise des pointeurs comme paramètres.
    Les trois variables sont donc *premier, *second et temp.

    C'est précisément le code que t'as donné Sve@r.

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

Discussions similaires

  1. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 16h38
  2. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 20h01
  3. [Kylix] besoin d'aide pour installer kylix3
    Par Sph@x dans le forum EDI
    Réponses: 3
    Dernier message: 11/02/2004, 14h53
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 11h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 18h05

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