[C++] Problema con le struct tabelle!
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
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()?