Ho questo programmano del quale allego solo in .cpp perchè il .h non è importante:

Versione coi puntatori:

codice:
#include <iostream.h>
#include "puntatori.h"

void main()
{
	libro *biblio[10];
	for(int i=0; i<10; i++)
	{
		biblio[i] = new (libro);
	}
	int n, i, tipoop, quale;

	// Input dati dei libri

	cout << "\nQuanti libri (max 10)? ";
	cin >> n;
	while(cin.get()!='\n');
	
	n = (n>10 ? 10 : n); //Al massimo 10 libri
	
	for (i=0;  i<n;  i++)
	{
		cout << "\nLibro n. " << (i+1) << " ";
		biblio[i]->registra();
	}

	// Gestione prestiti libri

	for( ; ; )
	{
		cout << "\n1 - prestito";
		cout << "\n2 - restituzione";
		cout << "\n0 - fine";
		cout << "\nOperazione ? ";
		cin >> tipoop;
		if(!tipoop)
			break;
		cout << "\nQuale libro (1," << n << ")? ";
		cin >> quale;
		quale = (quale>n ? n : quale); //Al massimo il libro numero 10
		quale--; //L'Array va da 0 a 9

		biblio[quale]->infoLibro();
		if (tipoop==1)
		{
			if (!biblio[quale]->pEffettuato())
				cout << "\nLibro gia' prestato";
			else
				cout << "\nPrestito effettuato";
		}
		else
		{
			if (!biblio[quale]->lRitornato())
				cout << "\nLibro gia' presente";
			else
				cout << "\nRestituzione effettuata";
		}
	}
}
Versione senza puntatori:

codice:
#include <iostream.h>
#include "puntatori.h"

void main()
{
	libro biblio[10];
	int n, i, tipoop, quale;

	// Input dati dei libri

	cout << "\nQuanti libri (max 10)? ";
	cin >> n;
	while(cin.get()!='\n');
	
	n = (n>10 ? 10 : n); //Al massimo 10 libri
	
	for (i=0;  i<n;  i++)
	{
		cout << "\nLibro n. " << (i+1) << " ";
		biblio[i].registra();
	}

	// Gestione prestiti libri

	for( ; ; )
	{
		cout << "\n1 - prestito";
		cout << "\n2 - restituzione";
		cout << "\n0 - fine";
		cout << "\nOperazione ? ";
		cin >> tipoop;
		if(!tipoop)
			break;
		cout << "\nQuale libro (1," << n << ")? ";
		cin >> quale;
		quale = (quale>n ? n : quale); //Al massimo il libro numero 10
		quale--; //L'Array va da 0 a 9

		biblio[quale].infoLibro();
		if (tipoop==1)
		{
			if (!biblio[quale].pEffettuato())
				cout << "\nLibro gia' prestato";
			else
				cout << "\nPrestito effettuato";
		}
		else
		{
			if (!biblio[quale].lRitornato())
				cout << "\nLibro gia' presente";
			else
				cout << "\nRestituzione effettuata";
		}
	}
}
Va bene la versione coi puntatori come l'ho fatta io?

E' più veloce secondo voi nel caso di un programma di più grosse dimensioni?