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 C qui affiche les caractères saisis par l'utilisateur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Stagiaire OFPPT
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Stagiaire OFPPT

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Par défaut Programme C qui affiche les caractères saisis par l'utilisateur
    Bonjour tout le monde je souhaite que vous allez bien . J'ai un problème avec un programme que je n'arrive pas à commencé.
    En réalité cette question m'a été posé en Algorithmique, et plus que ça il ne faut pas inclure des Tableaux, il faut juste travailler avec les notions de base hhhhhhh .
    Voici L'exercice :

    Écrire un algorithme qui lit les caractères saisies par l’utilisateur. A la fin ce programme nous
    affichera la phrase saisie.
    La saisie des caractères s’arrête lorsqu’on tape point « . ».
    Si l’utilisateur veut insérer un espace il lui suffit de tapez sur 0.
    Par exemple si l’utilisateur tape successivement les caractères « b » , « o », « n », « j », « o », « u », « r » , « t », « o », « u », « s », « . » , il nous affichera
    la chaîne « bonjourtous ».
    Mais si il tape « b » , « o », « n », « j », « o », « u », « r » , « 0 », « t », « o », « u », « s », « . » , le programme affichera « bonjour tous ».

    Voici se qu'ils ont fait comme réponse :

    Solutions
    Le programme est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Variables caractere , phrase : Chaînes
    DEBUT
        phrase <- « »
        REPETER
        Ecrire « Entrez une caractère : »
        Lire caractère
        SI caractere = « 0 » ALORS
            caractere <- « »
        FIN SI
        phrase <- phrase + caractere
        JUSQU A caractere = « . »
        Ecrire « La phrase résultante est : » , phrase
    FIN
    ==>> S'il vous plait aidez-moi pour pouvoir le traduire en C (sans utiliser des tableaux seulement les notions de base si c'est possible), et merci d'avance .

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 771
    Par défaut
    Une liste chainée, même si ekieki a raison

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct elt {
        char c;
        struct elt* next;
    } Elt;
    Ensuite:
    • Soit insertion à la fin avec 2 pointeurs (1 au début et 1 à la fin)
    • Soit insertion devant, mais écriture à l'envers

  3. #3
    Membre du Club
    Homme Profil pro
    Stagiaire OFPPT
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Stagiaire OFPPT

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Par défaut
    Merci Pour Ton Effort Mon ami , mais pour être franc avec toi je n'est pas étudier les pointeurs . Malheureusement J'ai Arrivé Jusqu'a Les Fonctions. Alors Même Si Tu Me Donne La Réponse Compléte De Cet Exercice, J'aurai Des Difficulté A Le Comprende .

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    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 493
    Billets dans le blog
    1
    Par défaut
    Sans tableau ni liste chainée ni pointeurs, il n'y a mon avis pas de solution. En effet, il n'y n'est pas possible d'agréger des données en utilisant des "notions de base" (d'ailleurs, qu'est ce que les "notions de base" excluent ?).

    A mon humble avis, le plus simple est d'utiliser un tableau assez grand pour que sa taille soit suffisamment grande pour récupérer la majorité des messages entrés par les utilisateurs. Bien sûr, avec une taille fixe, on est jamais à l'abri qu'un jour un utilisateur rentre un message trop long mais que tu débutes, cela sera largement acceptable. Ensuite, il faut faire une boucle while() jusqu'à recevoir '.'. Pour lire le clavier caractère par caractère, tu as la fonction getchar(). Tu peux accéder à chaque case du tableau pour y mettre tes caractères avec une variable que tu incrémentes quand tu lis un caractère valide (cad différent de '\0' == 0, ce qu'on détecte avec un if()).

    Enfin, printf() et puts() peuvent te permettre d'afficher des messages pour l'utilisateur.

    Bon courage.

  5. #5
    Membre du Club
    Homme Profil pro
    Stagiaire OFPPT
    Inscrit en
    Janvier 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Stagiaire OFPPT

    Informations forums :
    Inscription : Janvier 2014
    Messages : 7
    Par défaut
    Salut Bktero J'ai Essayer De Répondre à cet Exercice en utilisant un tableau des caractères, Mais J'ai un petit soucie en ce qui concerne la fonction strcpy Un Msg D'erreur Est afficher au-dessous du Code lvoila le Code :

    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>
    #include <stdlib.h>
    #include <string.h>
     main ( )
     {
     	char T[101] ; int i ; 
     	  do 
     	     {
     	     	for (i=0 ; i<=99 ; i++)
     	     	 {
     	     	 	printf (" Veuillez Entrer Le %i Caractere : ",i) ;
     	     	 	getchar ( ) ;
     	     	 	scanf ("%c",&T[i]) ;
     	     	 	  if ( T[i]=='0' )
     	     	 	   	strcpy(T[i]," ") ;	 	     	 	   
     	     	 }
     	     }
     	   while ( T[i] != '.' ) ;
     	      printf (" Votre Phrase Est : \n ") ;
     	        for (i=0 ; i<=99 ; i++)
     	         	printf (" %c ",T[i]) ; 
      system (" pause ");  
     }
    Et Voilà L'erreur :
    [Error] invalid conversion from 'char' to 'char*' [-fpermissive] la ligne : 15
    Merci Pour ton intérêt et ton aide

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    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 493
    Billets dans le blog
    1
    Par défaut
    T[i] est un char, strcpy() attend une chaine... Le compilateur n'est pas d'accord. D'ailleurs, pourquoi utiliser une fonction qui copie des chaines alors que tu souhaites juste faire une affectation de caractère ?

    De manière globale, il y a énormément de problèmes de logique dans ce code :
    - getchar() puis scanf() ?
    - Un do/while avec un for un l'intérieur ?
    - afficher une chaine de caractères avec une boucle ??

    D'un point de vue syntaxe, il manque un "int" devant main().

    Enfin, -fpermissive il me semble que c'est un warning du C++. Es-tu sûr de bien compiler en mode C ?

Discussions similaires

  1. [Turbo Pascal] Fonction qui remplace les caractères entrés par des étoiles (*)
    Par Dr.Mimo dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/03/2012, 21h51
  2. Réponses: 0
    Dernier message: 30/03/2010, 20h07
  3. programme c qui affiche les dix nombre suivants
    Par psychologue dans le forum Débuter
    Réponses: 5
    Dernier message: 31/01/2010, 16h45
  4. Réponses: 2
    Dernier message: 07/12/2009, 13h34
  5. InputQuery n'affichant pas les caractères saisies
    Par netah25 dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2007, 11h03

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