Salve, per la risoluzione di questo esercizio in primis avevo dichiarato con un "int" la variabile valore, ma non compilava. Dopo cambiandola con un float ho risolto. Mi chiedo perchè è cosi essenziale qsta differenza?

codice:
#include <iostream>

Siano assegnati in ingresso, da tastiera, un vettore di interi V1 
ed il suo riempimento n1.
Si scriva un programma che calcoli la media M degli elementi del vettore V1 
e copi in un vettore V2 tutti gli elementi di V1 il cui valore è minore di M. 
Si stampino quindi il vettore V1, la media M ed il vettore V2.
 

#include <stdlib.h>
using namespace std;

void input (int v1[], int &n);
void media (int v1[], float &valore, int n);
void copia (int v1[], int v2[], float valore, int risultato, int n);
void output(int v1[], int v2[], float valore, int risultato, int n);


int main (){
    int n;
    int v1[100],v2[100];
    float valore=0;
    int risultato=0;
    
    
    input(v1,n);
    media(v1,valore,n);
    copia(v1,v2,valore,risultato,n);
    output(v1,v2,valore,risultato,n);
    
    system("pause");
    return 0;
}

void input (int v1[], int &n){
     cout<<"Inserie la grandezza di V1:\n";
     cin>>n;
     cout<<"Riempi V1\n";
     for(int i=0; i<n; i++){
             cin>>v1[i];
             }}
             
void media (int v1[], float &valore, int n){
     for(int i=0; i<n; i++){
             valore= valore+v1[i];
             }
             valore= valore/n;
             }
    
void copia (int v1[], int v2[], float valore, int risultato, int n){//copio valori<M in v2
bool esiste=false;
for(int i=0; i<n; i++){
        if(v1[i]<valore){
                         v2[risultato]=v1[i];
                         risultato++;
                         esiste=true;
                         }}}
             
void output(int v1[], int v2[], float valore, int risultato, int n){
     cout << "il vettore di ingresso è:\n";
      for(int i =0; i < n; i++){
              cout << v1[i]<<"\n";
              }
     cout<<"Valore Media:\n";
     cout<<valore<<"\n";
     
     bool esiste;
     if(esiste){
     cout<<"Vettore V2:\n";
     for(int j=0; j<valore; j++){
             cout<<v2[j]<<"\n";
             }}
     else{
          bool esiste;
          cout<<"Nessun valore minore della Media.\n";
          }}