Numero esercizio | Descrizione |
ESERCIZIO 1 | conversione di coordinate da cartesiane a polari mediante l'uso di costruttori e distruttori |
ESERCIZIO 2 | gestione della visualizzazione dell'ora attraverso costruttori e distruttori |
#include <iostream.h>
#include <math.h>class cartpolar
{
private:
double cor_x, cor_y;
double cor_r, cor_a;
public:
cartpolar();
cartpolar(double, double, int);
~cartpolar();
void stampa();};
/* Il primo costruttore, come si puo' vedere, inizializza gli attributi della classe a 0. */
cartpolar::cartpolar()
{
cor_x=0;
cor_y=0;
cor_r=0;
cor_a=0;
cout << "Sono il costruttore senza parametri" << endl;}
/* Il secondo costruttore riceve come parametri 2 coordinate e un char. Se il carattere "sc" e' pari a "p" allora il costruttore trsforma le coordinate passate in polari. Se invece e' pari a "c" le trasforma in cartesiane. */
cartpolar::cartpolar(double x, double y, int sc)
{
cout << "-" << sc << "-" << endl;
if (sc == 1)
{
/* Trasformazione da cartesiana a polare*/
cor_r=sqrt((x*x)+(y*y));
cor_a=atan2(y,x);
cor_x=x;
cor_y=y;}
else
{
if (sc == 2)
{
/* Trasformazione da polare a cartesiana*/
cor_x=(x*cos(y));
cor_y=(y*cos(y));
cor_r=x;
cor_a=y;}
else
cout << "La scelta non vale" << endl;
}
cout << "Sono il costruttore con la scelta tra coordinate " << endl;}
cartpolar::~cartpolar() {}
void cartpolar::stampa()
{
cout << "La coordinata cartesiana x: " << cor_x << endl;
cout << "La coordinata cartesiana y: " << cor_y << endl;
cout << "La coordinata polare r: " << cor_r << endl;
cout << "La coordinata polare a: " << cor_a << endl;}
/* Nel main il primo costruttore crea l'oggetto coordinate, successivamente ne vengono stampati gli attributi per poi essere distrutto.
Il secondo costruttore crea un'altro oggetto con lo stesso nome del precedente a cui vengono passate le coordinate inserite dall'utente e la scelta di trasformazione delle coordinate da cartesiane a polari e viceversa */
void main()
{
double prima_coord, sec_coord;
int scelta;
cartpolar* coordinate;{
coordinate = new cartpolar();
coordinate->stampa();}
cout << "Inserisci la prima coordinata: "<< endl;
cin >> prima_coord;
cout << "Inserisci la seconda coordinata: "<< endl;
cin >> sec_coord;
cout << "Vuoi le coordinate polari (digita 1) o quelle cartsiane (digita 2)? ";
cin >> scelta;
coordinate = new cartpolar(prima_coord, sec_coord, scelta);/* La funzione stampa visualizza a monitor il valore e gli attributi dell'oggetto */
coordinate->stampa();}
/* Il programma realizza la gestione di un orario attraverso l'uso di classi. In particolare si ha una classe caratterizzata da 4 costruttori ciascuno dei quali setta l'oriaro in modo diverso.*/
#include <iostream.h>
#include <string>
#include <stdlib.h>class time
{
private:
int ore, minuti, secondi;
public:
time(int, int, int);
time(char*);
time(time*, int, int, int);
time(float);
~time();
void stampa();};
/* Questo costruttore prende in ingresso dei valori interi e li assegna alle varibili private della classe.*/
time::time (int h, int m, int s)
{
ore = h;
minuti = m;
secondi = s;}
/* Questo costruttore shifta l'ora gia' memorizzata in un altro oggetto della stessa classe e il nuovo orario viene memorizzato in un nuovo oggetto. */
time::time (time* t, int h, int m, int s)
{
t->ore+= h;
t->minuti+= m;
t->secondi+= s;}
/* Quest'ultimo costruttore genera un nuovo oggetto della classe time settando i valori di ore e minuti dal float passato per argomento. */
time::time (float num)
{
int intero;
float deci;
intero=(int)num;
deci=num-intero;
ore=intero-(24*((int)(intero/24)));
minuti=(int)(60*deci);
secondi=0;}
/* Questo costruttore, invece, prende in ingresso una stringa del formato oo:mm:ss e, ricavandone i valori numerici di ora minuti e secondi, li memorizza nelle variabili private della classe. */
time::time (char* orario)
{
char* ch;
int value=0;
ch=strtok(orario,":");
ore=atoi(ch);
ch=strtok(0,":");
minuti=atoi(ch);
ch=strtok(0,":");
secondi=atoi(ch);}
time::~time () {}
void time::stampa()
{
cout << "L'ora: " << ore << endl;
cout << "I minuti: " << minuti << endl;
cout << "I secondi: " << secondi << endl;}
void main ()
{
float num;
time* now;
time* now1;
char *line;
line = new char[128];
int hour=0;
int minute=0;
int second=0;
int scelta;
cout << "Vuoi inserire dei valori per l'ora? (1=yes, 2=no) ";
cin >> scelta;
if (scelta==1)
{
cout << "Inserisci l'ora: ";
cin >> hour;
cout << "Inserisci i minuti: ";
cin >> minute;
cout << "Inserisci i secondi: ";
cin >> second;}
{
now = new time(hour, minute, second);
now->stampa();}
{
cout << "inserisci un orario (es: 02:15:07): ";
cin >> line;
now = new time(line);
now->stampa();
cout << "inserisci l'incremento dell'ora: ";
cin >> hour;
cout << "inserisci l'incremento dei minuti: ";
cin >> minute;
cout << "inserisci l'incremento dei secondi: ";
cin >> second;
now1=new time(now, hour, minute, second);
now1->stampa();
}
{
cout << "inserisci un numero float: ";
cin >> num;
now = new time(num);
now->stampa();}
}