#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TOTAL_NUMEROS 100
#define NUMEROS_MUESTRA 80
// Función para comparar dos enteros (usada para qsort)
int comparar(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int main() {
int numeros[TOTAL_NUMEROS];
int muestra[NUMEROS_MUESTRA];
int resto[TOTAL_NUMEROS - NUMEROS_MUESTRA];
int i, j;
// Inicializar la semilla para la generación de números aleatorios
// Llenar el arreglo de numeros con valores del 1 al 100
for (i = 0; i < TOTAL_NUMEROS; i++) {
numeros[i] = i + 1;
}
// Seleccionar 80 números aleatorios
for (i = 0; i < NUMEROS_MUESTRA; i++) {
int index
= rand() % (TOTAL_NUMEROS
- i
); muestra[i] = numeros[index];
// Mover el número seleccionado al final del arreglo
numeros[index] = numeros[TOTAL_NUMEROS - i - 1];
}
// Ordenar los números seleccionados de menor a mayor
qsort(muestra
, NUMEROS_MUESTRA
, sizeof(int), comparar
);
// Mostrar los 80 números seleccionados
printf("80 números seleccionados de menor a mayor:\n"); for (i = 0; i < NUMEROS_MUESTRA; i++) {
}
// Encontrar el resto de los números (los que no fueron seleccionados)
int k = 0;
for (i = 0; i < TOTAL_NUMEROS; i++) {
int encontrado = 0;
for (j = 0; j < NUMEROS_MUESTRA; j++) {
if (numeros[i] == muestra[j]) {
encontrado = 1;
break;
}
}
if (!encontrado) {
resto[k++] = numeros[i];
}
}
// Ordenar el resto de los números de menor a mayor
qsort(resto
, TOTAL_NUMEROS
- NUMEROS_MUESTRA
, sizeof(int), comparar
);
// Mostrar el resto de los números
printf("Resto de los números de menor a mayor:\n"); for (i = 0; i < TOTAL_NUMEROS - NUMEROS_MUESTRA; i++) {
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCiNkZWZpbmUgVE9UQUxfTlVNRVJPUyAxMDAKI2RlZmluZSBOVU1FUk9TX01VRVNUUkEgODAKCi8vIEZ1bmNpw7NuIHBhcmEgY29tcGFyYXIgZG9zIGVudGVyb3MgKHVzYWRhIHBhcmEgcXNvcnQpCmludCBjb21wYXJhcihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKSB7CiAgICByZXR1cm4gKCooaW50ICopYSAtICooaW50ICopYik7Cn0KCmludCBtYWluKCkgewogICAgaW50IG51bWVyb3NbVE9UQUxfTlVNRVJPU107CiAgICBpbnQgbXVlc3RyYVtOVU1FUk9TX01VRVNUUkFdOwogICAgaW50IHJlc3RvW1RPVEFMX05VTUVST1MgLSBOVU1FUk9TX01VRVNUUkFdOwogICAgaW50IGksIGo7CiAgICAKICAgIC8vIEluaWNpYWxpemFyIGxhIHNlbWlsbGEgcGFyYSBsYSBnZW5lcmFjacOzbiBkZSBuw7ptZXJvcyBhbGVhdG9yaW9zCiAgICBzcmFuZCh0aW1lKE5VTEwpKTsKICAgIAogICAgLy8gTGxlbmFyIGVsIGFycmVnbG8gZGUgbnVtZXJvcyBjb24gdmFsb3JlcyBkZWwgMSBhbCAxMDAKICAgIGZvciAoaSA9IDA7IGkgPCBUT1RBTF9OVU1FUk9TOyBpKyspIHsKICAgICAgICBudW1lcm9zW2ldID0gaSArIDE7CiAgICB9CiAgICAKICAgIC8vIFNlbGVjY2lvbmFyIDgwIG7Dum1lcm9zIGFsZWF0b3Jpb3MKICAgIGZvciAoaSA9IDA7IGkgPCBOVU1FUk9TX01VRVNUUkE7IGkrKykgewogICAgICAgIGludCBpbmRleCA9IHJhbmQoKSAlIChUT1RBTF9OVU1FUk9TIC0gaSk7CiAgICAgICAgbXVlc3RyYVtpXSA9IG51bWVyb3NbaW5kZXhdOwogICAgICAgIAogICAgICAgIC8vIE1vdmVyIGVsIG7Dum1lcm8gc2VsZWNjaW9uYWRvIGFsIGZpbmFsIGRlbCBhcnJlZ2xvCiAgICAgICAgbnVtZXJvc1tpbmRleF0gPSBudW1lcm9zW1RPVEFMX05VTUVST1MgLSBpIC0gMV07CiAgICB9CiAgICAKICAgIC8vIE9yZGVuYXIgbG9zIG7Dum1lcm9zIHNlbGVjY2lvbmFkb3MgZGUgbWVub3IgYSBtYXlvcgogICAgcXNvcnQobXVlc3RyYSwgTlVNRVJPU19NVUVTVFJBLCBzaXplb2YoaW50KSwgY29tcGFyYXIpOwogICAgCiAgICAvLyBNb3N0cmFyIGxvcyA4MCBuw7ptZXJvcyBzZWxlY2Npb25hZG9zCiAgICBwcmludGYoIjgwIG7Dum1lcm9zIHNlbGVjY2lvbmFkb3MgZGUgbWVub3IgYSBtYXlvcjpcbiIpOwogICAgZm9yIChpID0gMDsgaSA8IE5VTUVST1NfTVVFU1RSQTsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCIlZCAiLCBtdWVzdHJhW2ldKTsKICAgIH0KICAgIHByaW50ZigiXG4iKTsKICAgIAogICAgLy8gRW5jb250cmFyIGVsIHJlc3RvIGRlIGxvcyBuw7ptZXJvcyAobG9zIHF1ZSBubyBmdWVyb24gc2VsZWNjaW9uYWRvcykKICAgIGludCBrID0gMDsKICAgIGZvciAoaSA9IDA7IGkgPCBUT1RBTF9OVU1FUk9TOyBpKyspIHsKICAgICAgICBpbnQgZW5jb250cmFkbyA9IDA7CiAgICAgICAgZm9yIChqID0gMDsgaiA8IE5VTUVST1NfTVVFU1RSQTsgaisrKSB7CiAgICAgICAgICAgIGlmIChudW1lcm9zW2ldID09IG11ZXN0cmFbal0pIHsKICAgICAgICAgICAgICAgIGVuY29udHJhZG8gPSAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFlbmNvbnRyYWRvKSB7CiAgICAgICAgICAgIHJlc3RvW2srK10gPSBudW1lcm9zW2ldOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gT3JkZW5hciBlbCByZXN0byBkZSBsb3MgbsO6bWVyb3MgZGUgbWVub3IgYSBtYXlvcgogICAgcXNvcnQocmVzdG8sIFRPVEFMX05VTUVST1MgLSBOVU1FUk9TX01VRVNUUkEsIHNpemVvZihpbnQpLCBjb21wYXJhcik7CiAgICAKICAgIC8vIE1vc3RyYXIgZWwgcmVzdG8gZGUgbG9zIG7Dum1lcm9zCiAgICBwcmludGYoIlJlc3RvIGRlIGxvcyBuw7ptZXJvcyBkZSBtZW5vciBhIG1heW9yOlxuIik7CiAgICBmb3IgKGkgPSAwOyBpIDwgVE9UQUxfTlVNRVJPUyAtIE5VTUVST1NfTVVFU1RSQTsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCIlZCAiLCByZXN0b1tpXSk7CiAgICB9CiAgICBwcmludGYoIlxuIik7CiAgICAKICAgIHJldHVybiAwOwp9Cg==