Un programme en langage C

Bonjour,
comment je fais l'appel du fonction cftp dans le main() ??
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
# define N  3
# define M  100
int tab[N];
double p[N][N];
double matrice_repa[N][N];
etats[N];
///////////////////////////////////////matrice de la transition//////////////////////////////
void fct_repa(void)
{
    int i,j;
    double s;
    for(i=0;i<N;i++)
    {
        s=0;
        for(j=0;j<N;j++)
        {
         s+= p[ i][j];
         matrice_repa[ i][j]  = s;
        }
    }
}
///////////////////////genere une variable aleatoire////////////////////
double genere(void)
{
    return(rand()/(double)RAND_MAX);
}
////////////foction de transition///////////////////////////////////
 int fct_trans(int i,double u)
{
    int j=0;
    while (u>=matrice_repa[ i][j])
        j++;
    return (j) ;
}
////////////////// test_arret /////////////////////////////////////////
int test_arret()
{
int i;
i = 1;
while ((etats[i-1]== etats[ i]) && (i< N))
    i++;
if  (i >= N )
    return(1);
else
    return(0);
    }
 //////////////////////////////// cftp /////////////////
int cftp()
{
    int T;
    int i;
    int etats[N];
    double v_alea[M];
    int k;
    int j;
    T=1;
    v_alea[1]=genere();
    for(i=0;i<N;i++)
        etats[ i]=i;
    for(i=0;i<N;i++)
        etats[ i]=fct_trans(etats[ i],v_alea[0]);
while(test_arret==0)
{
    i=2*T ;
}
k=test_arret();
while (k==0)
{
    i=2*T;
    for (j=i;j<T;j--)
        v_alea[j]=genere();
    while (i<0)
    {
        for(j=0;j<N;j++)
            etats[j]=fct_trans(etats[j],v_alea[ i]);
            i-- ;
    }
    T=2*T;
}
}
double main ( )
{
    int i,j;
p[0][0]=0.5;
p[0][1]=0.25;
p[0][2]=0.25;
p[1][0]=0.25;
p[1][1]=0.5;
p[1][2]=0.25;
p[2][0]=0.25;
p[2][1]=0.25;
p[2][2]=0.5;

fct_repa();
for(i=0;i<N;i++)
{
 for(j=0;j<N;j++)
   printf("mat[%d][%d]=%f       ",i,j,matrice_repa[ i][j]);
   printf("\n");
}
printf("\n variable_aleatoire =%f",genere() );

printf("\n fonction_transition =%d",fct_trans(0,0.75) );
etats[0]=1;
etats[1]=1;
etats[2]=1;
printf("\n tests=%d",test_arret());
}

Réponses

  • Bonjour,

    Ça, c'est du programme, qu'est ce qu'il est commenté !!

    On ne sait pas ce qu'il fait, mais de toutes façons, tu peux appeler la fonction cftp par $cftp()$ ou $toto=cftp()$, ça ne servira pas à grand-chose, vu qu'elle n'affiche rien et ne renvoie rien.

    Cordialement,

    Rescassol
  • La fonction cftp() ne semble modifier que des variables locales. Quand la fonction se termine toutes les variables locales (modifiées) sont détruites.

    Par ailleurs, dans le corps de cette fonction il y a l'utilisation d'une variable test_arret qui n'est pas déclarée ni modifiée si je lis bien et ce nom de variable est aussi le nom d'une fonction.

    Je ne sais pas si tout ceci est un vrai programme (qui ne sert à rien dans l'état où il est à mon humble avis) où un exercice de compréhension du langage (le corriger etc)
  • Bonjour,

    En plus, les variables globales, ce n'est pas bien :-D

    Cordialement,

    Rescassol

    Edit: Je sais, Jacquot, c'était exprès.
  • Merci pour vos réponses
    J'essaie de programmé l'algorithme de couplage depuis le passé dans langage c. Maisj'ai pas réussi :(:(:(:(75234
  • voila un exemple de algo75248
    75250
    75252
    a.PNG 263.7K
    b.PNG 353.5K
    c.PNG 195.7K
Connectez-vous ou Inscrivez-vous pour répondre.