recherche.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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 15
  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. long long unsigned int rechercher(int *tableau, long long unsigned int n, int valeur)
  26. {
  27. long long unsigned int i;
  28. long long unsigned int trouve = -1;
  29. for (i=0; i<n; i++) {
  30. if (tableau[i] == valeur) {
  31. trouve=i;
  32. }
  33. }
  34. return trouve;
  35. }
  36. int main(int argc, char *argv[])
  37. {
  38. int *tableau;
  39. int taille, valeur;
  40. char trouve;
  41. if (argc<2) {
  42. printf("%s: opérande manquant\n",argv[0]);
  43. printf("Recherche une valeur aléatoire dans un tableau d'entier aléatoire de taille n\n");
  44. printf("Affiche le tableau et renvoie 1 si la valeur est trouvée, 0 sinon\n");
  45. exit(1);
  46. printf("Usage: %s taille [graine]\n",argv[0]);
  47. }
  48. unsigned int graine;
  49. if (argc>2) {
  50. graine = atoi(argv[2]);
  51. } else {
  52. graine = time(NULL);
  53. }
  54. srand(graine);
  55. taille = strtoull(argv[1], (char **) NULL, 10);
  56. valeur = rand()%MAX_VALEUR;
  57. tableau = generer_tableau(taille);
  58. afficher_tableau(tableau,taille);
  59. trouve = rechercher(tableau, taille, valeur);
  60. printf("Valeur %d trouvée: %u\n",valeur, trouve);
  61. }