Erreur "error: conflicting types for" en C.

Résolu/Fermé
Bob4294967296 Messages postés 95 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 7 mars 2016 - 12 oct. 2011 à 20:51
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 12 oct. 2011 à 21:20
Bonjour,

J'ai envie de me faire un programme en C en utilisant des factorielles MAIS y'a une erreur que je n'arrive pas à déceler:
#include <stdio.h>
#include <stdlib.h>


int main()
{
    double proba = factorielle(10.000);
    printf("%lf", proba);
    return EXIT_SUCCESS;
}

double factorielle(double n)
{
    double resultat = 1.000;
    double i;
    for (i = 1.0000; i <= n; i++)
    {
        resultat = resultat * i;
    }
    return resultat;
}


J'ai tout essayé mais rien ne veut marcher ;(

Merci pour votre aide.

3 réponses

carbon6 Messages postés 45 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 9 juillet 2013 41
12 oct. 2011 à 21:10
Bonjour,

Tu dois déclarer ta fonction factorielle avant de l'appeler.

cdt.
5
Bob4294967296 Messages postés 95 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 7 mars 2016 25
12 oct. 2011 à 21:15
Ah oui, c'est vrai!!
Punaise, j'ai totalement oublié :)

Merci bien. Problème résolu.
0
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
Modifié par KX le 12/10/2011 à 21:18
Je pense que i++ ne marche pas avec des double. Essaye i+=1.

Remarque : tu n'as pas besoin de mettre quinze 0, le fait d'indiquer que le type est un double est suffisant.
De plus, même si avec des doubles tu augmentes l'amplitude de tes valeurs, tu ne pourras de toute façon pas atteindre de très grandes valeurs de n (170 maximum)La confiance n'exclut pas le contrôle
0
Bob4294967296 Messages postés 95 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 7 mars 2016 25
12 oct. 2011 à 21:12
Merci pour ta réponse mais même en remplaçant i++ par i+=1, rien n'y fait... J'ai la même erreur...
Sinon pour le coup des zéros inutiles, merci du tuyau. Je ferai attention la prochaine fois.
0
Bob4294967296 Messages postés 95 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 7 mars 2016 25
12 oct. 2011 à 21:14
En plus, le pire, c'est quand je change le type de ma fonction factorielle en int, ça marche bien (sauf que dès que n>15, il affiche une valeur négative erronée...)
0
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
12 oct. 2011 à 21:20
C'est normal, il y a des débordements de mémoire quand tu dépasses 2^31.
La factorielle montre très rapidement en valeur, et en trouver de très grandes valeurs demande quelques concessions sur leur précisions.
0