[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()?