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";
}}