Probleme langage c

Fermé
Camille - Modifié le 15 déc. 2018 à 10:46
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 - 18 déc. 2018 à 18:53
bonjour, cela fait depuis hier 16:00 que je suis bloqué sur un exercice,

Ecrire un programme permettant de saisir un
entier au clavier et d’afficher son logarithme
népérien


Voici mon code:


#include <stdio.h>
#include <math.h>
#include <errno.h>

void tp7()

{

    int chiffre;
    int getchar();

    printf("Entrez un nombre");

    chiffre = getchar();

     double logarithme (double getchar(), double base);

    printf ("resultat = %f \n", getchar());

}



Quand je compile le résulat est toujours 0
avez vous des suggestions ? Merci d'avance :)

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

Merci d'y penser dans tes prochains messages.

3 réponses

yg_be Messages postés 22777 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mai 2024 1 481
15 déc. 2018 à 11:33
bonjour, pourquoi ne pas faire printf de chiffre?
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
15 déc. 2018 à 14:45
Bonjour,

La ligne 10 déclare une fonction
getchar()
, pourquoi? C'est dans
#include <stdio.h>
qu'est déjà déclaré cette fonction.
Ligne 14, on utilise
getchar()
pour lire un entier, mais on parle de chiffre et
getchar()
retourne en réalité un caractère!
Ligne 16, c'est la déclaration d'une fonction; Elle n'est ni définie quelque part, ni jamais utilisée et a un premier paramètre d'un type curieux!
Ligne 18, on décide d'afficher comme un flottant, le résultat d'un nouvel appel de la fonction
getchar()
qui retournera un autre caractère.
Il n'y a ici aucun flottant, ni aucun calcul de logarithme népérien, on est très loin de l'énoncé.
0
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
Modifié le 18 déc. 2018 à 15:48
Salut Camille,

La bibliothèque standard du C comprend la fonction
log()
qui permet de calculer le logarithme népérien, accessible par l'entête math.h.

http://www.cplusplus.com/reference/cmath/log/
https://fr.wikibooks.org/wiki/Programmation_C/Math%C3%A9matiques#Logarithmes

Tu as aussi d'autres fonctions logarithmiques et exponentielles accessibles par ce même entête :

http://www.cplusplus.com/reference/cmath/

Visiblement, tu ne comprends pas à quoi sert
getchar()
que tu utilises à de nombreuses reprises et de différentes façons très déconcertantes, comme le dit Dalfab. la fonction
getchar()
ne t'est d'aucune utilité ici, pour faire ce qu'on attend de toi, ou donnera des résultats inattendus, car elle renvoie les caractères sous la forme d'entiers représentant le code ASCII d'un chiffre ou d'une lettre (donc, par exemple, pour une saisie d'un unique caractère '5', tu obtiendrais un char, qui est un type entier, valant 53 qui est le code ASCII de ce caractère).

Ici, tu dois obtenir une saisie d'un entier, qui peut supposer la saisie de plusieurs chiffres. Tu dois donc utiliser d'autres fonctions pour obtenir ta saisie au clavier.

Vois ton cours ou une documentation de référence sur
scanf()
ou
fgets()
et
printf()
, sur la déclaration de variables et l'usage des variables et évite de faire des copier-coller au hasard, cela marche rarement en C :-)

Dal
0
yg_be Messages postés 22777 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mai 2024 1 481
18 déc. 2018 à 17:46
bonjour Dal, je suis à la recherche d'un langage où cela marche bien de copier-coller au hasard, en connais-tu? cela améliorerait bien ma productivité.
0
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
18 déc. 2018 à 18:49
le français ?

:-P
0
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
18 déc. 2018 à 18:53
0