Voici un code en c++ svp vérifiez pour quoi il ne marche pas
mustang ouss
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
ReganDryke Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
ReganDryke Messages postés 13 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 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é
- Code activation windows 10 - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - 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
Se qui donne en partant du code ci dessus :