Erreur dans un petit programme mathematique

Signaler
Messages postés
6
Date d'inscription
jeudi 21 décembre 2000
Statut
Membre
Dernière intervention
8 septembre 2010
-
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
-
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

Messages postés
6
Date d'inscription
jeudi 21 décembre 2000
Statut
Membre
Dernière intervention
8 septembre 2010

#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;
}
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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++ (@++)<!--
Messages postés
6
Date d'inscription
jeudi 21 décembre 2000
Statut
Membre
Dernière intervention
8 septembre 2010

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. 
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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++ (@++)<!--