recherche.c 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /**
  2. Recherche d'un entier alétoire dans un tableau de valeurs aléatoires
  3. */
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <time.h>
  7. #define MAX_VALEUR 150000
  8. int *generer_tableau(long long unsigned int n)
  9. {
  10. int *tableau = malloc(n*sizeof(int));
  11. long long unsigned int i;
  12. for (i=0; i<n; i++) {
  13. tableau[i] = rand()%MAX_VALEUR;
  14. }
  15. return tableau;
  16. }
  17. void afficher_tableau(int *tableau, long long unsigned int n)
  18. {
  19. long long unsigned int i;
  20. for (i=0; i<n; i++) {
  21. printf("%d ",tableau[i]);
  22. }
  23. printf("\n");
  24. }
  25. char rechercherV1(int *tableau, long long unsigned int n, int valeur)
  26. {
  27. long long unsigned int i;
  28. char trouve = 0;
  29. for (i=0; i<n; i++) {
  30. if (tableau[i] == valeur) {
  31. trouve=1;
  32. }
  33. }
  34. return trouve;
  35. }
  36. char rechercherV2(int *tableau, long long unsigned int n, int valeur)
  37. {
  38. long long unsigned int i;
  39. char trouve = 0;
  40. for (i=0; i<n; i++) {
  41. if (tableau[i] == valeur) {
  42. return 1;
  43. }
  44. }
  45. return 0;
  46. }
  47. int main(int argc, char *argv[])
  48. {
  49. int *tableau;
  50. int taille, valeur;
  51. char trouve;
  52. int version;
  53. if (argc<2) {
  54. printf("%s: opérande manquant\n",argv[0]);
  55. printf("Recherche une valeur aléatoire dans un tableau d'entier aléatoire de taille n\n");
  56. printf("Affiche le tableau et renvoie 1 si la valeur est trouvée, 0 sinon\n");
  57. exit(1);
  58. printf("Usage: %s taille version [graine]\n",argv[0]);
  59. }
  60. unsigned int graine;
  61. if (argc>3) {
  62. graine = atoi(argv[3]);
  63. } else {
  64. graine = time(NULL);
  65. }
  66. srand(graine);
  67. taille = strtoull(argv[1], (char **) NULL, 10);
  68. version = strtoull(argv[2], (char **) NULL, 10);
  69. valeur = rand()%MAX_VALEUR;
  70. tableau = generer_tableau(taille);
  71. switch(version) {
  72. case 1:
  73. afficher_tableau(tableau,taille);
  74. trouve = rechercherV1(tableau, taille, valeur);
  75. break;
  76. case 2:
  77. trouve = rechercherV1(tableau, taille, valeur);
  78. break;
  79. case 3:
  80. afficher_tableau(tableau,taille);
  81. trouve = rechercherV2(tableau, taille, valeur);
  82. break;
  83. case 4:
  84. trouve = rechercherV2(tableau, taille, valeur);
  85. break;
  86. }
  87. printf("Valeur %d trouve: %d\n",valeur, trouve);
  88. }