Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2959 connectés 

  FORUM HardWare.fr
  Programmation
  C

  concours de code

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Précédente
Auteur Sujet :

concours de code

n°475901
Taz
bisounours-codeur
Posté le 02-08-2003 à 17:56:45  profilanswer
 

suite au topic du même nom en C++, voici le même pour les inconditionnels du C.
 
sont acceptés: norme ANSI, C9x
 
#1 :le premier défi était: afficher les arguments de la ligne de commande dans l'ordre lexicographique (donné par strcmp par exemple)
 
l'objectif est un code clair, propre, sur (s'il en est) et élégant
 
 
edit: pour ceux qui utilise gcc, le code doit compilé sans Warnings avec
 
gcc -Wall -std=c89 -pedantic
gcc -Wall -ansi -pedantic
 
pour la norme ansi
 
gcc -Wall -std=c99 -pedantic
 
pour C99
 
les autres normes sont mineures


Message édité par Taz le 02-08-2003 à 18:08:32
mood
Publicité
Posté le 02-08-2003 à 17:56:45  profilanswer
 

n°475902
polo021
Posté le 02-08-2003 à 17:58:43  profilanswer
 

est ce que les trucs du genre  

Code :
  1. for (int i=0;i<x;i++)

sont acceptés ou alors faut il un total respect du C sachant que la declaration de i dans la boucle for est du c++ et non du c ?

n°475903
Taz
bisounours-codeur
Posté le 02-08-2003 à 18:01:14  profilanswer
 

c'est validé C99, donc ça passe sans problème avec un compilateur moderne

n°475904
polo021
Posté le 02-08-2003 à 18:16:16  profilanswer
 

Code :
  1. // code hrf1.cpp : Defines the entry point for the console application.
  2. //
  3. #include "stdafx.h"
  4. #include <stdlib.h>
  5. #include <string.h>
  6. int compare( const void *arg1, const void *arg2 )
  7. {
  8.    return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );
  9. }
  10. int main(int argc, char* argv[])
  11. {
  12. printf("Affichage des arguments passés\n" );
  13. for (int iterateur=0; iterateur<argc; iterateur++)
  14.  printf("%d : %s\n",iterateur, argv[iterateur]);
  15. qsort((char *)argv, argc, sizeof(char*), compare);
  16. printf("\n\nAffichage des arguments triee\n" );
  17. for( iterateur=0; iterateur<argc; iterateur++)
  18.       printf("%d : %s\n",iterateur, argv[iterateur]);
  19. return 0;
  20. }


 
 
spoiler pour taz uniquement

Spoiler :


En cherchant la syntaxe du qsort dans la msdn j'ai vu un bel exemple tout en bas :/
Mais je savais deja comment faire puisque j'allais voir la syntaxe du qsort.  

n°475906
Taz
bisounours-codeur
Posté le 02-08-2003 à 18:20:59  profilanswer
 

1) on a dit standard
2) il y a des erreurs
3) ça manque de clareté
( 4) pour des raisons de propretés, j'aimerais qu'on fasse en sorte que argv et argc ne soit pas modifiés)

n°475909
kadreg
profil: Utilisateur
Posté le 02-08-2003 à 18:55:36  profilanswer
 

J'ose ?
 
 
Allez, j'ose (c'est du C99) :  
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define INF(a,b) ((!*a?b:(!*b?a:(strcmp (*a, *b) < 0?a:b))))
  4. int main (int argc, char **argv) {
  5.   int again = argc - 1;
  6.   while (again--){
  7.     char **current = argv + 1;
  8.     char **mini = current;
  9.     int pos = argc - 1;
  10.     do {
  11.       mini = INF (current, mini);
  12.       current++;
  13.     } while (--pos);
  14.     printf ("%s%c", *mini, again?' ':'\n');
  15.     *mini = NULL;
  16.   }
  17. }


 
 
[:neowen]


