Voici un code en c++ svp vérifiez pour quoi il ne marche pas
mustang ouss
Messages postés
6
Statut
Membre
-
ReganDryke Messages postés 13 Statut Membre -
ReganDryke Messages postés 13 Statut Membre -
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 svp aidez moi
voici mon code
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 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:
- Générateur code transcash
- Code ascii - Guide
- Code puk bloqué - Guide
- Generateur mot de passe - Télécharger - Sécurité
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
1 réponse
Plusieurs choses ne vont pas :
- fonction devrait retourner void (ou un double)
- la variable n ne sert à rien
- il faut éviter d'utiliser "system" qui engendre du code spécifique à un OS (par exemple windows ou linux). Dans ton cas "getchar();" peut faire l'affaire.
- il manque l'entier retourner par main (0 si tout va bien par convention)
- essaye de soigner l'indentation et d'aérer le code
Voici à quoi ça pourrait ressembler :
... ce qui donne :
Bonne chance
- fonction devrait retourner void (ou un double)
- la variable n ne sert à rien
- il faut éviter d'utiliser "system" qui engendre du code spécifique à un OS (par exemple windows ou linux). Dans ton cas "getchar();" peut faire l'affaire.
- il manque l'entier retourner par main (0 si tout va bien par convention)
- essaye de soigner l'indentation et d'aérer le code
Voici à quoi ça pourrait ressembler :
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
// type de retour invalide
void fonction(double M, double a, double b, double G) {
float T[27], t[27];
//int n; // pas utilisé ?
T[0] = 1;
t[0] = 0;
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; // pas utilisé ?
break;
}
t[j + 1] = t[j] + T[i];
cout << setprecision (5)
<< "t[" << j + 1 << "] = "
<< t[j + 1] << ' '
<< "T[" << i << "] = "
<< 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;
cout << "fonction(" << M << ", " << a << ", "
<< b << ", " << G << ")" << endl;
fonction(M, a, b, G);
return 0; // oubli
}
... ce qui donne :
donnez M, a, b, G: 1 2 3 4 fonction(1, 2, 3, 4) t[1] = 1 T[0] = 1 t[1] = 0.40825 T[1] = 0.40825 t[1] = 0.52465 T[2] = 0.52465 t[1] = 0.49395 T[3] = 0.49395 t[1] = 0.50152 T[4] = 0.50152 t[1] = 0.49962 T[5] = 0.49962 t[1] = 0.50009 T[6] = 0.50009 t[1] = 0.49998 T[7] = 0.49998 t[1] = 0.50001 T[8] = 0.50001 t[1] = 0.5 T[9] = 0.5 t[1] = 0.5 T[10] = 0.5 t[1] = 0.5 T[11] = 0.5
Bonne chance
et là c 'est pas le cas
float fonction(double M, double a, double b, double G) { float T[27], t[27]; //int n; // pas utilisé ? T[0] = 1; t[0] = 0; 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; // pas utilisé ? break; } t[j + 1] = t[j] + T[i]; j++; } // il t'affiche T[1] cout << setprecision (5) << "T[1] = " << T[1] << endl; // system("pause"); return T[1]; // Le return te permet de recuperer T[1] a la sortie de la // fonction sous la forme float variable = fonction(M,a,b,G) }Se qui donne en partant du code ci dessus :