Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    vari errori in un codice programma

    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.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: vari errori in un codice programma

    codice:
    int N = ...;
    int valori[N];
    non è una scrittura ammessa.

    codice:
    void contatore (int valori[],int media,int dim,int &contatore,);
    c'è una virgola di troppo. Questo per iniziare.

    Comunque ti consiglio di indentare meglio e di rendere più leggibile il tuo codice, si fa veramente fatica a leggerlo


    ps: al posto di cout<<'\n' puoi fare cout<< endl.


    edit

    La tua funzione

    double media (int dim,int num){
    double media,somma;
    media=(somma+num)/dim;
    return media;
    }

    restituirà valori che non c'entrano nulla: dichiari una variabile media e una somma senza inizializzarle. Il contenuto sarà indefinito. A somma(indefinito) aggiungi num e dividi per dim (risultato indefinito, che salvi in media). Manca qualcosa pare...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3

    Re: Re: vari errori in un codice programma

    Originariamente inviato da Alex'87
    codice:
    int N = ...;
    int valori[N];
    non è una scrittura ammessa.

    codice:
    void contatore (int valori[],int media,int dim,int &contatore,);
    c'è una virgola di troppo. Questo per iniziare.

    Comunque ti consiglio di indentare meglio e di rendere più leggibile il tuo codice, si fa veramente fatica a leggerlo


    ps: al posto di cout<<'\n' puoi fare cout<< endl.
    consigli per renderlo "più leggibile"? sono uno studente quindi sto cercando di racimolare informazioni,ho usato le funzioni proprio per renderlo "più leggibile"...se hai qualche altro insegnamento,illuminami maestro! (grazie :3)

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ad esempio dichiara una variabile per riga. Dichiarale solo dove effettivamente servono (ad esempio num mi pare venga usata solo nel ciclo: non ha senso di esistere al di fuori di quel ciclo quindi...). Inoltre usa dei nomi parlanti: N, i, a sono pessimi nomi in generale. E non conta che a fianco c'è un commentino che dice cosa sono, perché quello è scritto all'inizio e basta. Se nella sbrodolata di codice leggo (ad esempio, if(a == funz2(min, bb) {...} me ne faccio poco del commentino...)

    Poi, usa meglio gli spazi: per il compilatore questo

    codice:
    for(int i=0;i<k+1;i+=2)
    cout<<"i="<<i<<endl;
    e questo

    codice:
    for (int i = 0; i < k + 1; i += 2) {
        cout << "i = " << i << endl;
    }
    sono la stessa cosa ma il secondo è decisamente più semplice da leggere! Capisci cosa voglio dire?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Originariamente inviato da Alex'87
    Ad esempio dichiara una variabile per riga. Dichiarale solo dove effettivamente servono (ad esempio num mi pare venga usata solo nel ciclo: non ha senso di esistere al di fuori di quel ciclo quindi...). Inoltre usa dei nomi parlanti: N, i, a sono pessimi nomi in generale. E non conta che a fianco c'è un commentino che dice cosa sono, perché quello è scritto all'inizio e basta. Se nella sbrodolata di codice leggo (ad esempio, if(a == funz2(min, bb) {...} me ne faccio poco del commentino...)

    Poi, usa meglio gli spazi: per il compilatore questo

    codice:
    for(int i=0;i<k+1;i+=2)
    cout<<"i="<<i<<endl;
    e questo

    codice:
    for (int i = 0; i < k + 1; i += 2) {
        cout << "i = " << i << endl;
    }
    sono la stessa cosa ma il secondo è decisamente più semplice da leggere! Capisci cosa voglio dire?
    Num viene chiesto da input,non posso dichiararlo solo per il ciclo,viene inserito dall'utente...

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da razielmitico
    Num viene chiesto da input,non posso dichiararlo solo per il ciclo,viene inserito dall'utente...
    A me pare che la cin sia dentro il ciclo...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Originariamente inviato da Alex'87
    A me pare che la cin sia dentro il ciclo...
    Si scusami errore mio,per dichiararlo nel corpo del programma (le variabili) si fa nello stesso modo di dichiararle all'inizio? cos'altro potrei migliorare nella sintassi? oltre agli spazi

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da razielmitico
    Si scusami errore mio,per dichiararlo nel corpo del programma (le variabili) si fa nello stesso modo di dichiararle all'inizio?
    Esattamente allo stesso modo.

    Originariamente inviato da razielmitico
    cos'altro potrei migliorare nella sintassi? oltre agli spazi
    Qui c'è qualche suggerimento generico:
    http://aksakalaustralia.com/public/i...vices&Itemid=4
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    potresti anche scrivere le costanti in maiuscolo..così salta subito all'occhio che si sta trattando di costanti

  10. #10
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Aggiungo questa interessante raccolta di suggerimenti

    (è molto più seria di quel che sembra )
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.