#include <stdio.h>
#define MAX_NUMEROS 10
// Prototipos de las funciones
void imprimirNumeros( int arr[ ] , int cantidad) ;
void imprimirPorEncimaDeLaMedia( int arr[ ] , int cantidad, float media) ;
void requerirTolerancia( float * tolerancia) ;
void aplicarTolerancia( int arr[ ] , int cantidad, float media, float tolerancia, int resultado[ ] ) ;
void imprimirArray( int arr[ ] , int cantidad) ;
int main( ) {
int numeros[ MAX_NUMEROS] ; // Array para almacenar los números introducidos
int cantidad = 0 ; // Número de elementos introducidos
int resultado[ MAX_NUMEROS] ; // Array para almacenar los valores con tolerancia
int numero;
float media = 0.0 ;
float suma = 0.0 ;
// Solicitar la entrada de números
printf ( "Introduce hasta 10 números enteros (teclea -1 para finalizar):\n " ) ;
while ( cantidad < MAX_NUMEROS) {
printf ( "Introduce el número %d: " , cantidad
+ 1 ) ;
if ( numero == - 1 ) {
break ; // Si el usuario ingresa -1, se detiene la entrada
}
// Almacenar el número en el array
numeros[ cantidad] = numero;
suma += numero;
cantidad++;
}
// Calcular la media
media = suma / cantidad;
// Imprimir los números introducidos
printf ( "\n Números introducidos:\n " ) ; imprimirNumeros( numeros, cantidad) ;
// Imprimir los números por encima de la media
printf ( "\n Números por encima de la media (%.2f):\n " , media
) ; imprimirPorEncimaDeLaMedia( numeros, cantidad, media) ;
// Solicitar tolerancia
float tolerancia;
requerirTolerancia( & tolerancia) ;
// Aplicar tolerancia y llenar el segundo array
aplicarTolerancia( numeros, cantidad, media, tolerancia, resultado) ;
// Imprimir los resultados
printf ( "\n Array original con tolerancia aplicada:\n " ) ; imprimirArray( resultado, cantidad) ;
return 0 ;
}
// Función para imprimir los números introducidos y sus posiciones
void imprimirNumeros( int arr[ ] , int cantidad) {
for ( int i = 0 ; i < cantidad; i++ ) {
printf ( "Posición %d: %d\n " , i
, arr
[ i
] ) ; }
}
// Función para imprimir los números por encima de la media y sus posiciones
void imprimirPorEncimaDeLaMedia( int arr[ ] , int cantidad, float media) {
for ( int i = 0 ; i < cantidad; i++ ) {
if ( arr[ i] > media) {
printf ( "Posición %d: %d\n " , i
, arr
[ i
] ) ; }
}
}
// Función para requerir la tolerancia al usuario
void requerirTolerancia( float * tolerancia) {
printf ( "\n Introduce la tolerancia (por ejemplo, 0.3): " ) ; }
// Función para aplicar la tolerancia y llenar el array de resultados
void aplicarTolerancia( int arr[ ] , int cantidad, float media, float tolerancia, int resultado[ ] ) {
float rangoInferior = media - ( media * tolerancia) ;
float rangoSuperior = media + ( media * tolerancia) ;
printf ( "\n Valores entre %.2f y %.2f que cumplen con la tolerancia:\n " , rangoInferior
, rangoSuperior
) ;
for ( int i = 0 ; i < cantidad; i++ ) {
if ( arr[ i] >= rangoInferior && arr[ i] <= rangoSuperior) {
resultado[ i] = arr[ i] ; // Copiar el valor si cumple con la tolerancia
} else {
resultado[ i] = 0 ; // Copiar 0 si no cumple con la tolerancia
}
printf ( "Posición %d: %d\n " , i
, resultado
[ i
] ) ; }
}
// Función para imprimir un array dado
void imprimirArray( int arr[ ] , int cantidad) {
for ( int i = 0 ; i < cantidad; i++ ) {
printf ( "Posición %d: %d\n " , i
, arr
[ i
] ) ; }
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIE1BWF9OVU1FUk9TIDEwCgovLyBQcm90b3RpcG9zIGRlIGxhcyBmdW5jaW9uZXMKdm9pZCBpbXByaW1pck51bWVyb3MoaW50IGFycltdLCBpbnQgY2FudGlkYWQpOwp2b2lkIGltcHJpbWlyUG9yRW5jaW1hRGVMYU1lZGlhKGludCBhcnJbXSwgaW50IGNhbnRpZGFkLCBmbG9hdCBtZWRpYSk7CnZvaWQgcmVxdWVyaXJUb2xlcmFuY2lhKGZsb2F0KiB0b2xlcmFuY2lhKTsKdm9pZCBhcGxpY2FyVG9sZXJhbmNpYShpbnQgYXJyW10sIGludCBjYW50aWRhZCwgZmxvYXQgbWVkaWEsIGZsb2F0IHRvbGVyYW5jaWEsIGludCByZXN1bHRhZG9bXSk7CnZvaWQgaW1wcmltaXJBcnJheShpbnQgYXJyW10sIGludCBjYW50aWRhZCk7CgppbnQgbWFpbigpIHsKICAgIGludCBudW1lcm9zW01BWF9OVU1FUk9TXTsgIC8vIEFycmF5IHBhcmEgYWxtYWNlbmFyIGxvcyBuw7ptZXJvcyBpbnRyb2R1Y2lkb3MKICAgIGludCBjYW50aWRhZCA9IDA7ICAgICAgICAgICAvLyBOw7ptZXJvIGRlIGVsZW1lbnRvcyBpbnRyb2R1Y2lkb3MKICAgIGludCByZXN1bHRhZG9bTUFYX05VTUVST1NdOyAvLyBBcnJheSBwYXJhIGFsbWFjZW5hciBsb3MgdmFsb3JlcyBjb24gdG9sZXJhbmNpYQogICAgaW50IG51bWVybzsKICAgIGZsb2F0IG1lZGlhID0gMC4wOwogICAgZmxvYXQgc3VtYSA9IDAuMDsKICAgIAogICAgLy8gU29saWNpdGFyIGxhIGVudHJhZGEgZGUgbsO6bWVyb3MKICAgIHByaW50ZigiSW50cm9kdWNlIGhhc3RhIDEwIG7Dum1lcm9zIGVudGVyb3MgKHRlY2xlYSAtMSBwYXJhIGZpbmFsaXphcik6XG4iKTsKICAgIAogICAgd2hpbGUgKGNhbnRpZGFkIDwgTUFYX05VTUVST1MpIHsKICAgICAgICBwcmludGYoIkludHJvZHVjZSBlbCBuw7ptZXJvICVkOiAiLCBjYW50aWRhZCArIDEpOwogICAgICAgIHNjYW5mKCIlZCIsICZudW1lcm8pOwoKICAgICAgICBpZiAobnVtZXJvID09IC0xKSB7CiAgICAgICAgICAgIGJyZWFrOyAgLy8gU2kgZWwgdXN1YXJpbyBpbmdyZXNhIC0xLCBzZSBkZXRpZW5lIGxhIGVudHJhZGEKICAgICAgICB9CgogICAgICAgIC8vIEFsbWFjZW5hciBlbCBuw7ptZXJvIGVuIGVsIGFycmF5CiAgICAgICAgbnVtZXJvc1tjYW50aWRhZF0gPSBudW1lcm87CiAgICAgICAgc3VtYSArPSBudW1lcm87CiAgICAgICAgY2FudGlkYWQrKzsKICAgIH0KCiAgICAvLyBDYWxjdWxhciBsYSBtZWRpYQogICAgbWVkaWEgPSBzdW1hIC8gY2FudGlkYWQ7CgogICAgLy8gSW1wcmltaXIgbG9zIG7Dum1lcm9zIGludHJvZHVjaWRvcwogICAgcHJpbnRmKCJcbk7Dum1lcm9zIGludHJvZHVjaWRvczpcbiIpOwogICAgaW1wcmltaXJOdW1lcm9zKG51bWVyb3MsIGNhbnRpZGFkKTsKCiAgICAvLyBJbXByaW1pciBsb3MgbsO6bWVyb3MgcG9yIGVuY2ltYSBkZSBsYSBtZWRpYQogICAgcHJpbnRmKCJcbk7Dum1lcm9zIHBvciBlbmNpbWEgZGUgbGEgbWVkaWEgKCUuMmYpOlxuIiwgbWVkaWEpOwogICAgaW1wcmltaXJQb3JFbmNpbWFEZUxhTWVkaWEobnVtZXJvcywgY2FudGlkYWQsIG1lZGlhKTsKCiAgICAvLyBTb2xpY2l0YXIgdG9sZXJhbmNpYQogICAgZmxvYXQgdG9sZXJhbmNpYTsKICAgIHJlcXVlcmlyVG9sZXJhbmNpYSgmdG9sZXJhbmNpYSk7CgogICAgLy8gQXBsaWNhciB0b2xlcmFuY2lhIHkgbGxlbmFyIGVsIHNlZ3VuZG8gYXJyYXkKICAgIGFwbGljYXJUb2xlcmFuY2lhKG51bWVyb3MsIGNhbnRpZGFkLCBtZWRpYSwgdG9sZXJhbmNpYSwgcmVzdWx0YWRvKTsKCiAgICAvLyBJbXByaW1pciBsb3MgcmVzdWx0YWRvcwogICAgcHJpbnRmKCJcbkFycmF5IG9yaWdpbmFsIGNvbiB0b2xlcmFuY2lhIGFwbGljYWRhOlxuIik7CiAgICBpbXByaW1pckFycmF5KHJlc3VsdGFkbywgY2FudGlkYWQpOwoKICAgIHJldHVybiAwOwp9CgovLyBGdW5jacOzbiBwYXJhIGltcHJpbWlyIGxvcyBuw7ptZXJvcyBpbnRyb2R1Y2lkb3MgeSBzdXMgcG9zaWNpb25lcwp2b2lkIGltcHJpbWlyTnVtZXJvcyhpbnQgYXJyW10sIGludCBjYW50aWRhZCkgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjYW50aWRhZDsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCJQb3NpY2nDs24gJWQ6ICVkXG4iLCBpLCBhcnJbaV0pOwogICAgfQp9CgovLyBGdW5jacOzbiBwYXJhIGltcHJpbWlyIGxvcyBuw7ptZXJvcyBwb3IgZW5jaW1hIGRlIGxhIG1lZGlhIHkgc3VzIHBvc2ljaW9uZXMKdm9pZCBpbXByaW1pclBvckVuY2ltYURlTGFNZWRpYShpbnQgYXJyW10sIGludCBjYW50aWRhZCwgZmxvYXQgbWVkaWEpIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FudGlkYWQ7IGkrKykgewogICAgICAgIGlmIChhcnJbaV0gPiBtZWRpYSkgewogICAgICAgICAgICBwcmludGYoIlBvc2ljacOzbiAlZDogJWRcbiIsIGksIGFycltpXSk7CiAgICAgICAgfQogICAgfQp9CgovLyBGdW5jacOzbiBwYXJhIHJlcXVlcmlyIGxhIHRvbGVyYW5jaWEgYWwgdXN1YXJpbwp2b2lkIHJlcXVlcmlyVG9sZXJhbmNpYShmbG9hdCogdG9sZXJhbmNpYSkgewogICAgcHJpbnRmKCJcbkludHJvZHVjZSBsYSB0b2xlcmFuY2lhIChwb3IgZWplbXBsbywgMC4zKTogIik7CiAgICBzY2FuZigiJWYiLCB0b2xlcmFuY2lhKTsKfQoKLy8gRnVuY2nDs24gcGFyYSBhcGxpY2FyIGxhIHRvbGVyYW5jaWEgeSBsbGVuYXIgZWwgYXJyYXkgZGUgcmVzdWx0YWRvcwp2b2lkIGFwbGljYXJUb2xlcmFuY2lhKGludCBhcnJbXSwgaW50IGNhbnRpZGFkLCBmbG9hdCBtZWRpYSwgZmxvYXQgdG9sZXJhbmNpYSwgaW50IHJlc3VsdGFkb1tdKSB7CiAgICBmbG9hdCByYW5nb0luZmVyaW9yID0gbWVkaWEgLSAobWVkaWEgKiB0b2xlcmFuY2lhKTsKICAgIGZsb2F0IHJhbmdvU3VwZXJpb3IgPSBtZWRpYSArIChtZWRpYSAqIHRvbGVyYW5jaWEpOwogICAgCiAgICBwcmludGYoIlxuVmFsb3JlcyBlbnRyZSAlLjJmIHkgJS4yZiBxdWUgY3VtcGxlbiBjb24gbGEgdG9sZXJhbmNpYTpcbiIsIHJhbmdvSW5mZXJpb3IsIHJhbmdvU3VwZXJpb3IpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FudGlkYWQ7IGkrKykgewogICAgICAgIGlmIChhcnJbaV0gPj0gcmFuZ29JbmZlcmlvciAmJiBhcnJbaV0gPD0gcmFuZ29TdXBlcmlvcikgewogICAgICAgICAgICByZXN1bHRhZG9baV0gPSBhcnJbaV07ICAvLyBDb3BpYXIgZWwgdmFsb3Igc2kgY3VtcGxlIGNvbiBsYSB0b2xlcmFuY2lhCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmVzdWx0YWRvW2ldID0gMDsgIC8vIENvcGlhciAwIHNpIG5vIGN1bXBsZSBjb24gbGEgdG9sZXJhbmNpYQogICAgICAgIH0KICAgICAgICBwcmludGYoIlBvc2ljacOzbiAlZDogJWRcbiIsIGksIHJlc3VsdGFkb1tpXSk7CiAgICB9Cn0KCi8vIEZ1bmNpw7NuIHBhcmEgaW1wcmltaXIgdW4gYXJyYXkgZGFkbwp2b2lkIGltcHJpbWlyQXJyYXkoaW50IGFycltdLCBpbnQgY2FudGlkYWQpIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FudGlkYWQ7IGkrKykgewogICAgICAgIHByaW50ZigiUG9zaWNpw7NuICVkOiAlZFxuIiwgaSwgYXJyW2ldKTsKICAgIH0KfQo=