Как получить доступ к переменной в одной функции в другой функции? [Дубликат]

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; выходит за рамки ... вы не можете. Вы должны изменить реализацию :)
  • 0
    Почему бы тебе просто не return z ?
Теги:
function

3 ответа

1

Другое наблюдение. Эта функция int dayofthemonth (int year, int month) не имеет вызывающего абонента.

Может быть, вы должны измениться,

r = (day - z) + 14; в

r = (day - dayofthemonth(year, month)) + 14; // если эта функция возвращает z.

  • 0
    Спасибо вам большое! Это сработало!
  • 0
    @ user3308118 Пожалуйста.
1

Ваши функции имеют тип возвращаемого значения int но фактически не возвращают какое-либо значение. Верните z, а затем передайте его в следующую функцию в качестве аргумента.

  • 0
    Большое спасибо! Это помогло!
0

если вам нужен простой способ использовать одну переменную во всех областях вашего кода, вы можете объявить ее перед основной функцией и после "#include <...>" и "using namespace...". но будьте осторожны, когда вы используете этот путь, потому что, если вы используете эту переменную 2 или более раз в своем коде и не делаете ее 0, вы увидите неправильные ответы. и, наконец, я использовал "cin.get()" в моем коде, установленном в "system (" pause ")", потому что, если вы хотите скомпилировать свой код в Linux, система ("pause") даст вам сообщение об ошибке.

#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;


}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню