y a t-il un volontaire qui jette un coup d'oeuil sur ça - C - Programmation
Marsh Posté le 19-01-2006 à 23:08:27
Balises code pour commencer. Et donner quelque chose qui compile parce que vu la tête du programme, t'as pas besoin de conio.h ni de dos.h (sic).
Marsh Posté le 19-01-2006 à 23:11:44
ReplyMarsh Posté le 19-01-2006 à 23:11:49
et arrête de t'impatienter aussi parce qu'en 4 minutes...
Marsh Posté le 19-01-2006 à 23:13:24
ReplyMarsh Posté le 19-01-2006 à 23:30:43
ingainga a écrit : on peut ne pas utiliser dos.h,mais conio.h aidera dans l'instruction getch() |
En effet mais tu n'as pas besoin de "getch" pour programmer un tri fusion de listes chaînées. L'idéal comme tu débutes serait d'écrire un programme propre, en C standard (ANSI quant à faire). Je ne sais pas quel compilateur tu utilises mais poste un code qui compile avec les options de GCC "-ansi -pedantic" (en plus des options de warning).
Pour savoir si un programme est "juste" ou non, il suffit de voir s'il fonctionne comme tu l'attends en testant (tout le problème étant de savoir ce que tu considères comme un ensemble de tests valides).
Marsh Posté le 19-01-2006 à 23:47:27
Je refuse de lire un paquet de lignes non indentées.
ingainga a écrit :
|
Précisément la raison pour laquelle je ne lirais pas ton code mal écrit.
Marsh Posté le 19-01-2006 à 23:54:27
il parait que tu l'as déjà lu,sinon d'où viennent ces commentaires
Marsh Posté le 19-01-2006 à 23:57:02
ingainga a écrit : j'attend une reponse |
Marsh Posté le 20-01-2006 à 09:18:07
ingainga a écrit : |
bin heuh, t'as essayé de le compiler, de le lancer, et de regarder les résultats ?
Marsh Posté le 20-01-2006 à 10:19:18
Si c'est le temps qui compte, tu prends les STL et tu fais ta liste avec tri en moins de temps qu'il te faut pour indenter ton code:-)
Marsh Posté le 19-01-2006 à 23:03:46
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
#include<time.h>
long const it=100;
typedef struct liste{int val;
liste *suivant;
}liste;
liste *fusion(liste *g,liste *d)
{liste *scan,res;
res.suivant=NULL,scan=&res;
while (g!=NULL && d!=NULL)
{if(g->val <= d->val)
{scan=(scan->suivant=g);
g=g->suivant;
}
else
{scan=(scan->suivant=d);
d=d->suivant;
}
}
if(g!=NULL)
scan->suivant=g;
else
scan->suivant=d;
return(res.suivant);
}
liste *tri_fusion(liste *l,long n)
{FILE *fd; long i,j=it/2;
liste *scan,*prev=NULL,*m;
clock_t t1, t2;
fd = fopen("tri.txt","r" );
if(fd==NULL)
{
printf("\nLecture impossible a partir du fichier !!!\n" );
}
else
{ while(!feof(fd))
{
fscanf(fd,"%ld",&l->val);
}
}
fclose(fd);
t1= clock();
for(i=0;i<it-1;i++)
{
if(n>2)
{for(m=l,i=j;i>0;m=m->suivant,i--)
{prev =m;
}
prev->suivant=NULL;
l=tri_fusion(l,j);
m=tri_fusion(m,it-j);
return(fusion(l,m));
}
else
{if(n==2 && l->val>l->suivant->val)
{l->suivant->suivant=l;
l=l->suivant;
l->suivant->suivant=NULL;
}
t2= clock();
printf("temps d'execution du tri selection : %f secondes\n",(t2-t1)/CLK_TCK);
}
}
return(l);
}
int main()
{
long i; int n;
FILE *fd;liste *l;
fd = fopen("tri.txt","w" );
for(i=0;i<it;i++)
fprintf(fd,"%ld\n",random(it));
fclose(fd);
tri_fusion(l,n);
getch();
return(0);
}
dites moi,c'est juste ou non