Message édité par kadreg le 02-08-2003 à 19:00:01

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°475913
*syl*
--&gt; []
Posté le 02-08-2003 à 19:01:47  profilanswer
 

A mon tour :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. static int compare(const void *first, const void *second){
  5.     return strcmp(*(char **)first, *(char **)second) ;
  6. }
  7. int main(int argc, char *argv[]){
  8.  
  9.     if(argc > 1){
  10.         int nbArg = argc - 1 ;
  11.         char **pArg = (char **)malloc(nbArg * sizeof(char *)) ;
  12.         for(int i = 0, j = 1; i < nbArg; ++i, ++j){
  13.             pArg[i] = (char *)malloc(sizeof(char) * (strlen(argv[j]) + 1)) ;
  14.             strcpy(pArg[i], argv[j]) ;
  15.         }
  16.         qsort(pArg, nbArg, sizeof(char *), compare) ;
  17.         for(int i = 0; i < nbArg; ++i){
  18.             printf("%s\n", pArg[i]) ;
  19.             free(pArg[i]) ;
  20.         }
  21.         free(pArg) ;
  22.     }else{
  23.         printf("Aucun paramètre de passé !\n" ) ;
  24.     }
  25. }


Message édité par *syl* le 02-08-2003 à 19:04:49
n°475918
Taz
bisounours-codeur
Posté le 02-08-2003 à 19:25:15  profilanswer
 

kadreg a écrit :

J'ose ?
 
 
Allez, j'ose (c'est du C99) :  
 

Code :


 
 
[:neowen]

1) ta macro est horrible, et tres mal ecrite
2) c bien mais ça ne fait pas ce qui est demandé

n°475919
kadreg
profil: Utilisateur
Posté le 02-08-2003 à 19:27:57  profilanswer
 

Taz a écrit :

1) ta macro est horrible, et tres mal ecrite


 
Je sais, je voulais une macro moche et de l'arithmétique de pointeur à la con.
 

Taz a écrit :


2) c bien mais ça ne fait pas ce qui est demandé


 
 :heink:  
 
exemple ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°475921
Taz
bisounours-codeur
Posté le 02-08-2003 à 19:29:05  profilanswer
 

*Syl* a écrit :

A mon tour :


bien! juste y a des allocations dont on aurait pu se passer et personne n'a l'air d'apprécié les const... vos compilaeurs devraient vous avertir il me semble
 
 
ma solution, tres proche de celle de Syl
 

Code :
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. int lexsort(const void *a, const void *b)
  5. {
  6.   return strcmp(
  7.  *(const char**)a,
  8.  *(const char**)b
  9.  );
  10. }
  11. int main(int argc, char **argv)
  12. {
  13.   int i=0;
  14.   const char * *args=malloc(argc * sizeof *args);
  15.   memcpy(args, argv, argc * sizeof *args);
  16.   qsort(args, argc, sizeof *args, lexsort);
  17.   for(i=0; i<argc; ++i)
  18.     {
  19.       printf("%s ", args[i]);
  20.     }
  21.   putchar('\n');
  22.   free(args);
  23.   return 0;
  24. }


Message édité par Taz le 02-08-2003 à 19:29:59
mood
Publicité
Posté le 02-08-2003 à 19:29:05  profilanswer
 

n°475925
Taz
bisounours-codeur
Posté le 02-08-2003 à 19:34:31  profilanswer
 

kadreg a écrit :


 
Je sais, je voulais une macro moche et de l'arithmétique de pointeur à la con.
 
 
 
 :heink:  
 
exemple ?

1) ben elle est laide comme tout, surtout que tu t'en sert qu'une fois, on avait dit 'programme clair'. elle est illisible. je parie qu'au début t'avais ecrit INF(truc++,) et zou tu t'es vite rattrapé... non [:dawa]
 
2) oops, j'ai lu trop vite... désolé. cela dit, t'aurais pu faire un effort en réutilisant qsort
 
