Buonasera a tutti stavo cercando di risolvere un problema,eccovi il testo:
Avendo un vettore con dei valori caricati da input far inserire un elenco di valori da tastiera e:
a) verificare che i valori siano presenti con la ricerca binaria
b) fare la media dei valori inseriti da tastiera
c) contare i valori maggiori della media
visualizzare gli output
io ho aggito in questa maniera
funzione per caricamento vettore,inserimento numero,funzione per la ricerca dicotomica,verifica (tramite un valore bool restituito dalla funzione) se è presente o meno e comunicarlo all'utente,[questa cosa non so se sia molto corretta ma ho visto che funziona e lo usata] inserisco in un secondo vettore che ho chiamato valori[] i numeri inseriti,particolarità di questo vettore è che ad ogni ciclo la sua dimensione aumenta di uno così da poter contenere sempre tutti i valori inseriti (poichè all'inserimento di un valore la sua dimensione (N) viene incrementata),funzione per la media dei valori,richiedo (do-while) se vuole inserire altri valori,se ha finito di inserire,funzione per verificare i valori (che sono dentroi il vettore valori[]) sono superiori alla media e poi stampa i risultati...ma mi da qualche errore,volevo risolvarli con voi anche perchè non riesco a capirli,ecco il codice:
codice:
#include <iostream>
#include <stdlib.h>
#define dim 5
using namespace std;
void carica (int vett[],int dim);
int ricerca (int vett[],int dim,int num);
double media (int dim,int num);
void contatore (int valori[],int media,int dim,int &contatore,);
char cambio_carattere (char risp);
int main()
{ int vett[dim],num,N=0,i=0,media,contatore=0,valori[N]; //N è il numero progressivo della dimensione del vettore mentre i è il numero attuale del contenuto del vettore
bool a;
char risp,risp2;
carica (vett,dim);
do{
cout<<"inserisci num: ";
cin>>num;
cout<<'\n'<<'\n';
a=ricerca(vett,dim,num);
if (a==1)
cout<<"il numero "<<num<<" è presente nel vettore inserito."<<'\n';
else
cout<<"il numero "<<num<<" non è presente nel vettore inserito."<<'\n'<<'\n';
N++;
valori[i]=num;
i++;
media= media(dim,num);
cout<<"vuoi inserire altri numeri? ";
cin>>risp2;
cout<<'\n';
risp=cambia_carattere(risp2);
}
while (risp=='S');
contatore(valori,media,dim,contatore);
cout<<"la media dei valori inseriti è: "<<media<<'\n'<<"i valori maggiori della media sono: "<<contatore<<'\n'<<'\n';
system ("pause");
return 0;
}
void caricavettore(int vett[],int dim){
for (int i=0;i<dim;i++){
cout<<"inserisci l'elemento "<<i+1<<" del vettore ";
cin>>vett[i];
cout<<'\n';
}
}
int ricerca(int vett[],int dim,int num){
int s=0,sx=0,dx=0,md;
do{
md=(sx+dx)/2;
if ((vett[sx]==num) || (vett[dx]==num) || (vett[md]==num))
s=1;
else if (vett[md]<N)
sx=sx+1;
else
dx=md-1;
}
while ((sx<=dx) && (s==0));
return s;
}
double media (int dim,int num){
double media,somma;
media=(somma+num)/dim;
return media;
}
void contatore (int valori,int media,int dim,int &contatore){
for (int i=0;i<dim-1;i++){
if (media>valori[i])
contatore++;
}
}
char cambio_carattere (char risp){
risp=toupper(risp);
return risp;
}
i primi errori che mi da sono alla riga 6,7,8,9 l'errore è "|error: expected ',' or '...' before numeric constant" non ho capito a cosa si riferisce per "numeric costant" ovvero costante numerica ò.ò credo sia dim (dichiarata all'inizio) ma non capisco cosa devo mettere.