Getting an extremely different output but program is sound? HELP!

Hey guys, I've been reading articles and forum postings in this site. You guys are helpful and awesome!

So my code is about this...

"Design a class called Date. The class should store a date in three integers: month, day,
and year. There should be member functions to print the date in the following forms:
12/25/2012
December 25, 2012
25 December 2012
Demonstrate the class by writing a complete program implementing it.
Input Validation: Do not accept values for the day greater than 31 or less than 1. Do
not accept values for the month greater than 12 or less than 1."

My program runs without any errors but for some reason the "yy" output reads

"-858993460" which is so totally random, I have no idea why I am getting this output for yy even after I inputed what I really wanted.

Does anyone know why this happens or how I can solve this?

Thanks in advance!!

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
72
73
#include <iostream>
#include <string>

using namespace std;

class Date {
	int mm, dd, yy;
public:
	Date (int mm = 1, int dd = 18, int year = 1991)
	{
		Date::mm = mm;
		Date::dd = dd;
		Date::yy = yy;
	};
	void Date1(); 
	void Date2();
	void Date3();
};

string monthName[12] = {"January","Febuary","March","April","May","June","July","August","September","October","November","December"};

void Date::Date1(){ 
cout<<mm<<"/"<<dd<<"/"<<yy<<endl; 
} 

void Date::Date2(){ 
cout<<monthName[mm-1]<<" "<<dd<<","<<yy<<endl; 
} 

void Date::Date3(){ 
cout<<monthName[mm-1]<<" "<<dd<<" "<<yy<<endl; 
} 



int main() {
	int mm, dd, yy;

	cout<<"Date Program by Andrew A. \n";
	cout<<endl;

	do {
		cout<<"Enter Month:";
		cin>> mm;
	}while (mm<1 || mm>12);

	do {
		cout<<"Enter Date:";
		cin>> dd;
	}while (dd<1 || dd>31);

	do {
		cout<<"Enter Year:";
		cin>> yy;
	}while (yy<1 || yy>3000);

	cout<<endl;
	std::cout<<"Here you go!"<<std::endl;
	cout<<endl;

	Date newDate(mm, dd, yy);
	newDate.Date1();
	newDate.Date2();
	newDate.Date3();
	
	//std::cout<<mm<<"/"<<dd<<"/"<<yy<<std::endl;
	//std::cout<<monthName[mm-1]<<" "<<dd<<", "<<yy<<std::endl;
	//std::cout<<dd<<" "<<monthName[mm-1]<<" "<<yy<<std::endl;

	cin.ignore();
	cin.get();
	return 0;
}
Date::yy = yy; should be Date::yy = year;

I rocomend giving your variables different names

for example
1
2
3
4
5
6
	Date(int newmm = 1, int newdd = 18, int newyy = 1991)
	{
		mm = newmm;
		dd = newdd;
		yy = newyy;
	};
Last edited on
yy is never given a specific value, -858993460 is just a random garbage value. The problem is in your constructor. You are passing in a variable named "year" and you then try to assign Date::yy to "yy". See the problem?

1
2
3
4
5
6
Date (int mm = 1, int dd = 18, int year = 1991)
{
	Date::mm = mm;
	Date::dd = dd;
	Date::yy = yy;
};
hey guys I got the program to work! my problem was I my variables were inconsistent. I changed "year" to yy and the original INT to "month", "date", and "year".

1
2
3
4
5
6
7
8
class Date {
	int mm, dd, yy;
public:
	Date (int month = 1, int day = 18, int year = 1991)
	{
		mm = month;
		dd = day;
		yy = year;


thanks for the help.
Topic archived. No new replies allowed.