3) on va dire que t'a le programme le plus lent, avec le plus de tests inutiles (comme celui du printf par exemple)

n°475929
kadreg
profil: Utilisateur
Posté le 02-08-2003 à 19:38:23  profilanswer
 

Taz a écrit :


1) ben elle est laide comme tout, surtout que tu t'en sert qu'une fois, on avait dit 'programme clair'. elle est illisible. je parie qu'au début t'avais ecrit INF(truc++,) et zou tu t'es vite rattrapé... non [:dawa]


 
[:rotflmao] oui
 
 

Taz a écrit :


3) on va dire que t'a le programme le plus lent, avec le plus de tests inutiles (comme celui du printf par exemple)

 
 
J'avais envie de faire un peu porc :o
 


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°475933
Taz
bisounours-codeur
Posté le 02-08-2003 à 19:40:07  profilanswer
 

Syl & kadreg, je retire les bons points.
 
vous pensez pas qu'une fonction déclarée comme retourant un int doit effectivement retourner un int   :D
 
edit: voir plus bas


Message édité par Taz le 02-08-2003 à 20:03:30
n°475934
polo021
Posté le 02-08-2003 à 19:40:18  profilanswer
 

Taz a écrit :

1) on a dit standard
2) il y a des erreurs
3) ça manque de clareté
( 4) pour des raisons de propretés, j'aimerais qu'on fasse en sorte que argv et argc ne soit pas modifiés)


 - qu'est ce qui n'est pas standard?
 - quelles sont mes erreurs?
 - ok
 - ok aussi

n°475935
Taz
bisounours-codeur
Posté le 02-08-2003 à 19:41:26  profilanswer
 

je suis physiquement [:rofl] (j'ai de la moquette)

n°475938
*syl*
--&gt; []
Posté le 02-08-2003 à 19:42:10  profilanswer
 

Taz a écrit :


bien! juste y a des allocations dont on aurait pu se passer

Pas con d'avoir réutilisé les pointeurs vers les arguments, j'y avais pas pensé d'où mes malloc et strcpy :/

n°475939
kadreg
profil: Utilisateur
Posté le 02-08-2003 à 19:42:16  profilanswer
 

Taz a écrit :

Syl & kadreg, je retire les bons points.
 
vous pensez pas qu'une fonction déclarée comme retourant un int doit effectivement retourner un int   :D  


 
http://forum.hardware.fr/forum2.ph [...] 54#t475470
 
C'est pas pareil en C99 ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°475940
Taz
bisounours-codeur
Posté le 02-08-2003 à 19:43:24  profilanswer
 

polo021 a écrit :


 - qu'est ce qui n'est pas standard?
 - quelles sont mes erreurs?
 - ok
 - ok aussi


1) st truc afx, _stricmp (en plus j'avais dit strcmp)
2) sort((char *)argv ...

n°475943
Taz
bisounours-codeur
Posté le 02-08-2003 à 19:45:23  profilanswer
 

non, mais la pluspart des compilos sont laxistes.
d'ailleurs, le C99 a suivi le C++, le prototype de main doit etre int
la moralité, c'est que beaucoup de compilos sont faillibles, il faut toujours jeter un oeil

n°475945
*syl*
--&gt; []
Posté le 02-08-2003 à 19:48:13  profilanswer
 

Taz a écrit :

Syl & kadreg, je retire les bons points.
 
vous pensez pas qu'une fonction déclarée comme retourant un int doit effectivement retourner un int   :D  

http://www.comeaucomputing.com/techtalk/c99/#return0
http://www.comeaucomputing.com/techtalk/#voidmain

n°475948
Taz
bisounours-codeur
Posté le 02-08-2003 à 19:52:30  profilanswer
 

je suis entrain de lire un draf C99 pour m'en assurer. c'est une doc de compilo que t'as la, donc prudence

n°475950
Taz
bisounours-codeur
Posté le 02-08-2003 à 19:54:41  profilanswer
 

et ben voilà, on a appris quelque chose
 

Citation :

5.1.2.2.3 Program termination 1 If the return type of the main function is a type compatible with int, a return from the initial call to the main function is equivalent to calling the exit function with the value returned by the main function as its argument;9) reaching the } that terminates the main function returns a value of 0. If the return type is not compatible with int, the termination status returned to the host environment is unspecified.


 
edit: je m'étais jamais trop posé la question puisque les exemples du draf sont plein de return 0


