Erreur dans un petit programme mathematique

Kcuftesends Messages postés 6 Date d'inscription jeudi 21 décembre 2000 Statut Membre Dernière intervention 8 septembre 2010 - 16 oct. 2008 à 15:26
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 16 oct. 2008 à 23:17
bonjour je suis en train de créer un programme qui permet de determiner si un nombre est triangulaire c'est à dire qu'il peut etre egal a la somme des entiers positifs consecutif ex: 3=0+1+2 6=0+1+2+3






j'ai effectué ce code mais il ne fonctionne pas. est ce que vous pouvez m'aider à trouver ce probleme. merci.










#include
using namespace std;

bool est_triangulaire (int valeur)
{
int inc(0); bool trian(false);
for (int i(1); i>(10*valeur); i++)
{
inc=inc+i;
if (inc==valeur) {trian==true; break;}
else trian=false;
}
return trian;
}

int main ()
{
int nb; bool A;
cout << "entrez un nombre" << endl;
cin >> nb;
A=est_triangulaire(nb);
if (A==true) cout << " votre nombre est un nombre triangulaire" << endl;
else cout << "votre nombre n'est pas triangulaire" << endl;
system("pause");
return 0;
}

4 réponses

Kcuftesends Messages postés 6 Date d'inscription jeudi 21 décembre 2000 Statut Membre Dernière intervention 8 septembre 2010
16 oct. 2008 à 15:26
#include
using namespace std;

bool est_triangulaire (int valeur)
{
int inc(0); bool trian(false);
for (int i(1); i>(10*valeur); i++)
{
inc=inc+i;
if (inc==valeur) {trian==true; break;}
else trian=false;
}
return trian;
}

int main ()
{
int nb; bool A;
cout << "entrez un nombre" << endl;
cin >> nb;
A=est_triangulaire(nb);
if (A==true) cout << " votre nombre est un nombre triangulaire" << endl;
else cout << "votre nombre n'est pas triangulaire" << endl;
system("pause");
return 0;
}
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
16 oct. 2008 à 22:51
Quelque chose comme ça ?

bool est_triangulaire (int i)
{
    int somme = 0;

    for(int j = 1; somme < i; j++) somme += j;
   
    return (somme == i);
}

C++ (@++)<!--
0
Kcuftesends Messages postés 6 Date d'inscription jeudi 21 décembre 2000 Statut Membre Dernière intervention 8 septembre 2010
16 oct. 2008 à 23:09
Merci de m'avoir repondu ,
mais ta fonction ne marche pas car tu retourne directement la valeur de somme, et donc si on reflechi bien la somme renverras toujours 1 donc elle ne sera pas egale a i.
Il faudrait pouvoir rajouter 1 à "somme" jusqu'a temps  qu'elle trouve la valeur de i et donc retourné "true" ou alors elle ne trouve pas la valeur et alors il faut créer un condition pour sortir de la boucle
 pour mon cas j'ai utilisé  " i >(10*valeur) " comme condition. 
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
16 oct. 2008 à 23:17
As tu essayé la fonction ?

printf("%s\n", (est_triangulaire(3) ? "est triangulaire" : "ne l'est pas"));

Affiche bien "est triangulaire"

printf("%s\n", (est_triangulaire(2) ? "est triangulaire" : "ne l'est pas"));

Affiche bien "ne l'est pas"

"car tu retourne directement la valeur de somme"
Curieux, je ne vois nulle part dans la fonction un return somme;

C++ (@++)<!--
0
Rejoignez-nous