Ho modificato il codice in questo modo:
#include<iostream>
#define l 20
using namespace std;
void Campionato(struct Soc_Sportiva ar[l],int n,int max,int min);
int bilancio1 (struct Soc_Sportiva ar[l],int &p,int n);
struct Soc_Sportiva bilancio2 (struct Soc_Sportiva ar,int n,int j,struct Soc_Sportiva &ab[l]);
struct Soc_Sportiva{
char Nome_Squadra;
int punteggio;
long Capitale_Sociale;
};
int main(){
struct Soc_Sportiva *ab;
ab=new Soc_Sportiva[l];
struct Soc_Sportiva *ar;
ar=new Soc_Sportiva[l];
int n=0,max=0,min=0,j=0,p=0;
cout<<"Inserisci il numero delle societa' sportive"<<endl;
cin>>n;
for(int i=0;i<n;i++){
cout<<"Inserisci il carattere della squadra, il punteggio e il capitale"<<endl;
cin>>ar[i].Nome_Squadra;
cin>>ar[i].punteggio;
cin>>ar[i].Capitale_Sociale;
}
//Campionato(ar,n,max,min);
bilancio1 (ar,p,n);
bilancio2 (ar,n,j,ab);
system("pause");
return 0;
}
//E' Ricorsiva ma dovrebbe essere fatta in modo iterativo.
void Campionato(struct Soc_Sportiva ar[l],int n,int max,int min){
if(n==0){
cout<<"La squadra con il punteggio massimo e': "<<ar[max].Nome_Squadra<<endl;
cout<<"La squadra con il punteggio minore e': "<<ar[min].Nome_Squadra<<endl;
return;
}
if (ar[n-1].Capitale_Sociale<0){
cout<<"La squadra "<<ar[n-1].Nome_Squadra<<" E' in negativo"<<endl;
}
if (ar[n-1].punteggio>ar[max].punteggio){
max=n;
}
if(ar[n-1].punteggio<ar[min].punteggio){
min=n;
}
if(ar[n-1].Capitale_Sociale>5000000){
cout<<"La squadra "<<ar[n-1].Nome_Squadra<<" Ha un bilancio > di 5000000 di euro"<<endl;
}
return Campionato(ar,n-1,max,min);
}
int bilancio1 (struct Soc_Sportiva ar[l],int &p,int n){
for (int i=0;i<n;i++){
if(ar[i].Capitale_Sociale<0){
p+=1;
}
}
return(p);
}
struct Soc_Sportiva bilancio2 (struct Soc_Sportiva *ar,int n,int j,struct Soc_Sportiva &ab[l]){
for(int i=0;i<n;i++){
if(ar[i].Capitale_Sociale>5000000){
ab[j].Nome_Squadra=ar[i].Nome_Squadra;
ab[j].Capitale_Sociale=ar[i].Capitale_Sociale;
ab[j].punteggio=ar[i].punteggio;
j=j+1;
}
}
return(ab);
}
Risultato della compilazione:
6 C:\Users\\Desktop\Eserc P.Intercorso\Esame_Prova.cpp declaration of `ab' as array of references C:\Users\\Desktop\Eserc P.Intercorso\Esame_Prova.cpp In function `int main()':
29 C:\Users\\Desktop\Eserc P.Intercorso\Esame_Prova.cpp conversion from `Soc_Sportiva*' to non-scalar type `Soc_Sportiva' requested
29 C:\Users\\Desktop\Eserc P.Intercorso\Esame_Prova.cpp At global scope:
68 C:\Users\\Desktop\Eserc P.Intercorso\Esame_Prova.cpp declaration of `ab' as array of references
C:\Users\\Desktop\Eserc P.Intercorso\Esame_Prova.cpp In function `Soc_Sportiva bilancio2(Soc_Sportiva*, int, int)':
71 C:\Users\\Desktop\Eserc P.Intercorso\Esame_Prova.cpp `ab' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
Il problema continua ad essere la funzione bilancio2 :S