Problème de compilation en C

Discutez d'informatique ici !
Supernova
Membre Relatif
Messages: 224
Enregistré le: 19 Déc 2011, 23:33

Problème de compilation en C

par Supernova » 26 Fév 2014, 20:36

Salut à vous!

j'utilise le Turbo C++ 4.5 et j'ai un problème de compilation de ce programme:





#include
#include
#include
#include
#include

//-----------------------------------------------------------------------------------------------------------------//
struct nbreOperations
{
unsigned int nbreTests;
unsigned long int nbreAffectations;
};


//---------------------------------------------------------------------------------------------------------------//


void genererDonneesDansFichier(FILE*fichier,int num,unsigned int nbre);
void lectureTableauDuFichier(FILE*fichier,int nbre,int*V);
void allouerTableau(int**V,unsigned int n);
void libererTableau(int*T);
void afficherTableau(int*T,unsigned int n);
void ecritureDansFichier(FILE*fichier,char*methodeDeTri,unsigned int n1,unsigned long int n2,unsigned long int n3);

//----------------------------------------------------------------------------------------------------------------//



void genererDonneesDansFichier(FILE*fichier,int num,unsigned int nbre)
{
int i,val;
randomize();
for(i=0;i< nbre;i++)
{
val=random(num);
fprintf(fichier,"%5d",val);
if (((i+1)%14)==0)
fprintf(fichier,"\n");
}
}


void allouerTableau(int**V,unsigned int n)
{
*V=(int*)malloc(n*sizeof(int));
if(*V==NULL)
{printf("erreur");
exit(1);}
}

void libererTableau(int*T)
{
free(T);
}



