Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema nella somma di date
Forum - C/C++ - Problema nella somma di date

Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 17:11
Martedì, 15/12/2009
ciao a tutti stò scrivendo un programma in programmazione ad oggetti dove devo fare la somma e la sottrazione di due date riceveute in ingresso e verificare se la data 1 inserita è compatibile(nel senso che posso usare un agenda di quell'anno per vdere che giorno è nella seconda data e che i due giorni devono coincidere)con la seconda.Ho un problema perchè non sò come trasformare la data dopo averla sommata, mi dareste una mano?e conoscete qualche funzione che mi dà che giorno della settimana era o sarà?adesso vi posto il codice grazie mille:

Codice sorgente - presumibilmente C++

  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class data
  6. {
  7.     public:
  8.        //costruttore
  9.        data(int =0,int = 0,int = 0);
  10.            
  11.        void setData();
  12.        void getData();
  13.       data operator+ (data d1);
  14.           data operator- (data d1);
  15.        
  16.     public:
  17.       int giorno;
  18.       int mese;
  19.       int anno;    
  20. };
  21. //File di definizione di classe data.cpp:
  22.  
  23.  
  24.  
  25.  
  26. data::data(int gg,int mm, int aa)
  27. {
  28. giorno = gg;
  29. mese = mm;
  30. anno = aa;  
  31. }
  32.  
  33. data data::operator +(data d1)
  34. {
  35.         data l;
  36.         l.giorno= giorno+d1.giorno;
  37.         l.mese=mese+d1.mese;
  38.         l.anno=anno+d1.anno;
  39.     return l;
  40. }
  41.        
  42. data data::operator -(data d1)
  43. {
  44.         data l;
  45.         l.giorno=giorno-d1.giorno;
  46.         l.mese=mese-d1.mese;
  47.         l.anno=anno-d1.anno;
  48.         return l;
  49. }
  50.  
  51. void data::setData()
  52. {
  53. int g,m,a;
  54.  
  55. do
  56.  {
  57.   cout << "Inserire il giorno: ";
  58.   cin >> g;    
  59.  }
  60.  while ( !(g >0 && g < 32))   ;        
  61.  giorno = g;
  62.  
  63. do
  64.  {
  65.   do
  66.   {
  67.   cout << "Inserire il mese: ";
  68.   cin >> m;    
  69.   }  
  70.   while( (m == 2 && giorno > 28) ||
  71.     (m==4||m==6||m==9 ||m==11 && giorno == 31));
  72.  }
  73.  while ( !(m >0 && m < 13))   ;        
  74.  mese = m;
  75.  
  76.  
  77. do
  78.  {
  79.   cout << "Inserire l'anno: ";
  80.   cin >> a;    
  81.  }
  82.  while ( !(a >1000 && a < 9999))   ;        
  83.  anno = a;}
  84.  
  85. void data::getData()
  86. {
  87. cout << "la data selezionata corrisponde a " << giorno
  88.       << '/' << mese << '/' << anno << endl;    
  89. }
  90. int main()
  91. {
  92.   //inizializza una data con valori di default
  93.   data d,d1;
  94.  
  95.   //setta la data
  96.   d.setData();
  97.   d1.setData();
  98.   //mostra la data in formato xx/xx/xxxx
  99.   d.getData();
  100.   d1.getData();
  101.   data ris=d1+d;//qui somma ma viene tipo 50/22/1994 come riportarlo ad un concetto di data?
  102.   cout<<ris.giorno<<"  "<<ris.mese<<"  "<<ris.anno<<endl;  
  103.   data dif;
  104.   if(d1.anno>=d.anno)
  105.   {
  106.           dif=d1-d;
  107.   }
  108.   else
  109.   {
  110.           dif=d-d1;
  111.   }
  112.   if(dif.giorno<0)
  113.   {
  114.           dif.giorno=0;
  115.   }
  116.   if(dif.mese<0)
  117.   {
  118.           dif.mese=0;
  119.   }
  120.   if(dif.anno<0)
  121.   {
  122.           dif.anno=0;
  123.   }
  124.  
  125.   cout<<dif.giorno<<"  "<<dif.mese<<"  "<<dif.anno<<endl;
  126.  
  127.  
  128.    
  129. system("PAUSE");
  130. return 0;
  131. }



:(

EDIT by HeDo: Titolo non corretto, non siamo al bar. "Ciao a tutti" non è plausibile in un titolo.

Ultima modifica effettuata da HeDo il 15/12/2009 alle 17:52
PM Quote