#include <iostream>
using namespace std;
void leerDatos(int v[], int sz);
void ordenar(int v[], int size);
float porcentajeCero(const int v[], int size);
float promedioImpares(const int v[], int size);
void imprimirNegativos(const int v[], int size);
int mayorParPositivo(const int v[], int size);
int menorParPositivo(const int v[], int size);
int main()
{
int size, mayor, menor;
cout << "\nCantidad de numeros: ";
cin >> size;
int numeros[size];
cout << "\nIntroducir datos:\n";
leerDatos(numeros, size);
ordenar(numeros, size);
mayor = mayorParPositivo(numeros, size);
menor = menorParPositivo(numeros, size);
cout << endl;
cout << "Porcentaje de Ceros: " << porcentajeCero(numeros, size) << endl;
cout << "Promedio numeros impares: " << promedioImpares(numeros, size) << endl;
cout << "Lista de numeros negativos: "; imprimirNegativos(numeros, size);
cout << "Mayor numero par positivo: "; mayor > 0 ? cout << mayor : cout << "Ninguno"; cout << endl;
cout << "Menor numero par positivo: "; menor < 0 ? cout << menor : cout << "Ninguno"; cout << endl;
return EXIT_SUCCESS;
}
void leerDatos(int v[], int size)
{
for (size_t i = 0; i < size; i++)
{
cout << "Dato " << i + 1 << ": ";
cin >> v[i];
}
}
void ordenar(int v[], int size)
{
int valor;
int j;
for (size_t i = 1; i < size; i++)
{
valor = v[i];
j = i;
while (j > 0 && valor < v[j-1])
{
v[j] = v[j-1];
j--;
}
v[j] = valor;
}
}
float porcentajeCero(const int v[], int size)
{
int cantidad = 0;
for (size_t i = 0; i < size; i++)
if (v[i] == 0)
cantidad++;
return float(cantidad) / size;
}
float promedioImpares(const int v[], int size)
{
int suma = 0, cantidad = 0;
for (size_t i = 0; i < size; i++)
if (v[i] % 2 != 0)
{
suma += v[i];
cantidad++;
}
return float(suma) / cantidad;
}
void imprimirNegativos(const int v[], int size)
{
for (size_t i = 0; i < size; i++)
if (v[i] < 0)
cout << v[i] << " ";
cout << endl;
}
int mayorParPositivo(const int v[], int size)
{
int max = 0;
for (size_t i = 0; i < size; i++)
if (v[i] % 2 == 0 && v[i] > 0 && max < v[i])
max = v[i];
return max;
}
int menorParPositivo(const int v[], int size)
{
int min = 0;
for (size_t i = 0; i < size; i++)
if (v[i] % 2 == 0 && v[i] > 0 && min > v[i])
min = v[i];
return min;
}