[C++] Problema con le struct tabelle!

Messaggioda Alex7337 » 27/08/2019, 19:51

Salve ragazzi sono alle prime armi con questi argomenti e non capisco gli errori che mi da il compilatore riguardo questo semplice esercizio che ti chiede semplicemente di creare una tabella per una struct di dischi e di visualizzarli ordinati secondo l'anno.

Codice:
 int n;  //numero di dischi

void scambia(int& a,int& b){
    int tmp;
    tmp = a;
    a = b;
    b = tmp;
   
}

void ordina (int dischi a[]){   // qui dice che manca una parentesi tonda, "Expected ')'"
   
    for(int i=0; i<n; i++){
        for(int j=i+1; j<n; j++){
            if(a[i].anno<a[j].anno){  // un altro errore :" Use of undeclared identifier 'a' "
                scambia(a[i],a[j]);
            }
        }
    }
   
   
}

struct dischi{
    string nome;
    int anno;
};

int main() {
   
    cout<<"quanti dicshi possiedi ? ";
    cin>>n;
    dischi a[n];
   
    // carico la tabella
    for(int i=0; i<n; i++){
        cout<<" nome del disco : ";
        cin>>a[i].nome;
        cout<<" anno di uscita : ";
        cin>>a[i].anno;
    }
    // ordino la tabella
    ordina(a,n);    // qui invece mi da l'errore "No matching function for call to 'ordina'"
    // visualizzo tabella ordinata
    for(int i=0; i<n; i++){
        cout<<a[i].anno<<endl;
        }
    return 0;
}
Alex7337
New Member
New Member
 
Messaggio: 24 di 61
Iscritto il: 25/01/2019, 16:42

Re: [C++] Problema con le struct tabelle!

Messaggioda Super Squirrel » 28/08/2019, 00:35

Codice:
void ordina (int dischi a[]){   // qui dice che manca una parentesi tonda, "Expected ')'"

Qui ci sono due errori:
- qual è il tipo di a?
- cosa rappresenta l'identificatore dischi a quel punto del codice?
Codice:
scambia(a[i],a[j]);

Cosa si aspetta come argomenti la funzione scambia()?
Codice:
dischi a[n];

Secondo lo standard del C++, la dimensione di un array statico deve essere una costante. Una soluzione potrebbe essere quella di fissare una dimensione massima N per poi chiedere all'utente di inserire un valore n<=N.
Codice:
ordina(a,n);    // qui invece mi da l'errore "No matching function for call to 'ordina'"

Quanti argomenti si aspetta la funzione ordina()?
Chi dorme in democrazia, si sveglia in dittatura.
Super Squirrel
Senior Member
Senior Member
 
Messaggio: 376 di 1486
Iscritto il: 16/05/2013, 22:05


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite