[C++] Problema con le struct tabelle!

Alex7337
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.

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

Risposte
Super Squirrel
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?
scambia(a[i],a[j]);

Cosa si aspetta come argomenti la funzione scambia()?
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.
ordina(a,n);    // qui invece mi da l'errore "No matching function for call to 'ordina'"

Quanti argomenti si aspetta la funzione ordina()?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.