Besoin d'aide en programmation C++

Résolu
yassinefugi Messages postés 8 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 16 octobre 2011 - 15 mai 2009 à 13:47
yassinefugi Messages postés 8 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 16 octobre 2011 - 16 mai 2009 à 00:06
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 mai 2009 à 19:34
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++
3
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
15 mai 2009 à 13:59
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
0
yassinefugi Messages postés 8 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 16 octobre 2011
15 mai 2009 à 19:07
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

 
0
yassinefugi Messages postés 8 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 16 octobre 2011
15 mai 2009 à 21:01
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 )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yassinefugi Messages postés 8 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 16 octobre 2011
16 mai 2009 à 00:06
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
0
Rejoignez-nous