Esercizi di programmazione C++

di il
4 risposte

Esercizi di programmazione C++

Ciao a tutti,
Sono nuovo nel forum e spero di non aver fatto un nuovo thread per nulla. Volevo chiedervi una cosa su un esercizio che ho trovato online. Sto facendo programmazione ma non sono molto bravo e il professore non contribuisce a spiegare bene le cose.Vi invio il programma:
#include<iostream.h>
typedef int vettore[100];
void leggi(int &d,vettore v);
void valore(int &val);
void trova(int &d,vettore v,vettore pos,int &val,int &n);
void visualizza(int &d,vettore v);
void visualizza1(int &val);
void visualizza2(int &val,vettore pos,int n);

void main()
{
int d,rip,val,n;
vettore v,pos;
do
{
cout<<"\n\n ***RICERCA NON ORDINATA*** by Enzo\n";
leggi(d,v);
do
{
valore(val);
visualizza(d,v);
trova(d,v,pos,val,n);
if(n==0) visualizza1(val);
if(n>0) visualizza2(val,pos,n);
cout<<"\n\n Voui cercare un'altro valore?";
cout<<"\n si=1 no=0 : ";
cin>>rip;
}
while(rip==1);
cout<<"\n\n Vuoi continuare ancora?";
cout<<"\n digita 1 per continuare,0 per uscire : ";
cin>>rip;
if(rip!=1)
{
cout<<"\n\n -----FINE PROGRAMMA-----";
}
}
while(rip==1);
}

void leggi(int &d,vettore v)
{
int i;
do
{
cout<<"\n Definisci la dimensione del vettore :";
cout<<"\n\n dim.(max 100)= ";
cin>>d;
if(d>100)
{
cout<<"\n\n ERROR! ";
}
}
while(d>100);
cout<<"\n\n Inserisci i valori nel vettore :";
for(i=0;i<d;i++)
{
cout<<"\n\n pos. "<<i<<" = ";
cin>>v;
}
}

void valore(int &val)
{
cout<<"\n\n Inserisci il valore da cercare : ";
cin>>val;
}

void trova(int &d,vettore v,vettore pos,int &val,int &n)
{
int i,j;
j=0;
for(i=0;i<d;i++)
{
if(v==val)
{
pos[j]=i;
j++;
}
}
n=j;
}

void visualizza(int &d,vettore v)
{
int i;
cout<<"\n\n VETTORE :";
for(i=0;i<d;i++)
{
cout<<"\n pos. "<<i<<" >>> "<<v;
}
}

void visualizza1(int &val)
{
cout<<"\n\n Il valore "<<val<<" non e' presente nel vettore.";
}

void visualizza2(int &val,vettore pos,int n)
{
int i;
cout<<"\n\n Il valore "<<val<<" e' presente";
cout<<"\n nel vettore per n = "<<n<<" volte.";
if(n>1)
{
cout<<"\n\n Il valore "<<val<<" e' presente,rispettivamente, ";
cout<<"\n nel vettore nelle posizioni :";
for(i=0;i<n;i++)
{
cout<<"\n V[ "<<pos<<" ]\n";
}
}
else
{
cout<<"\n\n Il valore "<<val<<" e' presente nel";
cout<<"\n vettore nella posizione V[ "<<pos[0]<<" ].";
}
}

Eccolo. Non capisco bene la funzione di &. Ho provato a toglierlo ma il programma non cambia di una virgola, tranne che se la tolgo in valore. In questo caso mi viene in output "Il valore 127 non è presente".
Come mai?
Grazie

4 Risposte

  • Re: Esercizi di programmazione C++

    Sai cosa sono i puntatori e il passaggio di parametri per riferimento? Studialo e avrai tutto più chiaro.
    Quando inserisci del codice sul forum usa gli appositi tag
  • Re: Esercizi di programmazione C++

    & è un riferimento alla prima posizione dell' indirizzo di un array, dell' indirizzo della variabile, quando non lo usi lavori con una copia della variabile, ora sono in accordo con il commento che mi precede, fatti una veduta sui passaggi per valore e per referenza, o anche detti, per valore e per indirizzo
  • Re: Esercizi di programmazione C++

    Grazie mille per l'aiuto.
    Avrei ora un altro problema.
    Ho questo codice (sviluppato in ambiente Qt Creator):
    namespace Ui {
    class maratoneti;  //classe della parte grafica
    }
    
    class maratoneti : public QMainWindow
    {
        Q_OBJECT
        
    public:
        explicit maratoneti(QWidget *parent = 0);
        ~maratoneti();
        
    private:
        Ui::maratoneti *ui;
        QVector<atleta> v;
    
    Mi spiegate cos'è Ui? perchè non l'ho trovato da nessuna parte- e anche "explicit" non so cosa voglia dire.
    Grazie
  • Re: Esercizi di programmazione C++

    Nel forum si affronta un problema per thread altrimenti diventa una chat...

    In ogni caso, dovresti provare a fare una ricerca prima, studiare i documenti che trovi e chiedere cosa non capisci dopo averli letti...
Devi accedere o registrarti per scrivere nel forum
4 risposte