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 :

Changer des lettres dans des phrases [Débutant(e)]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 28
    Par défaut Changer des lettres dans des phrases
    Salut à tous,
    Je suis débutant en C et j'apprend doucement.
    J'aimerais savoir comment faire pour changer les lettres d'une phrase.

    ex: Un homme écrit "SEFFO QORFD" en entrée.
    Il s'aperçois qu'il s'est trompé de touches en tapant son message.
    Il va alors rentrer les lettres erronées: "QSF" puis ensuite taper les bonnes lettres "WHL". L'application devra automatiquement traduire la phrase (ici cela donne: "HELLO WORLD"

    Mon professeur d'info m'a aidé en me denant la base du script. Cependant je ne trouve pas comment faire ...

    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
    #include <stdio.h>
     
    char* texte_original(char *clavier_homme, char *clavier_reel, char *texte)
    {
      //LE CODE SERAIT A DEVELOPPER ICI JE PENSE.
    }
     
    int main(void)
    {
      int i;
      int N;
      char c;
      char clavier_homme[30];
      char clavier_reel[30];
      char ligne[81];
      scanf("%s\n",clavier_homme);
      scanf("%s\n",clavier_reel);
      scanf("%d\n", &N); 
      while (N--) {
        i=0;
        while ((c=getchar()) != '\n') ligne[i++] = c;
        ligne[i]='\0';
        printf("%s\n",texte_original(clavier_homme, clavier_reel, ligne));
      }
      return 0;
    }
    Merci d'avance à tous ceux qui m'aideront

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    C'est ton prof qui a écrit ça? Ce n'est pas une très bonne idée de terminer les chaines de format passées à scanf avec un caractère de fin de ligne. Par ailleurs, il n'est pas possible de saisir la chaine "HELLO WORLD" avec scanf("%s",...). En effet, avec le spécificateur de format "%s", la saisie s'arrêtera à la rencontre du premier caractère d'espacement (fin de ligne, espace, tabulation, etc.). Il est possible de saisir une ligne de manière sécurisée avec scanf(), mais ce n'est pas trivial. En général, les experts déconseillent l'utilisation de scanf() pour toute saisie de chaines entrées par l'utilisateur (et pour tout saisie utilisateur formatée en général). Ils recommandent l'usage de fgets() (éventuellement couplé à la fonction fclean() dont tu trouveras le code dans les archives du forum).

    Pour en revenir à ta question sur la manière de modifier une chaine de caractères contenue dans un tableau de caractères. Il suffit de parcourir le tableau à l'aide d'une boucle et de tester chaque caractère un à un. Une fois qu'on a trouvé la position du caractère à remplacer, on le remplace par simple affectation. La bibliothèque standard du C fournit une fonction toute prête qui te permet de rechercher un caractère dans un tableau de caractères. Il s'agit de strchr(), déclarée dans le fichier d'en-tête standard string.h.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 28
    Par défaut
    Merci pour cette réponse mais je pense qu'il faut que je prenne le modèle qui m'a été imposé... Quelqu'un peut me donner un exemple?

    Cependant, je suis intéressé par votre solution et j'aimerais avoir un exemple si cela ne vous dérenge pas?

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Demonyak Voir le message
    Cependant, je suis intéressé par votre solution et j'aimerais avoir un exemple si cela ne vous dérenge pas?
    Ben non. On t'a dit de chercher dans le forum. C'est trop fatiguant ? Il faut qu'on fasse tout à ta place ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 28
    Par défaut
    Un simple "désolé mais ça me dérange" aurait suffit... pas besoin d'être si agressif

    Sinon quelles solutions seraient possibles pour résoudre l'exo à la façon de mon prof ? Je cherche, mais lorsque l'on débute, ce n'est pas très évident de s'y repérer...

  6. #6
    Membre expérimenté
    Profil pro
    Dev
    Inscrit en
    Décembre 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Décembre 2007
    Messages : 191
    Par défaut
    Apparemment tu débutes en programmation tout court et non juste en C alors .
    Cependant, je suis intéressé par votre solution et j'aimerais avoir un exemple si cela ne vous dérenge pas?
    Tu ne trouveras pas beaucoup de personnes ici qui te donneront du code tout fait.

    si c'est pour comment utiliser certaines fonctions (comme strchr()) il y a la FAQ C (le lien est plus haut), que tu peux parcourir (la section "chaines de caracteres" devrait t'intéresser).

    Pour le principe de la solution (enfin plutot d'une solution possible), c'est-à-dire faire une boucle : pour chaque lettre rechercher où se trouve t-elle dans le texte et la remplacer, ça c'est à toi de comprendre comment marche le C (et la prog en général). Tu dois connaitre : les tableaux, les structures comme les boucles et les conditions....

    Connais-tu tout cela deja ou pas ?

Discussions similaires

  1. Conversion des lettres par des lettres avec accent
    Par SamusStrife dans le forum Général Java
    Réponses: 6
    Dernier message: 28/10/2014, 15h44
  2. [XL-2007] Extration des chiffres dans des lettres
    Par jameslaguerre dans le forum Excel
    Réponses: 5
    Dernier message: 29/07/2013, 17h07
  3. Comment ajouter des séries dans des graphes sur des feuilles variables
    Par Molomarcopolo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2012, 16h26
  4. probleme avec des lettres dans des conditions
    Par nefas dans le forum C++
    Réponses: 7
    Dernier message: 01/08/2008, 14h25
  5. Affichage des chiffres dans une phrases arabe
    Par omda dans le forum Oracle
    Réponses: 4
    Dernier message: 30/09/2005, 13h36

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