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 :

Problème getchar débutant :? [Débutant(e)]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Dev/Adm Sys/Réseau
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Dev/Adm Sys/Réseau

    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Par défaut Problème getchar débutant :?
    Bonjour,

    Depuis (très) peu j'apprend le C avec un livre.

    Histoire de mettre un peu en application le peu que j'ai appris j'ai décidé de creer un programme qui convertir une température Fahrenheit en Celsius.

    Je voudrais que le programme demande "Qu'elle température en Fahrenheit on souhaite convertir en Celsius" puis grâce à getchar récupérer le nombre tapé mais j'ai un problème; quand le programme fait le calcul pour transformé les Fahrenheit en Celsius, il utilise la valeur ASCII du nombre entrée...

    Mon autre problème c'est que getchar ne récupére que le premier caractère donc on ne peut utiliser que les chiffres de 0 à 9 :/

    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>
    #include <windows.h>
    #include "econio.h"
     
    main()
    {
    	int fahr;
    	float celsius;
     
    	printf("Entrer une temp\x82rature en Fahrenheit que vous voulez convertir en celsius\n\n");
     
    	fahr=getchar();
     
    	//Formule de conversion des Fahrenheit en Celsius
    	celsius=(5.0/9.0)*(fahr-32.0);
     
    	printf("%c degr\x82(s) Fahrenheit est \x82gale \x85 %3.1f degr\x82(s) Celsius\n\n", fahr, celsius);
     
    	printf("Appyuer sur une touche pour quitter");
     
    	//Indique une couleur d'écriture noir pour ne pas voir le 
    	//"Appuyer sur une touche pour continuer"
    	textbackground(BLACK);
    	textcolor(BLACK);
    	system("pause");
    }
    Merci de votre aide

  2. #2
    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 scottynou
    Depuis (très) peu j'apprend le C avec un livre.
    Peux-tu citer ce livre, parce que ce que je vois après est horrible...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 266
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Peux-tu citer ce livre, parce que ce que je vois après est horrible...
    Ca ne doit pas venir du livre, mais d'une mauvaise lecture de celui-ci ou une mauvaise application des enseignements donnés par ce livre.

    getchar ne prend qu'un caractère (un char). Tu trouveras ton bonheur auprès de la fonction fgets.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Par défaut
    Bonjour, je me suis permi de remanier le code, tu m'en veux pas j'éspère.

    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
    main()
    {
    	int fahr;
    	float celsius;
     
    	printf("Entrer une temp\x82rature en Fahrenheit que vous voulez convertir en celsius\n\n");
     
    	scanf("%d",&fahr);
     
    	//Formule de conversion des Fahrenheit en Celsius
    	celsius=(5.0/9.0)*(fahr-32.0);
     
    	printf("%d degr\x82(s) Fahrenheit est \x82gale \x85 %3.1f degr\x82(s) Celsius\n\n", fahr, celsius);
     
    	printf("Appyuer sur une touche pour quitter");
     
     
    	getch();
    	printf("\n\n\nfin du programme ...\n");
    	return(0);
    }
    ici il faut demander a l'utilisateur de rentrer un nombre. ce qui est fait avec scanf, %d car la valeur sera rangé à l'adresse fahr ( me demande pas, scanf s'utilise comme ca).
    Apparament tu confond %d et %c:
    %d c'est pur un entier, %c c'est pur un caractère, et %f un flotant.
    Sinon le fait de metre en couleur y a plus besoin !
    et n'oublie pas le return(0); dans ton main.

    Si tu veux t'entrainer, code une calculatrice, un programme qui calcul le factoriel d'un nombre, a puissence b, etc ...

  5. #5
    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 jack_x4
    Bonjour, je me suis permi de remanier le code, tu m'en veux pas j'éspère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    main()
    {
    	int fahr;
    	float celsius;
     
    	printf("Entrer une temp\x82rature en Fahrenheit que vous voulez convertir en celsius\n\n");
     
    	scanf("%d",&fahr);
    Savoir utiliser correctement scanf(), c'est un métier...

    http://xrenault.developpez.com/tutoriels/c/scanf/

    Sinon, on préfère une solution à base de fgets() + strtol(), c'est nettement plus facile à mettre en oeuvre correctement.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Par défaut
    heuuuu ! Je dois le prendre comment ??? J'ai aussi fais une erreur ?

  7. #7
    Membre averti
    Homme Profil pro
    Dev/Adm Sys/Réseau
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Dev/Adm Sys/Réseau

    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Par défaut
    Bonjour, je me suis permi de remanier le code, tu m'en veux pas j'éspère.
    Du tout au contraire

    En faites je penser pouvoir faire celà avec getchar alors qu'il fallait utiliser scanf

    Merci pour vos rectifications

  8. #8
    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 jack_x4
    heuuuu ! Je dois le prendre comment ??? J'ai aussi fais une erreur ?
    Disons qu'il manque les trois-quart du code pour faire une saisie claire avec scanf()...

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

Discussions similaires

  1. requete, problème de débutant
    Par focus dans le forum Access
    Réponses: 4
    Dernier message: 16/02/2006, 05h51
  2. Problème de débutant dans une requête
    Par decour dans le forum Access
    Réponses: 7
    Dernier message: 14/10/2005, 14h17
  3. [C#][service windows] problème de débutant avec 1 timer
    Par Nycos62 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/10/2005, 11h22
  4. Réponses: 3
    Dernier message: 24/09/2005, 09h34
  5. [DB2] problèmes de débutant
    Par rémi_tounul dans le forum DB2
    Réponses: 4
    Dernier message: 21/04/2005, 17h08

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