Application électrique

FSpring Messages postés 5 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 23 octobre 2009 - 21 févr. 2008 à 17:08
FSpring Messages postés 5 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 23 octobre 2009 - 24 févr. 2008 à 23:43
Bonjour,

Voici un listing d'un simple programme qui crée une matrice de potentiels électriques (de 100 à 0). Sur mon PC, ce listing m'affiche 39   erreurs lorsque je génère la solution. À votre avis, qu'est-ce qui cloche là-dans ?!

#include

#include

<string>#include

<cstring>#include

<cmath>using

namespace std;

int nx = 100;

int ny = 150;

float Tolerance = 0.005;

int NbMaxItera = 10000;

float V[nx][ny];

float NouvPot;

bool Converge;

int NbItera;

// Affichage //cout << setiosflags(ios::fixed) << setprecision(3);

// Paramètres //

for (
int i = 0; i < nx - 1; i++)

for (int j 0; j < ny; j++)V[i][j] 0.0;

for (int j 0; j < ny; j++)V[nx-1][j] 100.0;

NbItera = 0;

// Boucles d'itérations //

do{

NbItera++;

Converge =

true;

for (
int i = 1; i < nx-1; i++)

for (
int j = 1; j < ny-1; j++){

NouvPot = ((2 * V[i-1][j] + V[i+1][j] + V[i][j+1] + V[i][j-1]) / 4.0);

if (fabs(NouvPot - V[i][j]) > Tolerance) Converge =
false;V[i][j] = NouvPot;

}

for (
int j = 1; j < ny - 1; j++){

NouvPot = ((2 * V[1] [j] + V[0] [j-1] + V[0] [j+1]) / 4.0);

if (fabs(NouvPot - V[0] [j]) > Tolerance) Converge =

false;V[i][j] = NouvPot;

}

while (!Converge && (NbItera < NbMaxItera));cout <<

"Nombre d'intérations = " << NbItera << endl;cout << endl;

for (
int j = 0; j < ny; j++){

for (
int i<0; i < nx; i++) cout << setw(7) << V[i] [j];

cout << endl;

}

getch();

}

}

Merci ,

Frank

5 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
21 févr. 2008 à 18:28
ton code n'est pas dans une fonction.
0
FSpring Messages postés 5 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 23 octobre 2009
21 févr. 2008 à 18:55
Bonjour Juju12
Vous dites que mon code n'est pas dans une fonction ? Que voulez-vous dire par là?
(Désolé si je veux plus de détails, disons que je n'ai pas une âme de programmeur :p)

Autrement dit, si vous étiez à ma place, que feriez-vous concrètement pour que mon programme fonctionne ?
J'incluerais mes varaibles de départ dans un autre void () ????

Aidez-moi, si vous le voulez bien...

Frank
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
21 févr. 2008 à 21:56
#include

#include <string>

#include <cstring>

#include <cmath>

usingnamespace std;

int main()

{

int nx = 100;

int ny = 150;

float Tolerance = 0.005;

int NbMaxItera = 10000;

float V[nx][ny];

float NouvPot;

bool Converge;

int NbItera;

// Affichage //
cout << setiosflags(ios::fixed) << setprecision(3);

// Paramètres //
for (int i = 0; i < nx - 1; i++)

{

for (int j = 0; j < ny; j++)

{

V[i][j] = 0.0;

for (int j = 0; j < ny; j++)

{

V[nx-1][j] = 100.0;

NbItera = 0;

// Boucles d'itérations //
do
{

NbItera++;

Converge = true;

for (int i = 1; i < nx-1; i++)

{

for (int j = 1; j < ny-1; j++)

{

NouvPot = ((2 * V[i-1][j] + V[i+1][j] + V[i][j+1] + V[i][j-1]) / 4.0);

if (fabs(NouvPot - V[i][j]) > Tolerance) Converge = false;

V[i][j] = NouvPot;

}

for (int j = 1; j < ny - 1; j++)

{

NouvPot = ((2 * V[1] [j] + V[0] [j-1] + V[0] [j+1]) / 4.0);

if (fabs(NouvPot - V[0] [j]) > Tolerance)

Converge = false;

V[i][j] = NouvPot;

}

while (!Converge && (NbItera < NbMaxItera));

{

cout << "Nombre d'intérations = " << NbItera << endl;

cout << endl;

for (int j = 0; j < ny; j++)

{

for (int i<0; i < nx; i++)

{

cout << setw(7) << V[i] [j];

cout << endl;

}

getch();

}

}

}

}

}

}

}

return FALSE;

}




_______________________________________________________________________


VB.NET
is good ...
VB6
is better
0
FSpring Messages postés 5 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 23 octobre 2009
22 févr. 2008 à 17:53
Ce programme ne marche pas ghuysmans99 . Il m'affiche 16 messages d'erreurs me disant, entre autres, que le 'float  V[nx][ny]' est une 'expected constant expression'. Que 'setiosflags' identifier not found. Erreurs de syntaxe à la ligne 81, 83 et que 'setw' et 'getch' identifier not found. 

Avez-vous essayé ce programme sur votre visual c++ ?
Si oui, ça vous affiche bien une matrice numérique partant de 0 à 100 ??

Disons que là je suis dépassé......

Frank
0

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

Posez votre question
FSpring Messages postés 5 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 23 octobre 2009
24 févr. 2008 à 23:43
Finalement, j'ai pu régler mon problème seul. Le programme ne démarrait pas car dans les "include" du début, il manquait

Merci quand même ...

Frank
0
Rejoignez-nous