Exercice

melodie15996 Messages postés 8 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
salut svp j'ai besoin d'aide je n'arrive pas a ecrire ce programme la alors on me demande de'écrire un programme qui lit des caractères entrés au clavier (données d'entrée), et cela jusqu'à ce que les trois caractères 'f', 'i' et 'n' - minuscules - ou 'F', 'I' et 'N' - majuscules - aient été saisis successivement. On n'acceptera pas les mélanges de lettres minuscules et majuscules. (Il n'y a pas de données de sortie).

7 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Que n'arrives-tu pas à faire ?
    À écrire l'algorithme ? Ou à le traduire en C ?
    N'hésite pas à montrer ce que tu as commencé à faire pour qu'on puisse t'aider.
    --

    Google is your friend
    0
  2. melodie15996 Messages postés 8 Statut Membre
     
    bin je n'ai pas trop compris ce qu'on me demande de faire
    0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    2 étapes :
    1-Lecture de tout ce que l'utilisateur tape au clavier.

    Sais-tu déjà comment faire pour lire ce que l'utilisateur tape au clavier ?
    Ensuite, il faudra faire une boucle.

    2-Condition de fin.
    Il faut trouver les conditions à mettre dans la boucle pour qu'elle s'arrête.
    0
  4. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Bonjour, il y a de l'idée, mais l'énoncé indique une lecture des caractères un à un. Il faut plutôt utiliser fgetc().

    Ce qui nous donne plutôt un code
    #include<stdio.h> 
    int main() 
    { 
        int nb_caracteres_fin = 0; // cette variable vaut 1 après 'f' ou 'F', 2 après 'i' ou 'I' qui suit un 'f', 3 après 'n' ou 'N' qui suit un 'fi'
    
        printf("introduisez des caracteres");
    
        do
        { 
            char car_lu = fgetc(stdin); 
            // mettre à jour la variable nb_caractere_fin en fonction de car_lu et de nb_caractere_fin
            // ....
        } while ( nb_caractere_fin < 3 );
    
        return 0;
    }
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Juste en remplaçant : int main() par int main(void) et ça sera parfait :-).
      Note : il est possible aussi d'utiliser getchar() au lieu de fgetc(stdin);
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. melodie15996 Messages postés 8 Statut Membre
     
    merci a vous mais je n'ai pas trop compris cette partie char car_lu = fgetc(stdin);
    merci
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Cela permet de mettre les caractères saisis par l'utilisateur dans car_lu.
      0
    2. melodie15996 Messages postés 8 Statut Membre
       
      salut
      j'ai écrit le programme mais lors de la compilation j'ai pas obtenu ce qu'on m'a demande
      0
    3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Je n'arrive pas à voir le programme que tu as écrit sur ton écran ;-).
      0
  7. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Bonjour,

    Le code que j'ai donné en exemple est incomplet, il te faut compléter les lignes manquantes. Tu trouveras ici des explications mais pas une solution toute faite.
    Écris nous le code que tu as fait car comme le dis Fiddy nous ne voyons pas ton écran.
    0
    1. mennani1 Messages postés 11 Statut Membre
       
      bonjour ,
      la résolution de cette question se faite par l'utilisation de quelque fonction des chaine de caractère ,voilla une version avec la fonction getchar() :
      #include<stdio.h>
      #include<stdlib.h>
      #include<string.h>
      #define MAX 100
      
      void lire_chaine(char *ch)
      {
       char c=getchar(); 
       int i=0;
       while(i<MAX-1)
       {
        if(c=='f')
         { 
          ch[i]=c;
          i++;
          c=getchar();
         if(c=='i')
         {
          ch[i]=c;
          i++;
            c=getchar();
         if(c=='n')
             {
               ch[i]=c;
               i++;
           break;
            }
         }
        }
        if(c=='F')
         { 
          ch[i]=c;
          i++;
          c=getchar();
         if(c=='I')
         {
          ch[i]=c;
          i++;
            c=getchar();
         if(c=='N')
             {
               ch[i]=c;
               i++;
           break;
            }
         }
        }
         ch[i]=c;
        c=getchar();
        i++;
       } 
       ch[i]='\0';
      printf("la chaine saisie au clavier est : %s",ch); 
      }
      main()
      {
       char *ch; 
       ch = (char*)malloc(MAX*sizeof(char));
       lire_chaine(ch);   
      }


      EDIT : Ajout des balises de code (la coloration syntaxique).
      Explications disponibles ici : ICI

      Merci d'y penser dans tes prochains messages.
      0
      1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > mennani1 Messages postés 11 Statut Membre
         
        Bonjour,

        Quelques erreurs :
        main() => int main(void)
        Il manque le return 0;
        char c=getchar(); getchar() renvoie un int.
        ch = (char*)malloc(MAX*sizeof(char)); Le cast est superflu.

        Pour les prochaines fois, merci d'utiliser la balise <code c>. Sinon c'est illisible.
        -1
  8. melodie15996 Messages postés 8 Statut Membre
     
    bonjour
    alors voila ce que j'ai fait pour l'instant
    #include<stdio.h>
    int maint ()
    {
    char chaine [n];int j
    
    printf("introduisez des caracteres")
    gets(chaine)
    for(j=0;chaine[j]!=f,i,n,N,F,I;i++)

    bon je ne sais pas comment continuer
    -1