Besoin d'aide en programmation C++ [Résolu]

Signaler
Messages postés
8
Date d'inscription
mercredi 12 novembre 2008
Statut
Membre
Dernière intervention
16 octobre 2011
-
Messages postés
8
Date d'inscription
mercredi 12 novembre 2008
Statut
Membre
Dernière intervention
16 octobre 2011
-
Bonjour tous le monde;


j'essaye de faire un programme mathématique en langage C++ qui sert à
résoudre les équations différentielles , mais j'ai rencontré une erreur
à la fin de programme que je n'arrive pas à la comprendre :

Le programme est le suivant:

#include

#include<conio.h>

#include<math.h>

#include<stdlib.h>

#include<excpt.h>

double f(double x,double y)

{return y-(x*x)+1;}

void rk2(double a, double b,double h, double y0, double rk2out[])

{

int N=(int)abs((b-a)/h);

double y=y0;

double x=a;

double k1;

for(int i=0;i<=N;i++)

{rk2out[i]=y;

k1=h*f(x,y);

y=y+h*f(x+(h/2.0),y+(k1/2.0));

x=x+h;

}

}

int main()

{

double a=0.0;

double b=3.0;

double h=0.05;

double y0=0.5;

int N =(int)abs((b-a)/h);
double rk2out[N];


rk2(a,b,h,y0,rk2out);

return 0;}


sur la ligne gras et en rouge l'erreur est :

" constant expression required in function main() "


Merci d'avance

5 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
autre habituelle erreur:
quand on crée un tableau de N éléments, on parcourt de 0 à N-1
et non pas: for(int i=0;i<=N;i++)

ciao...
BruNews, MVP VC++
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut
On ne peux pas définir un tableau statique avec une dimension variable.
Il faut donc utiliser l'allocation dynamique:
double *rk2out=new  double[N];

Et ne pas oublier de supprimer la mémoire quand tu n'en a plus besoin:
delete []rk2out;
A+

____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
Messages postés
8
Date d'inscription
mercredi 12 novembre 2008
Statut
Membre
Dernière intervention
16 octobre 2011

Après correction et utiliser : double *rk2out=new  double[N];

Je n'ai pas d'erreur mais après exécution , j'ai un message d'alerte:

" General Protection Exception
0x2507:0x0335
RK2(4) 0x2507:0x0335 Processor fault

 
Messages postés
8
Date d'inscription
mercredi 12 novembre 2008
Statut
Membre
Dernière intervention
16 octobre 2011

Mais tjrs je n'arrive pas à trouver une solution à l'équation
y? = y- t² +1

y(0)=0.5 ; h=0.05

par la méthode RK2


la formule RK2 te dit : y(t+h)=y(t)+h·f( t+h/2 , y(t)+h·f(t,y)/2 )
Messages postés
8
Date d'inscription
mercredi 12 novembre 2008
Statut
Membre
Dernière intervention
16 octobre 2011

SVP ; aidez moi à corriger ce programme ;j'avais essayé avec

double *rk2out=new double[N];


mais pas moyen,( je suis encore débutant en ce domaine là ;même pas un mois de connaissance)


Merci d'avance