Message édité par Taz le 02-08-2003 à 20:00:57
n°475952
*syl*
--&gt; []
Posté le 02-08-2003 à 19:56:05  profilanswer
 

Taz a écrit :

je suis entrain de lire un draf C99 pour m'en assurer. c'est une doc de compilo que t'as la, donc prudence

Ouep c'est vrai mais d'après ce qu'ils marquent, ils parlent que de la norme et pas de leur compilo (The intent of this page is to address questions about C99), enfin confirme comme ça on est sûr :)

n°475979
polo021
Posté le 02-08-2003 à 20:51:33  profilanswer
 

voici mon code plus standard, j'ai eu la flemme de copier les param dans un nouveau tableau mais le principe est là.

Code :
  1. #include "stdafx.h"
  2. #include <string.h>
  3. int main(int argc, char* argv[])
  4. {
  5. char* temp;
  6. for (int iterateur =0; iterateur<argc;iterateur++)
  7. {
  8.  for ( int sub_iterateur = iterateur; sub_iterateur<argc ; sub_iterateur++)
  9.  {
  10.   if (strcmp(argv[iterateur],argv[sub_iterateur]) > 0)
  11.   {
  12.    temp = strdup(argv[iterateur]);
  13.    argv[iterateur] = argv[sub_iterateur];
  14.    argv[sub_iterateur] = temp;
  15.   }
  16.  }
  17. }
  18. for (iterateur =0; iterateur<argc;iterateur++)
  19.  printf("%d : %s\n",iterateur,argv[iterateur]);
  20. return 0;
  21. }


 
C'est bon?

n°475980
kadreg
profil: Utilisateur
Posté le 02-08-2003 à 20:53:24  profilanswer
 

#include "stdafx.h" :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°475984
polo021
Posté le 02-08-2003 à 20:55:06  profilanswer
 

kadreg a écrit :

#include "stdafx.h" :o

Citation :

unexpected end of file while looking for precompiled header directive

 :o

n°475986
Taz
bisounours-codeur
Posté le 02-08-2003 à 20:55:26  profilanswer
 

1) t'es pas tres doué quand tu decides de réinventer le tri
2) iterateur, c'est quoi ce nom de variable à la con
3) peut etre qu'il te faut ton bordlaxfx.h pour compiler, mais c'est pas un entete standard
4) strdup est pas standard
5) manque un milliard de free
6) déclare temp au moment de son initialisation

n°475988
polo021
Posté le 02-08-2003 à 20:59:23  profilanswer
 

Taz a écrit :

1) t'es pas tres doué quand tu decides de réinventer le tri
2) iterateur, c'est quoi ce nom de variable à la con
3) peut etre qu'il te faut ton bordlaxfx.h pour compiler, mais c'est pas un entete standard
4) strdup est pas standard
5) manque un milliard de free
6) déclare temp au moment de son initialisation


1) mon tri est tres simple et fonctionne :o
2) on s'en bat les couilles avec un batteur electrique :o
3) ranafout faut quand meme bien que je etste pour voir si ca marche non? :o
4) comment on sait que c'est pas standard?  
5) ou ca?
6) ouais pourquoi pas mais bon [:sinclaire]

n°475990
Taz
bisounours-codeur
Posté le 02-08-2003 à 21:01:35  profilanswer
 

polo021 a écrit :


