Probleme langage c
Camille
-
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
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:
Quand je compile le résulat est toujours 0
avez vous des suggestions ? Merci d'avance :)
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 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, pourquoi ne pas faire printf de chiffre? -
Bonjour,
La ligne 10 déclare une fonctiongetchar()
, pourquoi? C'est dans#include <stdio.h>
qu'est déjà déclaré cette fonction.
Ligne 14, on utilisegetchar()
pour lire un entier, mais on parle de chiffre etgetchar()
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 fonctiongetchar()
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é. -
Salut Camille,
La bibliothèque standard du C comprend la fonctionlog()
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 sertgetchar()
que tu utilises à de nombreuses reprises et de différentes façons très déconcertantes, comme le dit Dalfab. la fonctiongetchar()
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 surscanf()
oufgets()
etprintf()
, 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