Problème dans mon code

finesse20 Messages postés 13 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 10 août 2006 - 25 mai 2005 à 14:57
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 26 mai 2005 à 09:12
Bonjour à tous,



lors de la compilation, mon programme s'arrête à la ligne coura->temps_UC=tps

pour être plus précise, la fonction calcul_temps_UC est appelée par une autre fonction. Pour l'appeler, j'entre la ligne

calcul_temps_UC(&a);

Je ne trouve pas la solution à ce problème. Si quelqu'un peut me donner un coup de pouce ce me serait très utile





typedef struct activite* ptr_activite;

typedef struct activite{


int num_process;


char *statut_process;


int temps_UC;


int avant_blocage;


int temps_cumule;


ptr_activite suiv;

}ACTIVITE;





void calcul_temps_UC(ptr_activite a){

int i=0,j=0,tps=0,moyenne=2000,ecart_type=510,nb_process=2;

ptr_activite
coura;


printf("loi\n");


srand(time(NULL));

printf("loup\n");

for(i=0;i<nb_process;i++){ printf("mur\n");


tps=(rand()%(2*ecart_type)+(moyenne-ecart_type));


printf("\nle nbr aléatoire est %d",tps);


coura.temps_UC=tps;


coura=coura->suiv;


}


}

7 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
25 mai 2005 à 16:07
ptr_activite coura; => tu déclares un pointeur sur une structure ACTIVITE mais tu ne l'initialise pas.
Lors de son utilisation coura->temps_UC=tps, tu accède à une zone quelconque de la mémoire et boom.

A mon avis il manque au début :
ptr_activite coura = a;

de plus c'est :
coura->temps_UC=tps;
0
finesse20 Messages postés 13 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 10 août 2006
25 mai 2005 à 16:36
non malheureusement ce n'est pas ça, j'avais déjà essayé cette solution.
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
25 mai 2005 à 16:53
En tout cas il y a un problème de pointeur non initialisé au départ ou une liste chaînée mal faite. Il faudrait mettre plus de code ou
donner le but du jeu.
0
finesse20 Messages postés 13 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 10 août 2006
25 mai 2005 à 17:40
voici le code:



#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <string.h>



/*

typedef struct statistique* ptr_statistique;

typedef struct statistique{


int num_process;


int temps_UC;


int blocage_E_S;


int terminaison_UC;


int blocage_UC;


ptr_statistique suiv;


}statistique;*/



typedef struct activite* ptr_activite;

typedef struct activite{


int num_process;


char *statut_process;


int temps_UC;


int avant_blocage;


int temps_cumule;


ptr_activite suiv;

}ACTIVITE;





void calcul_temps_UC(ptr_activite a){

int i=0,j=0,tps=0,moyenne=2000,ecart_type=510,nb_process=2;

ptr_activite coura;

coura=a;



srand(time(NULL));

for(i=0;i<nb_process;i++){


tps=(rand()%(2*ecart_type)+(moyenne-ecart_type));


printf("\nle nbr aléatoire est %d",tps);


coura->temps_UC=tps; il effectue la boucle une fois et se stoppe ici


coura=coura->suiv;


}


}



void activite(ptr_activite
*a){


int nb_process=2,j=0,tps,temps_total=0;

ptr_activite coura,tempa;

for(j=0;j<nb_process;j++){


if(j==0){


(*a)=(ptr_activite)malloc(sizeof(activite));


(*a)->num_process=j;


(*a)->suiv=NULL;


coura=(*a);


printf("%d",(*a)->num_process);


}


else{


tempa=(ptr_activite)malloc(sizeof(activite));


coura->suiv=tempa;


coura=tempa;


coura->suiv=NULL;


printf("%d",coura->num_process);


}


}

coura->suiv=(*a);

printf("OK");

calcul_temps_UC(&a);

}
0

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

Posez votre question
finesse20 Messages postés 13 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 10 août 2006
25 mai 2005 à 17:43
comme vous pouvez le voir j'ai crée une liste circulaire et pour chaque cellule je veux générer

un nombre aléatoire et le placer dans la variable temps_UC de ma structure
0
finesse20 Messages postés 13 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 10 août 2006
25 mai 2005 à 21:59
le but du sujet est d'afficher deux fichiers grâce à l'algorithme d'ordonnancement
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
26 mai 2005 à 09:12
Normalement tu doit avoir soit une erreur soit un warning à cette ligne :
calcul_temps_UC(&a);

vu les prototypes c'est plutot :
calcul_temps_UC(*a);
0