1) mon tri est tres simple et fonctionne :o
2) on s'en bat les couilles avec un batteur electrique :o
3) ranafout faut quand meme bien que je etste pour voir si ca marche non? :o
4) comment on sait que c'est pas standard?  
5) ou ca?
6) ouais pourquoi pas mais bon [:sinclaire]

1) tu peux faire la meme chose en mieux en une ligne
2) non, voir le sujet du topic
3) idem
4) ça l'est pas, voir ta documentation
5) idem
6) idem

n°476025
Taz
bisounours-codeur
Posté le 02-08-2003 à 22:01:49  profilanswer
 

kadreg a écrit :

J'ose ?
 
 
Allez, j'ose (c'est du C99)

au fait, au lieu de nous pondre des macros, le C99 dispose du mot-clef 'inline' 'as fast as macro'
 
fais en bon usage

n°476033
tchoupinet​te
Posté le 02-08-2003 à 22:47:29  profilanswer
 

Code :
  1. /***********************************************/
  2. /*Prog de tri tout simple, algo du tri a bulles*/
  3. /***********************************************/
  4. #include <stdio.h>
  5. #include <string.h>
  6. /*Tri a bulles; pas le + efficace ms de loin le + simple*/
  7. void tribulle(char **tab, int felem, int nbelem){
  8.   int i, j;
  9.   char *tmp;
  10.  
  11.   for(i=felem; i<felem+nbelem; i++)
  12.     for(j=felem+nbelem-1; j>felem; j--){
  13.       if( strcmp(tab[j], tab[j-1])<0 ){
  14. tmp=tab[j-1];
  15. tab[j-1]=tab[j];
  16. tab[j]=tmp;
  17.       }
  18.     }
  19.  
  20. }
  21. int main(int argc, char **argv) {
  22.   int i;
  23.  
  24.   if( argc>1 ){  /*a priori jamais plus grand k'1 int, faut esperer en tt k*/
  25.     tribulle(argv, 1, argc-1);
  26.    
  27.     printf("Arguments tries:\n" );
  28.    
  29.     for(i=1; i<argc; i++)
  30.       printf("%s\n", argv[i]);
  31.   }else {
  32.     printf("Ce pti prog classe skon lui passe alors si on lui passe rien !\nUsage: defi arg1 arg2 ... argn\n" );
  33.     return 1;
  34.   }
  35.  
  36.   return 0;
  37. }


 
 
je précise juste que ce n'est pas de moi mais d'un copain de promo !


Message édité par tchoupinette le 02-08-2003 à 22:50:36

---------------
http://membres.lycos.fr/axelfa
n°476035
Taz
bisounours-codeur
Posté le 02-08-2003 à 22:51:34  profilanswer
 

Tchoupinette a écrit :


je précise juste que ce n'est pas de moi mais d'un copain de promo !  

alors ça va.
pourquoi tout le monde fais du tri par bulles à gogo: y a pasplus mauvais, alos que le tri par sélection est aussi simple    [:spamafote] et déjà meilleur. encore la palme des bons noms de variables felem, il m'a fallu un moment pour penser que ct peut être first-element :sweat:

n°476037
tchoupinet​te
Posté le 02-08-2003 à 22:55:55  profilanswer
 

Taz a écrit :

alors ça va.
pourquoi tout le monde fais du tri par bulles à gogo: y a pasplus mauvais, alos que le tri par sélection est aussi simple    [:spamafote] et déjà meilleur. encore la palme des bons noms de variables felem, il m'a fallu un moment pour penser que ct peut être first-element :sweat:  


 
Alors il te dit que son tri à bulles marche tres bien, que ses noms de variable sont tres bien et que oui c'est first element.
 
 :kaola: ( c lui qui a choisi le smiley pas moi)


---------------
http://membres.lycos.fr/axelfa
n°476046
*syl*
--&gt; []
Posté le 02-08-2003 à 23:31:14  profilanswer
 

