Estratto del documento

Programma principale

#include <iostream>

#include "es_4a_class.h" // classe punto

#include "es_5a_class.h" // classe rettaAB

using namespace std;

int main(){

rettaAB r1(3.0/2.0, 0);

punto p1(4,1),p2(5,0);

rettaAB r2(p1,p2);

cout << "\n\n--> Funzioni get:";

cout << "\n--> Retta 1: a = " << r1.get_a() << "; b = " << r1.get_b();

cout << "\n--> Retta 2 creata con i punti (4,1) e (5,0)";

cout << "\n--> Retta 2: a = " << r2.get_a() << "; b = " << r2.get_b() <<

endl; rettaAB r3(14,-4);

cout << "\n--> Funzioni set:";

cout << "\n--> Retta 3, prima: a = " << r3.get_a() << "; b = " <<

r3.get_b();

r3.set_a(10);

r3.set_b(2);

cout << "\n--> Retta 3, dopo: a = " << r3.get_a() << "; b = " <<

r3.get_b() << endl;

cout << "\n--> Intersezione tra r1 ed r2:\n--> ";

punto in = r1.intersezione(r2);

in.stampa();

cout << endl;

rettaAB ra(4,2), rb(4,2), rc(4,-1);

punto pb = ra.intersezione(rb), pc = ra.intersezione(rc);

cout << "\n--> Casi patologici:\n--> intersezione di una retta con se

stessa: ";

pb.stampa();

cout << "\n--> Intersezione di due rette parallele: ";

pc.stampa();

cout << "\n\n--> Fine.\n";

return 0;

}

es_5a_class.h

*******************************************

* es_5a_class.h *

*******************************************

#ifndef RETTA_AB

#define RETTA_AB

#include "es_4a_class.h" // senza questa non si puo' usare

// l'oggetto punto in questo header file!

// retta nella notazione y = ax + b

class rettaAB{

/* Una classe puo' avere piu' costruttori!

Anzi, in generale:

possono esistere ** piu' funzioni ** con lo STESSO NOME

purche' differiscano per (almeno uno tra):

  • Numero di argomenti
  • Tipi di argomenti
  • Tipo di dato di ritorno

fintanto che ci sono queste differenze, il compilatore sapra' sempre

come risolvere l'ambiguita'.

Quindi non ci sono problemi a scrivere:

...

retta(double, double);

retta(punto&, punto&);

(nota sulla '&': quando i due punti vengono passati al costruttore, se non

ci fosse

la '&' ne verrebbero fatte due copie temporanee - inutili in questo caso -

con dispendio di risorse, tempo e chiamate addizionali ai costruttori di

'punto').

Mettendo la '&' vengono passati al costruttore gli originali!

*/

public:

Anteprima
Vedrai una selezione di 1 pagina su 4
Programma c++ - Classe retta implementazione Pag. 1
1 su 4
Sintesi

Programma C++ (classe retta implementazione)

Il programma implementa una classe retta nel piano, che utilizza la classe punto.

La classe deve avere:

  • Due o tre data members (a seconda che si scelga di usare la rappresentazione y=ax+b o ax+by+c=0).
  • Il corrispondente costruttore con due o tre double in entrata.
  • Un costruttore con argomenti due oggetti di tipo punto (si costruisce la retta passante).
  • Tutte le funzioni "standard" get e set.
  • Una funzione che rende un oggetto punto rappresentante l'intersezione di due rette.
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi