Voici un code en c++
mustang ouss
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
mustang ouss Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
mustang ouss Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je veux que mon code s'arrête lorsque T[i+1]=T[i] et qu'il me renvoie juste le T[i+1] et là c'est pas ce qu'il fait (quand vous l'exécutez vous allez avoir en dernier des valeurs qui se rapprochent de 0.19 et moi je veux qu'en t[1] j'aurai 0.19 et pas en t[27 svp aidez moi]
voici mon code
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double fonction (double M, double a, double b, double G)
{
float T[27],t[27];
T[0]=1;
t[0]=0;
int n;
for (int i=0;i<27;i++)
{
int j=0;
T[i+1]=sqrt(M/((a+(b*t[j])/2)+(G)*T[i]));
if (T[i]==T[i+1])
{
T[i+1]=T[i];
n=i+1;
break;
}
t[j+1]=t[j]+T[i];
cout<<"t["<<j+1<<"] ="<<setprecision (5) <<t[j+1]<<" "<<"T["<<i<<"] ="<<setprecision (5) <<T[i]<<endl;
j++;
}
system("pause");
}
int main()
{
double M,a,b,G;
cout<<"donnez M,a,b,G:"<<endl;
cin>>M>>a>>b>>G;
fonction (M,a,b,G);
}
merci.
je veux que mon code s'arrête lorsque T[i+1]=T[i] et qu'il me renvoie juste le T[i+1] et là c'est pas ce qu'il fait (quand vous l'exécutez vous allez avoir en dernier des valeurs qui se rapprochent de 0.19 et moi je veux qu'en t[1] j'aurai 0.19 et pas en t[27 svp aidez moi]
voici mon code
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double fonction (double M, double a, double b, double G)
{
float T[27],t[27];
T[0]=1;
t[0]=0;
int n;
for (int i=0;i<27;i++)
{
int j=0;
T[i+1]=sqrt(M/((a+(b*t[j])/2)+(G)*T[i]));
if (T[i]==T[i+1])
{
T[i+1]=T[i];
n=i+1;
break;
}
t[j+1]=t[j]+T[i];
cout<<"t["<<j+1<<"] ="<<setprecision (5) <<t[j+1]<<" "<<"T["<<i<<"] ="<<setprecision (5) <<T[i]<<endl;
j++;
}
system("pause");
}
int main()
{
double M,a,b,G;
cout<<"donnez M,a,b,G:"<<endl;
cin>>M>>a>>b>>G;
fonction (M,a,b,G);
}
merci.
A voir également:
- Voici un code en c++
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
3 réponses
T[i+1]=T[i];
ne sert à rien, vu que c'est déjà le cas...
j est une variable toujours à 0, pourquoi utiliser j plutôt que 0 (ou j+1 plutôt que 1). le « j++ » de la fin ne sert pas, car au début de boucle, tu as int j = 0 : j est remis à 0... Si ce n'est pas ce que tu veux, déclare ta variable j avant la boucle. Mieux, n'utilise pas j, car alors à tout instant tu aurais j = i... pourquoi utiliser j plutôt que i ?
pour avoir les dernières valeurs au début, il suffit de remplir le tableau t depuis la fin (je ne suis pas sûr de comprendre ce que tu veux faire...).
Au fait, tu vas avoir un problème lorsque i=26 (dernier passage) : i+1 vaudra 27 et t[27] n'est pas alloué (double t[27] alloue un tableau de 27 cases numérotées de 0 à 26...)
ne sert à rien, vu que c'est déjà le cas...
j est une variable toujours à 0, pourquoi utiliser j plutôt que 0 (ou j+1 plutôt que 1). le « j++ » de la fin ne sert pas, car au début de boucle, tu as int j = 0 : j est remis à 0... Si ce n'est pas ce que tu veux, déclare ta variable j avant la boucle. Mieux, n'utilise pas j, car alors à tout instant tu aurais j = i... pourquoi utiliser j plutôt que i ?
pour avoir les dernières valeurs au début, il suffit de remplir le tableau t depuis la fin (je ne suis pas sûr de comprendre ce que tu veux faire...).
Au fait, tu vas avoir un problème lorsque i=26 (dernier passage) : i+1 vaudra 27 et t[27] n'est pas alloué (double t[27] alloue un tableau de 27 cases numérotées de 0 à 26...)
if (T[i]==T[i+1])
Je rajoute en plus que la comparaison de deux float ou double ne peut pas se faire avec ==.
Il faut plutôt s'assurer que la différence entre T[i] et T[i+1] est inférieure à EPSILON (nombre proche de 0) (utilisation de DBL_EPSILON pour les doubles ou FLT_EPSILON pour les float.).
Par ailleurs, pourquoi utiliser des float et des double ? Je te conseille de n'utiliser que des double.
Je rajoute en plus que la comparaison de deux float ou double ne peut pas se faire avec ==.
Il faut plutôt s'assurer que la différence entre T[i] et T[i+1] est inférieure à EPSILON (nombre proche de 0) (utilisation de DBL_EPSILON pour les doubles ou FLT_EPSILON pour les float.).
Par ailleurs, pourquoi utiliser des float et des double ? Je te conseille de n'utiliser que des double.