/* FILE: complessi2.cpp last change: 12-Mar-2001 * Realizzazione del tipo di dato Numero Complesso * Seconda versione: Utilizzo del costrutto struct * e introduzione del costruttore */ #include #include // Struttura dati per rappresentare un numero complesso struct complex { float p_r; // Parte Reale float p_i; // Parte Immaginaria // Metodi che realizzano l'interfaccia esterna complex(float r, float i); // Costruttore complex(); // Costruttore vuoto ~complex(); void set(float r, float i); // "Assegnamento" di un nuovo valore float norma(); // Norma del numero complesso void stampa(); // Output su terminale }; main() { complex z1(1.0, -2.5); // Dichiaro un numero complesso e lo // inizializzo: accedo alle variabili istanza complex z2; // Dichiaro un'altro numero complesso z2.set(-1.414, 1.414); // Inizializzo z2 utilizzando la funzione set // Calcoliamo la norma del secondo numero cout << "La norma di "; z2.stampa(); cout << " e` " << z2.norma() << endl; cout << "Stampiamo z1: "; z1.stampa(); cout << endl; // Assegno dei nuovi valori z1.set(3.33, -4.44); // ATTENZIONE: posso manipolare direttamente le variabili istanza // dell'oggetto cout << "Posso stampare z1 come: " << z1.p_r << "+ i " << z1.p_i << endl; z1.p_r += 7; cout << "Stampiamo nuovamente z1 dopo aver modificato la sua parte reale: "; z1.stampa(); cout << endl; } // Costruttore di numero Complesso assegnando parte reale ed immaginaria complex::complex(float r, float i) { p_r = r; p_i = i; } // Costruttore di numero Complesso: inizializzazione di default a 0 complex::complex() { p_r = 0.0; p_i = 0.0; } // Distruttore di numero Complesso complex::~complex() { cout << "Distruggo il numero complesso: "; stampa(); cout << endl; } // Assegna dei nuovi valori ad un numero Complesso void complex::set(float r, float i) { p_r = r; p_i = i; } // Restituisce la norma di un numero Complesso float complex::norma() { return(sqrt((p_r * p_r) + (p_i * p_i))); } // Funzione per la stampa di un numero Complesso void complex::stampa() { cout << p_r; if (p_i >= 0) cout << " + " << p_i; else cout << " - " << -p_i; cout << " i"; }