2014-02-20 55 views
0

我正在尝试编写一个C++代码,用户输入一个日期,并输出使用John Conway的Doomsday算法登陆的日期。如何在另一个函数中访问一个函数中的变量?

我想访问变量z是在函数dayofthemonth中声明和定义的,并在称为dayoftheweek的函数中使用它。请记住,我对C++非常陌生,所以如果你能尽可能简单地回答,那将会有很大的帮助。下面的代码:

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



int dayofthemonth (int year, int month){   
    int z; 

    if ((year % 400 == 0 || year % 100 !=0) && (year % 4 == 0)){ //reference day of the month for leap years 
    cout << year << " is a leap year." << endl; 

    if (month == 1){ 
     cout << "The doomsday for month " << month << " is 4." << endl; 
     z = 4; 
    } 
    if (month == 2){ 
     cout << "The doomsday for month " << month << " is 1." << endl; 
     z = 1; 
    } 
    if (month == 3){ 
     cout << "The doomsday for month " << month << " is 0." << endl; 
     z = 0; 
    } 
    if (month == 4){ 
     cout << "The doomsday for month " << month << " is 4." << endl; 
     z = 4; 
    } 
    if (month == 5){ 
     cout << "The doomsday for month " << month << " is 9." << endl; 
     z = 9; 
    } 
    if (month == 6){ 
     cout << "The doomsday for month " << month << " is 6." << endl; 
     z = 6; 
    } 
    if (month == 7){ 
     cout << "The doomsday for month " << month << " is 11." << endl; 
     z = 11; 
    } 
    if (month == 8){ 
     cout << "The doomsday for month " << month << " is 8." << endl; 
     z = 8; 
    } 
    if (month == 9){ 
     cout << "The doomsday for month " << month << " is 5." << endl; 
     z = 5; 
    } 
    if (month == 10){ 
     cout << "The doomsday for month " << month << " is 10." << endl; 
     z = 10; 
    } 
    if (month == 11){ 
     cout << "The doomsday for month " << month << " is 7." << endl; 
     z = 7; 
    } 
    if (month == 12){ 
     cout << "The doomsday for month " << month << " is 12." << endl; 
     z = 12; 
    }  

} 

else{              //reference day of the month for non-leap years 
    cout << year << " is not a leap year." << endl; 

    if (month == 1){ 
     cout << "The doomsday for month " << month << " is 3." << endl; 
     z = 3; 
    } 
    if (month == 2){ 
     cout << "The doomsday for month " << month << " is 0." << endl; 
     z = 0; 
    } 
    if (month == 3){ 
     cout << "The doomsday for month " << month << " is 0." << endl; 
     z = 0; 
    } 
    if (month == 4){ 
     cout << "The doomsday for month " << month << " is 4." << endl; 
     z = 4; 
    } 
    if (month == 5){ 
     cout << "The doomsday for month " << month << " is 9." << endl; 
     z = 9; 
    } 
    if (month == 6){ 
     cout << "The doomsday for month " << month << " is 6." << endl; 
     z = 6; 
    } 
    if (month == 7){ 
     cout << "The doomsday for month " << month << " is 11." << endl; 
     z = 11; 
    } 
    if (month == 8){ 
     cout << "The doomsday for month " << month << " is 8." << endl; 
     z = 8; 
    } 
    if (month == 9){ 
     cout << "The doomsday for month " << month << " is 5." << endl; 
     z = 5; 
    } 
    if (month == 10){ 
     cout << "The doomsday for month " << month << " is 10." << endl; 
     z = 10; 
    } 
    if (month == 11){ 
     cout << "The doomsday for month " << month << " is 7." << endl; 
     z = 7; 
    } 
    if (month == 12){ 
     cout << "The doomsday for month " << month << " is 12." << endl; 
     z = 12; 
    }  

}  



} 

int doomsday (int year){   //reference day of the week 
    int a, b, c , d, e, x; 


    a = ((year/100) % 4); 
    b = (year % 100); 
    c = (b/12); 
    d = (b % 12); 
    e = (d/4); 

    x = ((c + d + e + (5*a) + 2) % 7); 

    if (x == 0){ 
    cout << "The doomsday for " << year << " is Sunday." << endl; 
    } 
    else if (x == 1){ 
    cout << "The doomsday for " << year << " is Monday." << endl; 
    } 
    else if (x == 2){ 
    cout << "The doomsday for " << year << " is Tuesday." << endl; 
    } 
    else if (x == 3){ 
    cout << "The doomsday for " << year << " is Wednesday." << endl; 
    } 
    else if (x == 4){ 
    cout << "The doomsday for " << year << " is Thursday." << endl; 
    } 
    else if (x == 5){ 
    cout << "The doomsday for " << year << " is Friday." << endl; 
    } 
    else if (x == 6){ 
    cout << "The doomsday for " << year << " is Saturday." << endl; 
    } 



} 

void dayoftheweek(int month, int day, int year}(

int r; 

cout << "You want to find out what day of the week " << month << "/" << day << "/" << year << " lies on." << endl; 

    doomsday(year); 


    r = (day - z) + 14;   //offset between the given day and the result of dayofthemonth function. 
    cout << r << endl; 


} 


int main(){ 

int year, month, day;  


cout << "Enter the year." << endl; 
cin >> year; 

cout << "Enter the month using numbers 1-12." << endl; 
cin >> month; 

cout << "Enter the day." << endl; 
cin >> day; 

dayoftheweek(month, day, year); 



system ("PAUSE"); 
return 0; 


} 
+0

int z;超出范围......你不能。 你必须改变执行:) – 2014-02-20 20:59:09

+0

为什么你不只是'返回z'? –

回答

1

你的函数有返回类型int但实际上并不返回任何值。返回z,然后将它作为参数传递给下一个函数。

+0

非常感谢!这有帮助! – Christie

1

另一种观察,这个函数int dayofthemonth (int year, int month)没有调用者。

可能是你应该改变的,

r = (day - z) + 14;

r = (day - dayofthemonth(year, month)) + 14; //提供这个函数返回z

+0

非常感谢!这工作! – Christie

+0

@ user3308118不客气。 –

0

如果您想在代码中的所有范围中使用一个变量,可以在主函数之前和“#include < ...>”和“using namespace ...”之后声明它。 但在使用这种方式时要小心,因为如果在代码中使用该变量2次或更多时间并且不使其成为0,您将看到错误的答案。因为如果你想在linux下编译你的代码“system(”pause“)”会给你一个错误。“我的代码在系统(”暂停“)中使用了”cin.get()“。

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

int z; 

