Probleme langage c

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

  1. 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é.
    1. Contributeur
      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
      1. Contributeur
        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é.
      2. Contributeur
        le français ?

        :-P