'was not declared in this scope' error

c++

Solution

The scope of a variable is always the block it is inside. For example if you do something like

if(...)
{
     int y = 5; //y is created
} //y leaves scope, since the block ends.
else
{
     int y = 8; //y is created
} //y leaves scope, since the block ends.

cout << y << endl; //Gives error since y is not defined.

The solution is to define y outside of the if blocks

int y; //y is created

if(...)
{
     y = 5;
} 
else
{
     y = 8;
} 

cout << y << endl; //Ok

In your program you have to move the definition of y and c out of the if blocks into the higher scope. Your Function then would look like this:

//Using the Gaussian algorithm
int dayofweek(int date, int month, int year )
{
    int y, c;
    int d=date;

    if (month==1||month==2)
    {
         y=((year-1)%100);
         c=(year-1)/100;
    }
    else
    {
         y=year%100;
         c=year/100;
    }
int m=(month+9)%12+1;
int product=(d+(2.6*m-0.2)+y+y/4+c/4-2*c);
return product%7;
}

Problem

So I was writing this simple program to calculate the day of any date using the Gaussian algorithm found here. ``` #include <iostream> using namespace std; //Using the Gaussian algorithm int dayofweek(int date, int month, int year ){ int d=date; if (month==1||month==2) {int y=((year-1)%100);int c=(year-1)/100;} else {int y=year%100;int c=year/100;} int m=(month+9)%12+1; int product=(d+(2.6*m-0.2)+y+y/4+c/4-2*c); return product%7; } int main(){ cout<<dayofweek(19,1,2054); return 0; } ``` It's a very simple program and what's even more puzzling is the output. ``` :In function dayofweek(int, int, int)’: :19: warning: unused variable ‘y’ :19: warning: unused variable ‘c’ :21: warning: unused variable ‘y’ :21: warning: unused variable ‘c’ :23: error: ‘y’ was not declared in this scope :25: error: ‘c’ was not declared in this scope ``` It says that my variable is unused but then says that it isn't declared? Could anyone please tell me whats wrong.

Original source