Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894

    [C++] Domanda sui puntatori

    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?


  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Up ragazzi! Per voi sarà sicuramente facile! :tongue:

  3. #3
    Sicuramente la seconda. Fosse solo per tutte le chiamate in meno che devi fare a new, ma anche perche' lavorare sullo stack e' più veloce che lavorare sull'heap.

    bye
    There are 10 kinds of people in the world: who knows the binary numeration and who not

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Quindi la versione che fa uso dei puntatori alla classe è più lenta...


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.