Help me with this POO please(iii)

There appear the following errors in the "error list":

Error 5 error C2371: 'date::add' : redefinition; different basic types line 25
Error 4 error C2556: 'int date::add(int,date)' : overloaded function differs only by return type from 'date date::add(int,date)' line 25
Error 3 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int line 25


And the algoritm is the following one:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//date.h
#include <iostream>
using namespace std;

class date
{
	int day, month, year;
public:
	//void insertData (void);
	date(){day=month=1;year=1900;}
	date(int x,int y,int z);
	date add(int cant,date d);
	void Prt()
	{
		cout<< "Date: " << day <<" \ "<<month<<" \ "<<year<<".";
	};
};



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//#include "date.h"
#include "date.h"

/*
//day, month, year.
date::insertData(void)
{
	cout<<"Day: ";
	cin >> day;
	cout<<"\nMonth: ";
	cin >> month;
	cout<<"\nYear: ";
	cin >>year;
}
*/

//a.day;a.month;a.year;
date::date(int x,int y,int z) 
{
day = x; month = y; year  = z;
}



date::add(int cant,date d)
{
	date aa;
	
	int bq =0;
	int bbqq = 0;
	int day = 0;
	int month = 0;
	int year  = 0 ;

	//day
	if ((d.day + cant )> 30)
	{
		bq = (d.day + cant) % 30;
		month = ((d.day / 30) - bq);//número de meses
		day = (d.day +(cant-(30 * month)));
		if (day > 30)
		{
			aa.day = day - 30;
			month += 1;
		}
		else
		{
			aa.day = day;
		}
	}
	//month
	if ((d.month + month) > 12)
	{
		bbqq = (d.month + month) % 12;
		year = ((d.month / 12)-bbqq); //número de años
		month = (d.month + (month-(12*year)));
		if (month >12)
		{
			aa.month = month - 12;
			year += 1;
		}
		else
		{
			aa.month = month;
		}
	}
	//year
	aa.year = d.year + year;

	return aa;
}



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//main.cpp
#include "date.h"

void main()
{
//DECLARACIÓN DE VARIABLES Y OBJETOS
date d3,d4;
int cant = 0;
int a = 0;
int b = 0;
int c = 0;
int e = 0;
int f = 0;
int g = 0;
cout<<"Inserte fecha (estilo dd/mm/aaaa) :";
cin>>a;
cout<<"/";
cin>>b;
cout<<"/";
cin>> c;
cout<<endl;

system("cls");

cout<<"Inserte fecha (estilo dd/mm/aaaa) :";
cin>>e;
cout<<"/";
cin>>f;
cout<<"/";
cin>>g;
cout<<endl;

system("cls");

date d1(a,b,c);
date d2(e,f,g);
cout<<"Días a sumar = ";
cin>> cant;

system("cls");

d1.Prt();
d2.Prt();
cout <<"Sumandole al primero los "<<cant<<" dias \n";
d3.add(cant,d1);
d3.Prt();
cout <<"Sumandole al segundo los "<<cant<<" días \n";
d4.add(cant,d2);
d4.Prt();
cout<<"THE END";
}


.
Last edited on
I can't find nothing
You forgot return type on line 25, exactly what your compiler is telling you
"MiiNiPaa", OK, but it wasn't all the question ... ¬¬

//date.h
#include <iostream>
using namespace std;

class date
{
int day, month, year;
public:
//void insertData (void);
date(){day=month=1;year=1900;}
date(int x,int y,int z);
date add(int cant,date d);
void Prt()
{
cout<< "Date: " << day <<" / "<<month<<" / "<<year<<".";
};
};


//date.cpp
#include "date.h"

/*
//day, month, year.
date::insertData(void)
{
cout<<"Day: ";
cin >> day;
cout<<"\nMonth: ";
cin >> month;
cout<<"\nYear: ";
cin >>year;
}
*/

//a.day;a.month;a.year;
date::date(int x,int y,int z)
{
day = x; month = y; year = z;
}

date date::add(int cant,date d)
{
date aa;
aa = d;
int bq =0;
int bbqq = 0;

//day
if ((d.day + cant )> 30)
{
aa.day = (d.day + cant) % 30;//Cantidad de días
bq = (d.day + cant)/30;//llevadas para los meses
/*NOTA: Nos aprobechamos del defecto de c++
para redondear a la baja cuando son variables int*/
if ((d.month + bq)>12)
{
aa.month = (d.month + bq) % 12;//Cantidad de meses
bbqq = (d.month + bq)/ 12; //llevadas para los años
aa.year = d.year + bbqq;
}
else
{
aa.month = d.month + bq;
aa.year = d.year;
}
}
else
{
aa.day = d.day + cant;
aa.month = d.month;
aa.year = d.year;
}

return aa;
}



//main.cpp
#include "date.h"

int main()
{
//DECLARACIÓN DE VARIABLES Y OBJETOS
int cant1 = 0;
int cant2 = 0;
int a = 0;
int b = 0;
int c = 0;
int e = 0;
int f = 0;
int g = 0;
cout<<"Inserte primera fecha (estilo dd/mm/aaaa) :";
cin>>a;
cout<<"/";
cin>>b;
cout<<"/";
cin>> c;
cout<<endl;

system("cls");
if ((a>30)||(b>12))
{
cout << " QUE TE JODAN!!! ";
exit(0);
}

cout<<"Inserte segunda fecha (estilo dd/mm/aaaa) :";
cin>>e;
cout<<"/";
cin>>f;
cout<<"/";
cin>>g;
cout<<endl;

system("cls");

if ((e>30)||(f>12))
{
cout << " QUE TE JODAN!!! ";
exit(0);
}

date d1(a,b,c);
date d2(e,f,g);
cout<<"Dias a sumar en la primera = ";
cin>> cant1;
cout<<"Dias a sumar en la segunda = ";
cin>> cant2;

system("cls");

d1.Prt();
cout<<endl;
d2.Prt();
cout<<endl;
cout <<"Sumandole al primero los "<<cant1<<" dias \n";

//AQUÍ VIENE LA OPERACIÓN
date d3 = d1.add(cant1,d1);
d3.Prt();
cout<<endl;
cout <<"Sumandole al segundo los "<<cant2<<" dias \n";
date d4 = d1.add(cant2,d2);
d4.Prt();
cout<<endl;
cout<<"THE END";
}
Topic archived. No new replies allowed.