?? projet.c
字號:
* *
*Remarque: *
* Comme val est un tableau a 2 dimensions dont chaque colone presente *
* une espece,pour pouvoir calculer une espece choisie une variable *
* exportee est servie pour separer les especes differentes "col" *
* *
******************************************************************************/
double moyenne(double **val,int iter,int col)
{
double averag=0.;
int i;
for (i=(iter-1);i>=0;i--)
averag=averag+val[i][col];
return (averag/iter);
}
/******************************************************************************
* *
*Bloc d'aide *
* *
*IN:le nom de programme qui est passe dans la liste d'arguments *
* un nombre entier a *
* *
*OUT:affichage de text d'aide *
* *
*Remarque: *
* le nombre a est positionne a 1 alors on sait qu'on demande le mode *
* d'emploi de ce programme,sinon alors on est dans la boucle de *
* commande *
* *
******************************************************************************/
void aide(char *arg,int a)
{
if (a==1)
{
printf ("Mode d'utilisation de %s.\n"
"les parametres passes sont respectivement les suivants:\n"
"1.le nombre de petits poissons au depart.\n"
"2.le nombre de gros poissons au depart.\n"
"3.le temps du depart.\n"
"4.le temps final.\n"
"5.le nombre d'iterations \n"
" (un nombre superieur a 5000 est conseille).\n"
"6.le niveau de precision de l'estimation de la periode.\n"
" (un nombre superieur a 3 est conseille).\n"
"7.le facteur A.\n"
"8.le facteur B.\n"
"9.le facteur C.\n"
"10.le facteur D.\n"
"11.le facteur de peche.\n"
"12.le facteur de competion.\n"
"13.Option de commande:(un nombre entier)\n",arg);
}
printf (" 1.pour le modele simplifie de proie-predateur sans"
" facteurs de peche et de competion."
" (Graphe de nombre de petits poissons et de gros"
" poissons,Graphe de nombres de poissons en fonction"
" du temps,la periode)\n"
" 2.pour le modele simplifie de proie-predateur sans"
" facteur de competion mais avec le facteur de peche\n"
" 3.pour le modele simplifie de proie-predateur sans"
" facteur de peche mais avec le facteur de competion\n"
" 4.pour le modele simplifie de proie-predateur avec les"
" facteurs de peche et de competion.\n");
}
//programme principal
int main(int argc,char **argv)
{
//declaration de variables
int nbr_iter,cmd,niv_estim;
double t0,t1,periode,moyenne_pts,moyenne_gro,ep,cmp;
double **rung;
double *v0;
v0=(double*)malloc(2*sizeof(double));
if (argc!=14)
{
aide (argv[0],1);
exit (EXIT_FAILURE);
}
//initialisation des variables
v0[0]=atof(argv[1]);
v0[1]=atof(argv[2]);
t0=atof(argv[3]);
t1=atof(argv[4]);
nbr_iter=atoi(argv[5]);
niv_estim=atoi(argv[6]);
A=atof(argv[7]);
B=atof(argv[8]);
C=atof(argv[9]);
D=atof(argv[10]);
ep=atof(argv[11]);
cmp=atof(argv[12]);
cmd=atoi(argv[13]);
//dispatch
while (cmd!=0)
{
switch (cmd)
{
case 1:
EP=0;
CMP=0;
//tracage de graphe sur le temps[t0,t1]
rung=Rung_kutta(&Fonc,v0,nbr_iter,t0,t1);
trace(nbr_iter,rung);
tracetmps(nbr_iter,rung);
free(rung);
//calcul de la periode
periode=estim_periode(t0,t1,v0,niv_estim);
printf ("\nLa periode est %lf\n",periode);
//tracage de graphe sur une periode
rung=Rung_kutta(&Fonc,v0,1000,t0,periode+t0);
trace (1000,rung);
//calcul de la moyenne
moyenne_pts=moyenne(rung,1000,0);
moyenne_gro=moyenne(rung,1000,1);
printf ("\nLa moyenne de petits poissons donnee par c/d est %lf.\n",C/D);
printf ("\nLa moyenne de petits poissons donnee par les routines qui\n"
"permettent de calculer la moyenne reelle est %lf.\n",moyenne_pts);
printf ("\nLa moyenne de gros poissons donnee par a/b est %lf.\n",A/B);
printf ("\nLa moyenne de gros poissons donnee par les routines qui\n"
"permettent de calculer la moyenne reelle est %lf.\n",moyenne_gro);
free(rung);break;
case 2:
EP=ep;
CMP=0;
//tracage de graphe sur le temps[t0,t1]
rung=Rung_kutta(&Fonc,v0,nbr_iter,t0,t1);
trace(nbr_iter,rung);
tracetmps(nbr_iter,rung);
free(rung);
//calcul de la periode
periode=estim_periode(t0,t1,v0,niv_estim);
printf ("La periode est %lf\n",periode);
//tracage de graphe sur une periode
rung=Rung_kutta(&Fonc,v0,1000,t0,periode+t0);
trace (1000,rung);
//calcul de la moyenne
moyenne_pts=moyenne(rung,1000,0);
moyenne_gro=moyenne(rung,1000,1);
printf ("\nLa moyenne de petits poissons est %lf\n",moyenne_pts);
printf ("\nLa moyenne de gros poissons est %lf\n",moyenne_gro);
free(rung);break;
case 3:
EP=0;
CMP=cmp;
//tracage de graphe sur le temps[t0,t1]
rung=Rung_kutta(&Fonc,v0,nbr_iter,t0,t1);
trace(nbr_iter,rung);
tracetmps(nbr_iter,rung);
free(rung);break;
case 4:
EP=ep;
CMP=cmp;
//tracage de graphe sur le temps[t0,t1]
rung=Rung_kutta(&Fonc,v0,nbr_iter,t0,t1);
trace(nbr_iter,rung);
tracetmps(nbr_iter,rung);
free(rung);break;
default:
printf ("Commande invalide!!\n");break;
}
printf ("\nDonnez une nouvelle commande!Pour terminer le programme tapez'0'.\n");
scanf ("%d",&cmd);
}
printf ("\nFin de programme.Wang haichen 2eme candi info.05.2005.");
return (EXIT_SUCCESS);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -