Newsgroup: it.comp.lang.c++
Titolo: [HELP] Classe

Salve a tutti :-)
Ho la seguente classe:
--------------------------
class tempo
{public:
    tempo(int o,int m);
    int dammiOre();
    int dammiMin();
    void sommaMin(int m);
    int minutiDa(tempo t);
private:
    int ore, minuti;
};
--------------------------
E ho il seguente problema:
"Un appuntamento è costituito da una data, un orario e un luogo; usando la
classe tempo per rappresentare la componente orario di un appuntamento,
realizzare in C++ la soluzione del seguente problema:
dati: un insieme di N appuntamenti, una data d, un orario o, e un valore m,
spostare in avanti di m minuti tutti gli appuntamenti con data = d, e orario
<= o."
Come si vede dalla classe, la "data" e il "luogo" non sono contenuti nella
classe "tempo".
Quindi mi sfugge come sia possibile "legare" una data a un orario in questo
modo...
Chiedo scusa se non sono chiaro, ma non è chiaro nemmeno a me, quindi... ;-)
Ora la domanda è: come faccio a risolvere il problema utilizzando la classe
esistente? Voi come fareste? Oppure non è possibile risolverlo senza
scrivere una nuova classe 'appuntamento' ? Grazie dell'eventuale aiuto,
spero il + dettagliato possibile ;-)
Ciao, sav ^_^
--
sav(at)
despammed.com

 wrote in message
news:xMU1a.162486$0v.45...@news1.tin.it...


private:
    int ore, minuti;
};
class data
{
public:
    data(int giorno, int mese, int anno);
    int dammiGiorno();
    int dammiMese();
    int dammiAnno
    void spostaData(int giorni); // negativi o positivi
    // un eventuale operatore di uguaglianza ti potra' servire...
private:
    int giorno, mese, anno;
};
#include <string> // se vuoi che il luogo sia una stringa
class appuntamento
{
public:
    appuntamento();
    init(data &d, tempo &t, std::string &luogo);
private:
    data gma; // giorno mese anno, ho poca fantasia
    tempo oms; // organizzazione mondiale sanita'? nooo
}
int main()
{
    const int N = 10; // per esempio
    data d(11, 2, 2003) // domani!
    tempo o(12, 0) // l'appuntamento a mezzodi' e' un classico
    int m = 30; // si sa che le donne tardano di mezz'ora...
    appuntamento agenda[N];
    // qui inizializzi tramite il metodo init la tua agenda di N elementi
con
    // date, tempi e luoghi a tua scelta, fai un bel for e vai
    spostaAppuntamenti(agenda, N, d, t, m);
    return 0;
}
Ciao
Maurus

 Maurus


Hai ragione non ero stato molto chiaro e c'erano errori di sintassi.
Eccoti uno scheletro da riempire:
#include <iostream>
#include <string> // se vuoi che il luogo sia una stringa
class tempo
{
public:
   tempo() {}
   tempo(int o,int m) : ore(o), minuti(m) {}
   int dammiOre() {return ore;}
   int dammiMin() {return minuti;}
   void sommaMin(int m) {/* da fare */}
   int minutiDa(tempo t) {int diff = 0; /* da fare */ return diff;}
   void Mostra() {std::cout << "Ore :" << ore
      << " Minuti :" << minuti << std::endl;}
private:
    int ore, minuti;
};
class data
{
public:
   data() {}
   data(int g, int m, int a) : giorno(g), mese(m), anno(a) {}
   int dammiGiorno() {return giorno;}
   int dammiMese() {return mese;}
   int dammiAnno() {return anno;}
   void spostaData(int giorni) {/* da fare */ } // negativi o positivi
   // un eventuale operatore di uguaglianza ti potra' servire...
   void Mostra() {std::cout << "Giorno :" << giorno << " Mese :"
      << mese << " Anno :" << anno << std::endl;}
private:
   int giorno, mese, anno;
};
class appuntamento
{
public:
   appuntamento() {}
   void init(data &d, tempo &t, std::string &l, std::string &p)
      { gma = d; oms= t; luogo = l; persona = p;}
   void SetData() {/* da fare */}
   void Settempo() {/* da fare */}
   void GetData(data &d) {/* da fare */}
   void Gettempo(tempo &t) {/* da fare */}
   void Mostra() {gma.Mostra(); oms.Mostra();
      std::cout << "Luogo :" << luogo << std::endl;
      std::cout << "Persona :" << persona << std::endl;}
private:
   data gma; // giorno mese anno, ho poca fantasia
   tempo oms; // organizzazione mondiale sanita'? nooo
   std::string luogo; // posti peccaminosi
   std::string persona; // posti peccaminosi
};
void spostaAppuntamenti(appuntamento* pApp, const int n, data &d, tempo &t,
int min)
{
}
// ti semplifico la vita con solo 2 date in agenda
int main()
{
    const int N = 2; // per esempio
    data d(12, 2, 2003); // domani!
    tempo o(23, 0); // l'appuntamento e' di notte con ...
    int m = 30; // si sa che le donne tardano di mezz'ora...
    data giornoPerCarmelina(12, 2, 2003); // siciliana
    data giornoPerBrigitta(12, 2, 2003); // teteska
    tempo oraPerCarmelina(20, 30); // a cena
    tempo oraPerBrigitta(12, 30); // a pranzo
    std::string luogoCarmelina = "Palemmmo";
    std::string luogoBrigitta = "Munich";
    std::string Carmelina = "Carmelina";
    std::string Brigitta = "Brigitta";
    appuntamento agenda[N];
    // il metodo init e' necessario in quanto non puoi costruire
    // passando parametri al costruttore se hai un array di oggetti
    agenda[0].init(giornoPerCarmelina, oraPerCarmelina, luogoCarmelina,
Carmelina);
    agenda[1].init(giornoPerBrigitta, oraPerBrigitta, luogoBrigitta,
Brigitta);
    agenda[0].Mostra();
    agenda[1].Mostra();
    spostaAppuntamenti(agenda, N, d, o, m);
    system("PAUSE");
    return 0;
}
Se qualcosa non e' chiaro chiedi pure
Maurus

 Maurus