各位,请问日期+1有简便方案吗?

问题遇到的现象和发生背景

求日期+1后的新日期

问题相关代码,请勿粘贴截图
#include <iostream>
using namespace std;
int n,b,b1,r,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
    cin>>n>>b>>r;
    if((n%100!=0&&n%4==0)||(n%400==0))
    {
    a[1]=29;
    }
    b1=a[b-1];
    if(r<b1)
    {
    r++;cout<<n<<"-"<<b<<"-"<<r;
    return 0;
    }
    if(r==b1) 
    {
    if(b<12) 
    {                 
    b++,r=1;cout<<n<<"-"<<b<<"-"<<r; 
             return 0;
    } 
    if(b==12)
    {
    n++,b=1,r=1;cout<<n<<"-"<<b<<"-"<<r;
     return 0;
    }
    }
    if(r>b1)
    {
    cout<<"您输入的不是一个正确的日期";//界面友好
    }
    return 0;                              
}
运行结果及报错内容
我的解答思路和尝试过的方法

数组法,存日期

我想要达到的结果

更简便

先判断日期是否合法,合法的话,日期+1,然后跟数组a进行比较,如果大于a[b-1],就把b+1,如果b+1大于12,就把n+1
参考如下:

#include <iostream>
using namespace std;
int n,b,b1,r,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
    cin>>n>>b>>r;
    if((n%100!=0&&n%4==0)||(n%400==0))
    {
        a[1]=29;
    }
    if(b>12 || b<1 || r<1 || r>a[b-1])
        cout << "输入的日期不合法"<<endl;
    else
    {
        r++; //日期加1
        if(r > a[b-1])
        {
            r = 1;
            b++; //月份+1
        }
        if(b>12)
        {
            n++; //年+1
            b = 1;
        }
        cout << n <<"-"<<b<<"-"<<r<<endl;
    }
    return 0;                              
}