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:
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.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; }

Rispondi quotando
(grazie :3)

