edutecnica

Esercizio 7       

Scrivi un programma per manipolare stringhe e numeri che implementi un metodo somma() che chiamato in questi modi:
somma(2,3)
restituisce in output 5.
somma("coco","nut") restituisce in output 'coconut'.
Il programma deve essere costituito da tre classi la classe O (operazione) che implementa i metodi per la manipolazione dei dati e le due classi derivate dalla classe O; N, per l'acquisizione e la restituzione di numeri e la classe S per l'acquisizione e la restituzione di stringhe.


#include<iostream>
#include<string.h>
using namespace std;

class O {
protected:
int num;
char s[32];
public:
void somma(int h){num+=h;}
void somma(char *h){strcat(s,h);}
};//fine classe O

class N:public O{
public:
void setnum(int x){num=x;}
int getnum(){return num;}
}; //fine classe N

class S:public O{
public:
void sets(char *st){
strcpy(s,st);
}
char* gets(){return s;}
};//fine classe S

main(){
int numero;
char *str;
//_____coi numeri
N n1,n2;
cout << "inserisci n1:";cin >> numero; n1.setnum(numero);
cout << "inserisci n2:";cin >> numero; n2.setnum(numero);
n1.somma(n2.getnum());
cout << n1.getnum() << endl;
//______con le stringhe
S s1,s2;
cout << "inserisci s1:";cin >> str; s1.sets(str);
cout << "inserisci s2:";cin >> str; s2.sets(str);
s1.somma(s2.gets());
cout << s1.gets() << endl;
}//____fine main

La classe base si caratterizza per la presenza dei due metodi: somma(int h) e somma(char *h) che si differenziano solo per la firma (overload di metodi) .
Data la brevità del codice, abbiamo scelto di non applicare la funzione dell'operatore di visibilità (::).