Ok così nella compilazione sembra andare :
codice:
#include <stdlib.h>
#include <iostream>
#define garray 100
#include "newfile.h"
using namespace std;
/*
 * 
 */
    struct libreria{
    char cognomea [24];
    char nomea [24];
    char nomel [24];
    int numl;
    int annol;
    };
int main(int argc, char** argv) {
    int nlibri,i;
struct libreria libro[garray];
    cout << "Inserire il numero di libri che si desidera memorizzare";
    cin >> nlibri;
    for(i=0;i<nlibri;i++){
        cout<<"Inserire il cognome dell'autore:"<<i+1<<endl;
    cin>>libro[i].cognomea;
    cout<<"Inserire il nome dell'autore del libro"<<i+1<<endl;
    cin>>libro[i].nomea;
    cout<<"Inserire il nome del libro "<<i+1<<endl;
    cin>>libro[i].nomel;
    cout<<"Inserire numero del libro "<<i+1<<endl;
    cin>>libro[i].numl;
    cout<<"Inserire l'anno del libro "<<i+1<<endl;
    cin>>libro[i].annol;
    };
    ordina(libro,nlibri);
    return (EXIT_SUCCESS);
}
codice:
void ordina(struct libreria libro[],int nlibri);
codice:
#include <iostream>
using namespace std;
void ordina(struct libreria libro[],int nlibri){
/*Qui sottoprogramma*/
};
Il tutto sembra funzionare , però quando provo a richiamare i valori della struttura non so bene come fare ( /*Qui sottoprogramma*/ ), se li inserisco:

cout <<libro[1].annol;

Mi da questo errore:

newfile.cpp:4: error: invalid use of undefined type `struct libreria'
newfile.cpp:3: error: forward declaration of `struct libreria'
newfile.cpp:4: error: invalid use of undefined type `struct libreria'
newfile.cpp:3: error: forward declaration of `struct libreria'

se ci provo a mettere :

cout <<libreria libro[1].annol;

Invece da questo :

newfile.cpp:4: error: expected primary-expression before "libro"
newfile.cpp:4: error: expected `;' before "libro"


Se mi risolvete questo ultimo prob. vi faccio un santino (dato che devo capirlo prima di un esame) ......