fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define TOTAL_NUMEROS 100
  6. #define NUMEROS_MUESTRA 80
  7.  
  8. // Función para comparar dos enteros (usada para qsort)
  9. int comparar(const void *a, const void *b) {
  10. return (*(int *)a - *(int *)b);
  11. }
  12.  
  13. int main() {
  14. int numeros[TOTAL_NUMEROS];
  15. int muestra[NUMEROS_MUESTRA];
  16. int resto[TOTAL_NUMEROS - NUMEROS_MUESTRA];
  17. int i, j;
  18.  
  19. // Inicializar la semilla para la generación de números aleatorios
  20. srand(time(NULL));
  21.  
  22. // Llenar el arreglo de numeros con valores del 1 al 100
  23. for (i = 0; i < TOTAL_NUMEROS; i++) {
  24. numeros[i] = i + 1;
  25. }
  26.  
  27. // Seleccionar 80 números aleatorios
  28. for (i = 0; i < NUMEROS_MUESTRA; i++) {
  29. int index = rand() % (TOTAL_NUMEROS - i);
  30. muestra[i] = numeros[index];
  31.  
  32. // Mover el número seleccionado al final del arreglo
  33. numeros[index] = numeros[TOTAL_NUMEROS - i - 1];
  34. }
  35.  
  36. // Ordenar los números seleccionados de menor a mayor
  37. qsort(muestra, NUMEROS_MUESTRA, sizeof(int), comparar);
  38.  
  39. // Mostrar los 80 números seleccionados
  40. printf("80 números seleccionados de menor a mayor:\n");
  41. for (i = 0; i < NUMEROS_MUESTRA; i++) {
  42. printf("%d ", muestra[i]);
  43. }
  44. printf("\n");
  45.  
  46. // Encontrar el resto de los números (los que no fueron seleccionados)
  47. int k = 0;
  48. for (i = 0; i < TOTAL_NUMEROS; i++) {
  49. int encontrado = 0;
  50. for (j = 0; j < NUMEROS_MUESTRA; j++) {
  51. if (numeros[i] == muestra[j]) {
  52. encontrado = 1;
  53. break;
  54. }
  55. }
  56. if (!encontrado) {
  57. resto[k++] = numeros[i];
  58. }
  59. }
  60.  
  61. // Ordenar el resto de los números de menor a mayor
  62. qsort(resto, TOTAL_NUMEROS - NUMEROS_MUESTRA, sizeof(int), comparar);
  63.  
  64. // Mostrar el resto de los números
  65. printf("Resto de los números de menor a mayor:\n");
  66. for (i = 0; i < TOTAL_NUMEROS - NUMEROS_MUESTRA; i++) {
  67. printf("%d ", resto[i]);
  68. }
  69. printf("\n");
  70.  
  71. return 0;
  72. }
  73.  
Success #stdin #stdout 0s 5276KB
stdin
45
stdout
80 números seleccionados de menor a mayor:
1 2 4 6 7 8 9 11 12 13 15 16 18 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 38 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 72 73 75 77 78 79 81 82 83 84 85 86 87 88 89 90 91 94 97 98 99 100 
Resto de los números de menor a mayor:
3 5 10 14 17 19 26 34 39 48 52 69 71 74 76 80 92 93 95 96