1/ Le tri à bulle c'est mal
2/

Citation :

pour des raisons de propretés, j'aimerais qu'on fasse en sorte que argv et argc ne soit pas modifiés


 
:D

n°476049
tchoupinet​te
Posté le 02-08-2003 à 23:47:19  profilanswer
 

un autre prog de la meme personne :
 
 

Code :
  1. /**********************************************************/
  2. /*Prog de tri tout simple, algo du tri rapide (quick sort)*/
  3. /*Ce prog respecte toutes les normes du C, il est propre et*/
  4. /*efficace et n'effectue aucune copie de chaines*/
  5. /**********************************************************/
  6. #include <stdio.h>
  7. #include <string.h>
  8. /*tri rapide: Le plus efficace de tous !!*/
  9. int partition(char **tableau, int deb, int fin) {
  10.     int compt=deb;
  11.     char *pivot=tableau[deb];
  12.     int i;
  13. char *tmp;
  14.     for(i=deb+1;i<=fin;i++) {
  15.         if(strcmp(tableau[i], pivot)<0) {
  16.             compt++;
  17.   tmp=tableau[compt];
  18.   tableau[compt]=tableau[i];
  19.   tableau[i]=tmp;
  20.         }
  21.     }
  22. tmp=tableau[compt];
  23. tableau[compt]=tableau[deb];
  24. tableau[deb]=tmp;
  25.     return(compt);
  26. }
  27. void tri_rapide_bis(char **tableau,int debut,int fin) {
  28.     if(debut<fin) {
  29.         int pivot=partition(tableau,debut,fin);
  30.         tri_rapide_bis(tableau,debut,pivot-1);
  31.         tri_rapide_bis(tableau,pivot+1,fin);
  32.     }
  33. }
  34. void tri_rapide(char **tableau, int deb, int longueur) {
  35.      tri_rapide_bis(tableau, deb, deb+longueur-1);
  36. }
  37. /*******************************************/
  38. int main(int argc, char **argv) {
  39.   int i;
  40.  
  41.   if( argc>1 ){  /*a priori jamais plus grand k'1 int, faut esperer en tt k*/
  42.      tri_rapide(argv, 1, argc-1);
  43.     printf("Arguments tries:\n" );
  44.    
  45.     for(i=1; i<argc; i++)
  46.       printf("%s\n", argv[i]);
  47.   }else {
  48.     printf("Ce pti prog classe skon lui passe alors si on lui passe rien !\nUsage: defi arg1 arg2 ... argn\n" );
  49.     return 1;
  50.   }
  51.  
  52.   return 0;
  53. }


 
 il me dit de dire que ni argc ni argv ne sont modifiés.²


Message édité par tchoupinette le 02-08-2003 à 23:49:33

---------------
http://membres.lycos.fr/axelfa
n°476050
tchoupinet​te
Posté le 02-08-2003 à 23:51:40  profilanswer
 

un ajout de sa part :
 

Code :
  1. copie=(char **)malloc(sizeof(char *)*argc);
  2. for(i=0; i<argc; i++)
  3.  copie[i]=argv[i];
  4. /*C mieu la ? :)*/
  5. tri_rapide(copie, 1, argc-1);


---------------
http://membres.lycos.fr/axelfa
n°476053
burgergold
5$? va chez l'diable!
Posté le 02-08-2003 à 23:54:27  profilanswer
 

alors maitre taz, jvois bien que ton code est clair et quand meme très simple
 
tu peux m'expliquer l'utilisation du qsort, comment ca fonctionne et pk c'est plus rapide comme tri que le tri à bulle (voir meme me le montrer en mathématique)


---------------
http://www.boincstats.com/signature/user_664861.gif
n°476054
*syl*
--&gt; []
Posté le 02-08-2003 à 23:55:04  profilanswer
 

Tchoupinette a écrit :

il me dit de dire que ni argc ni argv ne sont modifiés.²

