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 :

Ecrire un programme en C.


Sujet :

C

  1. #1
    Invité
    Invité(e)
    Par défaut Ecrire un programme en C.
    Bonjour,

    j'essaye de faire l'exercice 1. Je suis bloqué car je ne vois pas comment faire...
    je n'arrive pas à le programmer...
    Pouvez-vous m'aider ?
    Pièce jointe 588748
    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    février 2008
    Messages
    2 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : février 2008
    Messages : 2 166
    Points : 4 264
    Points
    4 264
    Billets dans le blog
    4
    Par défaut
    Bonjour.

    Oui on peut t’aider 😁.

    De rien.

    P.s. : ici pour avoir vraiment de l’aide il faut poster son code source et expliquer les problèmes rencontrés 😉.
    Utilisation de Glade avec Gtk+ - N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk

  3. #3
    Invité
    Invité(e)
    Par défaut
    Le problème c'est que je ne vois pas par quoi commencé...
    Dernière modification par LittleWhite ; 19/01/2021 à 12h44. Motif: Pas besoin de citer l'intégralité du message précédent

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    février 2008
    Messages
    2 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : février 2008
    Messages : 2 166
    Points : 4 264
    Points
    4 264
    Billets dans le blog
    4
    Par défaut
    Une première ligne qui demande un texte a l’utilisateur.

    Une boucle qui extrait de ce texte tous les "mots" séparés par un espace. Un compteur initialisé à 1 sera affiché ainsi que le mot trouvé. A chaque mot trouvé on incrémente le compteur et on passe au suivant.

    En partant de là je suppose quand-même que tu as eu un minimum de cours en C.
    Utilisation de Glade avec Gtk+ - N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oui je suis en licence.

    Merci, je ne voyais pas comment réaliser le programme. j'ai eu la même idée que vous mais c'est dans l'écriture que je suis bloqué...

    j'ai commencé par :

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main (void) {
       char chaine [100];
     
       printf ("Entrez_100_caracteres_:_\n);
       While 
       scnaf ("%c", chaine [k]);
      }
      chaine [8] = "\0";
      printf ("La_chaine_est_:_%s\n", chaine);
     
     return EXIT_SUCCESS;
    }
    je ne sais pas comment faire pour le compteur...
    Dernière modification par Winjerome ; 18/01/2021 à 20h06. Motif: Ajout des balises [CODE] mon code [/CODE] (bouton #)

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    février 2008
    Messages
    2 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : février 2008
    Messages : 2 166
    Points : 4 264
    Points
    4 264
    Billets dans le blog
    4
    Par défaut
    Houla, ton code n'en ai pas un !

    Pour commencer encadre ton code avec les balises [code] (le # dans les icônes).

    La fonction printf (); affiche un texte, c'est tout. Ton exercice te demande d'utiliser la fonction scanf (); -> documentation en français. Tu trouveras dans cette page toutes les réponses à tes questions quant à la gestion des entrées/sorties en console.

    La boucle while (), si elle répète plusieurs instructions, doit encadrer ces dernières par des {}.. De plus elle attend une condition pour pouvoir sortir -> faq instruction while ();


    Histoire que tu vois comment on écrit un code lisible et structuré voila une base de départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int main(int argc, char* argv[]) {
      char chaine [101];
     
      printf ("Entrez 100 caracteres : ");
      scanf ("%100s", chaine);
     
      printf ("La chaine est : %s\n", chaine);
     
      return EXIT_SUCCESS;
    }
    Quelques explications.

    La chaîne doit contenir 101 caractères. scanf ("%100s", chaine); va autoriser 100 caractères + un caractère de fin \0. D'où 101.

    Pourquoi j'utilise %s ? C'est demandé dans l'exercice . Le nombre 100 interdit le dépassement de tampon mémoire (longueur de la chaîne).

    À ton clavier maintenant ...
    Utilisation de Glade avec Gtk+ - N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk

  7. #7
    Invité
    Invité(e)
    Par défaut
    D'accord, merci beaucoup j'y vois déjà plus clair !!
    Du coup maintenant pour introduire la fonction While, je l'écris après return EXIT_SUCCESS; ?

    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
    return EXIT_SUCCESS;
    }
     
    char chaine [] = "%100s"
    int i;
    int compteur = 0;
     
    while (i=0, chaine [i] !='\0';i++)
    {      
           or (i = "0+1", chaine [i] !=' ')
           {
                  printf ("%s", chaine [i]);
              }
            else printf ("\n");
    }
    Dernière modification par Winjerome ; 18/01/2021 à 20h05. Motif: Inutile de citer intégralement le message précédent

  8. #8
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    février 2008
    Messages
    2 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : février 2008
    Messages : 2 166
    Points : 4 264
    Points
    4 264
    Billets dans le blog
    4
    Par défaut
    Sais-tu ce que fait l'instruction return EXIT_SUCCESS; ?
    Utilisation de Glade avec Gtk+ - N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk

  9. #9
    Invité
    Invité(e)
    Par défaut
    Ha mince je me suis trompé... cette instruction nous remène a notre page de code.

    ma boucle est bonne ou pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char chaine [] = "%100s"
    int i;
    int compteur = 0;
     
    while (i=0, chaine [i] !='\0';i++)
    {
    or (i = "0+1", chaine [i] !=' ')
    {
    printf ("%s", chaine [i]);
    }
    else printf ("\n");
    Dernière modification par LittleWhite ; 19/01/2021 à 12h44.

  10. #10
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    février 2008
    Messages
    2 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : février 2008
    Messages : 2 166
    Points : 4 264
    Points
    4 264
    Billets dans le blog
    4
    Par défaut
    Compiles-tu ton code avant de nous le donner ?

    L’instruction or n’existe pas !
    Utilisation de Glade avec Gtk+ - N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Compiles-tu ton code avant de nous le donner ?

    L’instruction or n’existe pas !
    non parce que je ne sais pas comment coder l'instruction...
    j'ai besoins de votre aide.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Ce n'est pas un devoir à rendre, c'est juste un exercice mais je n'y arrive pas... je ne comprends pas...

    Pourriez-vous le faire et ensuite m'expliquer svp ?
    Si vous avez un peu de temps

  13. #13
    Expert confirmé

    Inscrit en
    août 2006
    Messages
    3 840
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 3 840
    Points : 5 412
    Points
    5 412
    Par défaut
    Bonjour,
    Citation Envoyé par Uln7683 Voir le message
    Ce n'est pas un devoir à rendre, c'est juste un exercice mais je n'y arrive pas... je ne comprends pas...

    Pourriez-vous le faire et ensuite m'expliquer svp ?
    Si vous avez un peu de temps
    Ce n'est pas un devoir ?

    Je veux bien te croire.

    MAIS si c'est un exercice que tu as choisi de faire, c'est que tu veux courir avant de savoir marcher :
    manifestement, tu ne connais pas les bases du langage, et c'est bien évidemment par là qu'il faut commencer.

    "Mon pied droit est jaloux de mon pied gauche.
    Quand l'un avance, l'autre veut le dépasser.
    Et moi, comme un imbécile, je marche !"
    [Raymond Devos]

  14. #14
    Invité
    Invité(e)
    Par défaut
    C'est un exercice donné par le prof à faire pour demain !
    Mais je n'y arrive pas...
    Dernière modification par LittleWhite ; 19/01/2021 à 12h46. Motif: Pas besoin de citer l'intégralité du message précédent

  15. #15
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    8 773
    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 : 8 773
    Points : 24 083
    Points
    24 083
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Uln7683 Voir le message
    ma boucle est bonne ou pas ?
    char chaine [] = "%100s"
    int i;
    int compteur = 0;

    while (i=0, chaine [i] !='\0';i++)
    {
    or (i = "0+1", chaine [i] !=' ')
    {
    printf ("%s", chaine [i]);
    }
    else printf ("\n");
    Ouais bien sûr. Déjà on t'a dit de mettre ton code entre balises "code" mais malgré ça, tu as posté deux codes sans tenir compte de cette remarque ce qui a bien entamé notre dose de patience à ton égard. C'est plus un poil que tu as dans la main, c'est carrément de la moquette. T'as même pas été foutu de donner à ton post un titre qui résume ta problématique (ou alors ta problématique c'est clairement de pouvoir écrire un programme en C quel qu'il soit quoi).
    Accessoirement ces codes sont tous deux plus horrible l'un que l'autre ce qu'on aurait pu croire impossible (si A est plus horrible que B alors B ne peut pas être plus horrible que A) mais que manifestement tu as réussi à faire. Comme quoi ...

    Alors pour ta boucle
    • il semble que tu confondes "while" et "for"
    • il semble que tu confondes la virgule et le point-virgule
    • l'instruction "or" n'existe pas
    • i (un int) ne peut pas être égal à "0+1" (une string). En fait aussi bizarre que cela parraisse, cela peut arriver mais le résultat sera anarchique (une string étant un pointeur, une adresse, ça reste en effet un nombre)
    • "=" c'est une affectation, pas une comparaison (mais peut-être voulais-tu réellement affecter l'adresse de "0+1" à l'entier "i"...)
    • chaine étant une string, chaine[i] est un caractère donc le format de "printf" ne doit pas être "%s"

    Et accessoirement, en plus de l'inutilité de la variable "compteur" non utilisée et de la parité des accolades ouvrantes/fermantes non respectée (on n'en n'est plus là n'est-ce pas ?) personne ne comprend pourquoi tu stockes la string "%100s" dans le tableau de char "chaine" mais là, l'instruction est correcte.

    Citation Envoyé par Uln7683 Voir le message
    non parce que je ne sais pas comment coder l'instruction...
    Ah ben les livres de C ne servent pas que de table basse pour mettre une bière dessus (oui je sais, aujourd'hui les livres de C on les télécharge mais je voyais mal comment faire un vanne à partir d'un tuto téléchargé , ou alors style "les tutos de C qu'on télécharge ne servent pas qu'à remplir le dossier bittorrent pour faire augmenter notre ratio tracker" mais bof).

    Citation Envoyé par Uln7683 Voir le message
    Pourriez-vous le faire et ensuite m'expliquer svp ?
    Non. Sans parler du fait que ce serait injuste vis à vis des autres élèves qui, eux, travaillent honnêtement, ton prof te donnera le corrigé et te l'expliquera mieux que nous ne saurions le faire. Et accessoirement il aura un vrai aperçu de ton niveau en C plutôt que lui donner un aperçu du notre (ce dont il n'a bien entendu que faire) si tu lui donnais notre code sous ta signature.
    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

  16. #16
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    février 2008
    Messages
    2 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : février 2008
    Messages : 2 166
    Points : 4 264
    Points
    4 264
    Billets dans le blog
    4
    Par défaut
    Bon, histoire de clore le sujet et même si j'ai bien conscience que ce n'est pas t'aider de le faire, voila un code exemple qui ne colle pas parfaitement à l'énoncé.
    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
    #include<stdlib.h>
    #include<stdio.h>
     
    int main(int argc, char* argv[]) {
      char chaine [101];
      chaine [100] = '\0';
     
      printf ("Entrez 100 caracteres : ");
      scanf ("%100c", chaine);
     
      printf ("La chaine est : %s\n", chaine);
     
      int compteur = 1; // Le compteur qui sera affiché devant chaque mot
      int index = 0;    // la position du pcaractère actuellement pointé
      int position = 0; // Sauvegarde de la position du 1er caractère du prochain mot
      int i;            // variable qui permet de remplir la chaîne mot [] avec le bon nbre de caractères
      char mot [100];   // mot actuellement affiché en face du compteur
     
      while (chaine [index] !='\0') { // Tant qu'on n'est pas arrivé à la fin du texte
        // Boucle d'extraction du prochain mot
        while (chaine [index]!= ' ' && index < 100)
          index++;
     
        // Vérification si on est pas à la fin du texte. Il n'y a pas de nouveau mot
        // à afficher. On sort du while (); principal.
        if (index-position==0) break;
     
        // À partir d'ici index pointe sur le dernier caractère du mot extrait.
        // La boucle suivante recopie les caractères à partir de la position "position"
        // jusqu'à "index".
        for (i=0; position < index; position++, i++)
          mot [i] = chaine [position];
     
        // "mot" contient le mot à afficher. Ajout du terminateur '\0' pour rendre
        // cette chaîne conforme et utilisable avec printf ();
        mot [i++] = '\0';
     
        // Affichage du compteur et du mot
        printf ("%d\t%s\n", compteur, mot);
     
        // Positionnement de l'index sur le caractère suivant. position est aussi
        // initialisé à la valeur d'index. (position de départ du nouveau mot)
        index++; position = index;
     
        // Le compteur est incrémenté
        compteur++;
      }
     
      return EXIT_SUCCESS;
    }
    ~/Projects/test/src$ ./test
    Entrez 100 caracteres : The book assumes some familiarity with basic programming concepts like variables, assignments statements, loops, and functions.
    La chaine est : The book assumes some familiarity with basic programming concepts like variables, assignments statem
    1 The
    2 book
    3 assumes
    4 some
    5 familiarity
    6 with
    7 basic
    8 programming
    9 concepts
    10 like
    11 variables,
    12 assignments
    13 statem
    Utilisation de Glade avec Gtk+ - N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk

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

Discussions similaires

  1. Ecrire un programme Pascal sous Delphi
    Par moh-23 dans le forum Débuter
    Réponses: 3
    Dernier message: 15/10/2007, 23h59
  2. Ecrire par programmation sur une feuille protégé !
    Par Freiya dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2007, 22h54
  3. Ecrire des programmes compatibles DEP
    Par hardballer dans le forum Windows
    Réponses: 5
    Dernier message: 03/04/2007, 16h02
  4. Réponses: 13
    Dernier message: 11/01/2007, 15h13
  5. Palm 5: Ecrire un programme pour Clié
    Par clovis dans le forum C++Builder
    Réponses: 2
    Dernier message: 30/11/2006, 13h54

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