void dayofthemonth (int year, int month) 
{ 

    z = 0; 
    if ((year % 400 == 0 || year % 100 !=0) && (year % 4 == 0)){ //reference day of the month for leap years 
    cout << year << " is a leap year." << endl; 

    if (month == 1){ 
     cout << "The doomsday for month " << month << " is 4." << endl; 
     z = 4; 
    } 
    if (month == 2){ 
     cout << "The doomsday for month " << month << " is 1." << endl; 
     z = 1; 
    } 
    if (month == 3){ 
     cout << "The doomsday for month " << month << " is 0." << endl; 
     z = 0; 
    } 
    if (month == 4){ 
     cout << "The doomsday for month " << month << " is 4." << endl; 
     z = 4; 
    } 
    if (month == 5){ 
     cout << "The doomsday for month " << month << " is 9." << endl; 
     z = 9; 
    } 
    if (month == 6){ 
     cout << "The doomsday for month " << month << " is 6." << endl; 
     z = 6; 
    } 
    if (month == 7){ 
     cout << "The doomsday for month " << month << " is 11." << endl; 
     z = 11; 
    } 
    if (month == 8){ 
     cout << "The doomsday for month " << month << " is 8." << endl; 
     z = 8; 
    } 
     if (month == 9){ 
     cout << "The doomsday for month " << month << " is 5." << endl; 
     z = 5; 
    } 
    if (month == 10){ 
     cout << "The doomsday for month " << month << " is 10." << endl; 
     z = 10; 
    } 
    if (month == 11){ 
     cout << "The doomsday for month " << month << " is 7." << endl; 
     z = 7; 
    } 
    if (month == 12){ 
     cout << "The doomsday for month " << month << " is 12." << endl; 
     z = 12; 
    } 

} 

else{              //reference day of the month for non-leap years 
    cout << year << " is not a leap year." << endl; 

    if (month == 1){ 
     cout << "The doomsday for month " << month << " is 3." << endl; 
     z = 3; 
    } 
    if(month == 2){ 
     cout << "The doomsday for month " << month << " is 0." << endl; 
    z = 0; 
    } 
    if (month == 3){ 
     cout << "The doomsday for month " << month << " is 0." << endl; 
     z = 0; 
    } 
    if (month == 4){ 
     cout << "The doomsday for month " << month << " is 4." << endl; 
     z = 4; 
    } 
    if (month == 5){ 
     cout << "The doomsday for month " << month << " is 9." << endl; 
     z = 9; 
    } 
    if (month == 6){ 
     cout << "The doomsday for month " << month << " is 6." << endl; 
     z = 6; 
    } 
    if (month == 7){ 
     cout << "The doomsday for month " << month << " is 11." << endl; 
     z = 11; 
    } 
    if (month == 8){ 
     cout << "The doomsday for month " << month << " is 8." << endl; 
     z = 8; 
    } 
    if (month == 9){ 
     cout << "The doomsday for month " << month << " is 5." << endl; 
     z = 5; 
    } 
    if (month == 10){ 
     cout << "The doomsday for month " << month << " is 10." << endl; 
     z = 10; 
    } 
    if (month == 11){ 
     cout << "The doomsday for month " << month << " is 7." << endl; 
     z = 7; 
    } 
    if (month == 12){ 
     cout << "The doomsday for month " << month << " is 12." << endl; 
     z = 12; 
    } 

} 



} 

void doomsday (int year) 
{   //reference day of the week 
    int a, b, c , d, e, x; 


    a = ((year/100) % 4); 
    b = (year % 100); 
    c = (b/12); 
    d = (b % 12); 
    e = (d/4); 

    x = ((c + d + e + (5*a) + 2) % 7); 

    if (x == 0) 
    cout << "The doomsday for " << year << " is Sunday." << endl; 
    else if (x == 1) 
    cout << "The doomsday for " << year << " is Monday." << endl; 
    else if (x == 2) 
    cout << "The doomsday for " << year << " is Tuesday." << endl; 
    else if (x == 3) 
    cout << "The doomsday for " << year << " is Wednesday." << endl; 
    else if (x == 4) 
    cout << "The doomsday for " << year << " is Thursday." << endl; 
    else if (x == 5) 
    cout << "The doomsday for " << year << " is Friday." << endl; 
    else if (x == 6) 
    cout << "The doomsday for " << year << " is Saturday." << endl; 
} 

void dayoftheweek(int month, int day, int year) 
{ 
int r; 
cout << "You want to find out what day of the week " << month << "/" << day << "/" << year << " lies on." << endl; 
doomsday(year); 
r = (day - z) + 14;   //offset between the given day and the result of  dayofthemonth function. 
cout << r << endl; 
} 


int main(){ 

int year, month, day; 


cout << "Enter the year." << endl; 
cin >> year; 

cout << "Enter the month using numbers 1-12." << endl; 
cin >> month; 

cout << "Enter the day." << endl; 
cin >> day; 

dayoftheweek(month, day, year); 


cin.get(); 
return 0; 


} 
相关问题