inclure fonction dans main()
:D bonjour tout le monde
j'ai besoin d'aide sur la réalisation d'un code en c le grand probleme c'est que je suis tout nouveau en programmation...
mon fichier est composé de ma fonction main et de"maFonction"
ci-dessous le code :
// Dans mon main
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
void maFonction(double u1, double u0, double u[]);
int main(int argc,char *argv[])
{
double n=10000,t=0.1;//n represente le temps maximal et t le pas de temps
double M=1000; //jai un intervale [0;1] qui est discretisé en M+1 points
for (int k=1 ; k<n ; k++)
{
double nombre=2,h=1/1001,c[999] ;
double L=k*t/h;// L pour dire lambda
c[k]=pow(nombre,L);
double y[999],d[1000],u[999];
for(int m=k ;m<M ; m++)/*calcul de y=U(m,k+1)=A*U(m,k)-U(m,k-1)*/
{
y[m]=d[m]-u[m-1];/*voici le resultat final que je veux evaluer*/
}
}
double u[1000] = {0}, u0 = 0, u1 = 0;
maFonction(u1, u0, u);
// Affichage de ses valeurs pour vérifier
for (int m = 1 ; m < M ; m++)
{
printf("%d\n", u[m-1]);
}
return 0;
} |
// Et ma fonction:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
void maFonction(double u1, double u0, double u[])/*ici je veux calcule u[] qui est un vecteur et que je souhaite utiliser dans y*/
{
// Initialisation
double h=1/1001,t=0.1;
int M=1000;
for(int m=1 ;m<M ;m++)
{
u0=cos(m*h)+sin(m*h);
u1=cos(m*h-1)+sin(m*h+1);
u[m-1]=t*u1+u0; /* On utilise m-1 parce que ma boucle commence
à m = 1. Ainsi u[0] n'est pas ignoré */
}
} |
Mon objectif c'est d'évaluer y[m]=d[m]-u[m-1] (qui est un tableau) or le calcul de d[m](c'est un tableau) est fait dans un autre fichier comment je fait pour qu'a la compilation d[m] soit directement utilisé dans le fichier ci-dessus?8O
excusez moi d'etre long :D
voici le code qui me permet d'evaluer d[m]( pour info d[m] est un vecteur colone c'est le produit d'une matrice tridiagonale avec un vecteur donné)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| void TridiagonalSolve ( const double *b, double *c, double *d, double *u, unsigned int n)
{
const double monbre=2;
double M=1000,t=0.1,h=1/1001;
//soit A une matrice tridiagonale et U un vecteur determinons d=A*U
for (int m = 1; m<M ; m++)
{
c[m]=pow(nombre,m*t/h);
double id =1/(b[m]-c[m-1]);
c[m]*=id;
d[m]=(d[m]-d[m-1]*c[m])*id;
}
u[M-1]=d[M-1];
for (int m = M-2; m>=0 ; m--)
d[m]=u[m]+c[m]*u[m+1];
} |
sauf que là j'ai 3 erreurs que je n'arrive toujours pas a corriger
voici les erreurs:
error C2065: 'nombre'*: identificateur non déclaré
: error C2108: l'indice n'est pas de type intégral
: error C2108: l'indice n'est pas de type intégral
: warning C4244: 'initialisation'*: conversion de 'double' en 'int', perte possible de données
2008\Projects\maman\maman\Debug\BuildLog.htm"
1>maman - 3 erreur(s), 1 avertissement(s)
et pour finir avoir une représentation graphique de y[m] m=1,2,...........,1000