Code :
  1. printf("Arguments tries:\n" );
  2. for(i=1; i<argc; i++) printf("%s\n", argv[i]);

Il en est sûr ? :whistle:

n°476055
burgergold
5$? va chez l'diable!
Posté le 02-08-2003 à 23:55:15  profilanswer
 

Tchoupinette a écrit :

un autre prog de la meme personne :
 
 

Code :
  1. /**********************************************************/
  2. /*Prog de tri tout simple, algo du tri rapide (quick sort)*/
  3. /*Ce prog respecte toutes les normes du C, il est propre et*/
  4. /*efficace et n'effectue aucune copie de chaines*/
  5. /**********************************************************/
  6. #include <stdio.h>
  7. #include <string.h>
  8. /*tri rapide: Le plus efficace de tous !!*/
  9. int partition(char **tableau, int deb, int fin) {
  10.     int compt=deb;
  11.     char *pivot=tableau[deb];
  12.     int i;
  13. char *tmp;
  14.     for(i=deb+1;i<=fin;i++) {
  15.         if(strcmp(tableau[i], pivot)<0) {
  16.             compt++;
  17.   tmp=tableau[compt];
  18.   tableau[compt]=tableau[i];
  19.   tableau[i]=tmp;
  20.         }
  21.     }
  22. tmp=tableau[compt];
  23. tableau[compt]=tableau[deb];
  24. tableau[deb]=tmp;
  25.     return(compt);
  26. }
  27. void tri_rapide_bis(char **tableau,int debut,int fin) {
  28.     if(debut<fin) {
  29.         int pivot=partition(tableau,debut,fin);
  30.         tri_rapide_bis(tableau,debut,pivot-1);
  31.         tri_rapide_bis(tableau,pivot+1,fin);
  32.     }
  33. }
  34. void tri_rapide(char **tableau, int deb, int longueur) {
  35.      tri_rapide_bis(tableau, deb, deb+longueur-1);
  36. }
  37. /*******************************************/
  38. int main(int argc, char **argv) {
  39.   int i;
  40.  
  41.   if( argc>1 ){  /*a priori jamais plus grand k'1 int, faut esperer en tt k*/
  42.      tri_rapide(argv, 1, argc-1);
  43.     printf("Arguments tries:\n" );
  44.    
  45.     for(i=1; i<argc; i++)
  46.       printf("%s\n", argv[i]);
  47.   }else {
  48.     printf("Ce pti prog classe skon lui passe alors si on lui passe rien !\nUsage: defi arg1 arg2 ... argn\n" );
  49.     return 1;
  50.   }
  51.  
  52.   return 0;
  53. }


 
 il me dit de dire que ni argc ni argv ne sont modifiés.²


 
ouais mais la regarde la longueur du code comparé celui de taz, et ca doit etre plus lent


---------------
http://www.boincstats.com/signature/user_664861.gif
n°476056
*syl*
--&gt; []
Posté le 02-08-2003 à 23:56:50  profilanswer
 

burgergold a écrit :

alors maitre taz, jvois bien que ton code est clair et quand meme très simple
 
tu peux m'expliquer l'utilisation du qsort, comment ca fonctionne et pk c'est plus rapide comme tri que le tri à bulle (voir meme me le montrer en mathématique)

[:google]  
http://www.cs.princeton.edu/~ah/al [...] kSort.html

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  concours de code

 

Sujets relatifs
Code perl non interprété sur apache.[C++] Concours de code : new test en cours, proposez votre solution !
un code qui marche sous ie5.5 mais pas sous ie6[VB6] Datagrid et ajout d'enregistrement via code
[HTML] Comment éviter de copier-coller du code sur chaque page ?Prob important ! Mon code ne s'exécute plus !
[C] Peut-on conscidèrer ce bout de code correct ?[ASP + VB.net] Séparer HTML et code
Recuperer le code PHP 
Plus de sujets relatifs à : concours de code


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR