
Algoritmo en C++ (ZinjaI)
Publicado por Sary (4 intervenciones) el 28/02/2018 03:52:30
Algoritmo que:
diga el promedio de los numeros pares mayores a 40.
diga el promedio de los numeros pares mayores a 40.
Valora esta pregunta


0
#include <stdio.h>
#include <stdlib.h>
#define LEN 80
#define DIEZ 10
#define CUARENTA 40
int calcular_promedio(int *);
int main(int argc, char* argv[])
{
int numeros[LEN];
printf("Ingrese %d números enteros\n", LEN);
unsigned char i = 0;
unsigned char contador_mensaje = 1;
while(i < LEN)
{
scanf("%i", &numeros[i++]);
if(0 == contador_mensaje++ % DIEZ)
{
printf("Faltan %i números por ingresar\n", LEN-i);
}
}
int resultado = calcular_promedio(&numeros[0]);
if(-1 == resultado)
{
printf("No se encontraron números pares mayores a %i\n", CUARENTA);
}else
{
printf("\nEl promedio es: %i\n", resultado);
}
return EXIT_SUCCESS;
}
int calcular_promedio(int * arreglo)
{
unsigned int suma = 0;
unsigned char mayores_cuarenta = 0;
int valor;
for(register int i = 0 ; i < LEN ; i++)
{
valor = *(arreglo+i);
if( CUARENTA < valor && 0 == (valor&1))
{
mayores_cuarenta++;
suma += valor;
}
}
return (mayores_cuarenta > 0) ? suma/mayores_cuarenta : -1;
}
#include <iostream>
#include <numeric>
#include <vector>
int main()
{
const int n = 80;
std::vector<int> a(n);
for (int i = 0; i < n; ++i) { // lectura de los datos
std::cout << '\n' << i + 1 << ") ";
std::cin >> a[i];
}
// acumula los valores pares mayores que 40:
int num = 0;
int sum = std::accumulate(a.begin(), a.end(), 0,
[&num](int s, int i) { if (i > 40 && !(i % 2)) { ++num; return s + i; } return s; });
std::cout << "Promedio de los pares mayores que 40: " << ((num) ? static_cast<float>(sum) / num : 0) << '\n';
}