struct nbreOperations triBulleSimple(int*T,unsigned int n)
{
int i,k,temp;
struct nbreOperations m;

m.nbreTests=0;
m.nbreAffectations=0;

for(k=1;k{
for(i=0;i{
m.nbreTests++;
if(T[i]>T[i+1])
{
temp=T[i];
T[i]=T[i+1];
T[i+1]=temp;
m.nbreAffectations+=3; }
}
}

return(m);
}


void afficherTableau(int*T,unsigned int n)
{
int i;
for(i=0;i{
printf("%5d",T[i]);
if(((i+1)%14)==0)
printf("\n");
}
}


void lectureTableauDuFichier(FILE*fichier,int nbre,int*T)
{
int i;
fseek(fichier,0,SEEK_SET);
for(i=0;i{
fscanf(fichier,"%d",&T[i]);
}
}


void ecritureDansFichier(FILE*fichier,char*methodeDeTri,unsigned int n1,unsigned long int n2,unsigned long int n3)
{

fprintf(fichier,"%-25s * %7lu * %7lu * %7lu",methodeDeTri,n1,n2,n3);

}



//--------------------------------------------------------------------------------------------------------------//
void main()
{
int num;
unsigned int nbre;
struct nbreOperations(*ptrMethodeDeTri[1])(int*T,unsigned int n);
FILE*fichierEntree;
FILE*fichierSortie;
struct nbreOperations nbreOpera;
int*V;
int*T;
nbre=100;
num=1000;
fichierSortie=fopen("courbes2.txt","a+");
fichierEntree=fopen("datatri.txt","w+");
genererDonneesDansFichier(fichierEntree,num,nbre);
allouerTableau(&V,nbre);
lectureTableauDuFichier(fichierEntree,nbre,V);
allouerTableau(&T,nbre);
afficherTableau(V,nbre);
nbreOpera=(*ptrMethodeDeTri[1])(V,nbre);
memcpy(T,V,nbre*sizeof(int));
afficherTableau(T,nbre);
libererTableau(T);
libererTableau(V);
fclose(fichierEntree);
fclose(fichierSortie);
}



en fait quand je clique sur 'compile' je trouve: 0 erreurs et 0 warnings, mais quand j'appuie sur 'run' on m'affiche 1 erreur et 1 warning, pour l'erreur: "Linker warning: no module definition file specified: using defaults" et pour l'erreur: "linker error: Segment_TEXT exceeds 64K"
et c'est ça ce que je n'arrive pas à le comprendre :/

S'il vous plait est-ce que vous pouvez me montrer où est l'erreur, m'expliquer ce paradoxe ?!

Merci d'avance



Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 07:03

par ampholyte » 27 Fév 2014, 08:48

Bonjour,

Je ne connais pas du tout turboC++ mais je vais quand même essayer de t'aider.

Qu'est-ce que tu essayes de faire avec cette ligne :
Code: Tout sélectionner
struct nbreOperations(*ptrMethodeDeTri[1])(int*T,unsigned int n);


D'après l'erreur que tu obtiens, j'ai trouvé quelques réponses qui pourront peut-être
t'aider :

* http://dybfin.wustl.edu/willard/turbohlp.html

* http://codes-sources.commentcamarche.net/forum/affich-626342-linker-error-segment-text-exceeds-64k

* http://answers.yahoo.com/question/index?qid=20090224213231AAz2iL2

* https://groups.google.com/forum/#!topic ... GEWTm3oZbw

De plus, voici les erreurs que j'obtiens à la compilation :
Code: Tout sélectionner
main.c:3:16: error: mem.h: No such file or directory
main.c: In function 'genererDonneesDansFichier':
main.c:29: warning: implicit declaration of function 'randomize'
main.c:30: warning: comparison between signed and unsigned
main.c:32: error: too many arguments to function 'random'
main.c: In function 'triBulleSimple':
main.c:63: warning: comparison between signed and unsigned
main.c:65: warning: comparison between signed and unsigned
main.c: In function 'afficherTableau':
main.c:84: warning: comparison between signed and unsigned
main.c: In function 'ecritureDansFichier':
main.c:107: warning: format '%7lu' expects type 'long unsigned int', but argument 4 has type 'unsigned int'
main.c: At top level:
main.c:114: warning: return type of 'main' is not 'int'


Supernova
Membre Relatif
Messages: 224
Enregistré le: 19 Déc 2011, 23:33

par Supernova » 27 Fév 2014, 11:24

ampholyte a écrit:Bonjour,

Je ne connais pas du tout turboC++ mais je vais quand même essayer de t'aider.

Qu'est-ce que tu essayes de faire avec cette ligne :
Code: Tout sélectionner
struct nbreOperations(*ptrMethodeDeTri[1])(int*T,unsigned int n);


D'après l'erreur que tu obtiens, j'ai trouvé quelques réponses qui pourront peut-être
t'aider :

* http://dybfin.wustl.edu/willard/turbohlp.html

* http://codes-sources.commentcamarche.net/forum/affich-626342-linker-error-segment-text-exceeds-64k

* http://answers.yahoo.com/question/index?qid=20090224213231AAz2iL2

* https://groups.google.com/forum/#!topic ... GEWTm3oZbw

De plus, voici les erreurs que j'obtiens à la compilation :
Code: Tout sélectionner
main.c:3:16: error: mem.h: No such file or directory
main.c: In function 'genererDonneesDansFichier':
main.c:29: warning: implicit declaration of function 'randomize'
main.c:30: warning: comparison between signed and unsigned
main.c:32: error: too many arguments to function 'random'
main.c: In function 'triBulleSimple':
main.c:63: warning: comparison between signed and unsigned
main.c:65: warning: comparison between signed and unsigned
main.c: In function 'afficherTableau':
main.c:84: warning: comparison between signed and unsigned
main.c: In function 'ecritureDansFichier':
main.c:107: warning: format '%7lu' expects type 'long unsigned int', but argument 4 has type 'unsigned int'
main.c: At top level:
main.c:114: warning: return type of 'main' is not 'int'


cettte instruction calcule le nombre d'affectations et le nombre de tests qu'on effectue lors de l'application d'une méthode de tri!

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 8 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite