Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 创建日历,输出格式问题_C++_C++11 - Fatal编程技术网

C++ 创建日历,输出格式问题

C++ 创建日历,输出格式问题,c++,c++11,C++,C++11,正在尝试为我在学校的实验室创建日历,需要一些帮助。我的程序可以很好地根据月份显示日期,如果是闰年或不是闰年。但它在显示日期和相应的日期时效果不佳。例如,我的输出如下: Jan 1996 --------------------------------- Sun Mon Tue Wed Thu Fri Sat 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 3

正在尝试为我在学校的实验室创建日历,需要一些帮助。我的程序可以很好地根据月份显示日期,如果是闰年或不是闰年。但它在显示日期和相应的日期时效果不佳。例如,我的输出如下:

Jan 1996
---------------------------------
Sun  Mon  Tue  Wed  Thu  Fri  Sat
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
如你所见,数字与日期不一致,我似乎无法正确地排列它们。我想了解这一点,所以如果有人能帮忙,请让我知道我做错了什么,而不是直截了当地告诉我答案

完整代码:

class Calendar {

public:
    int Year;
    int Month;
    int Day;
    string MonthNames[12] = { "Jan","Feb","March","April","May", "June","July", "August", "Sept","Oct","Nov","Dec" };
    string Name;
    string DayNames[7] = { "Sun", "Mon", "Tue", "Wed","Thu", "Fri", "Sat" };
    int AmountOfDays = 31; //base value

    void AskForDate() {

        cout << "Enter Year" << endl;

        cin >> Year;

        SetUpCalendarUI();
    }
    void SetUpCalendarUI()
    {
            if (LeapYear()) {
                SetDaysUI();
            }
            else {
                cout << "Not Leap year";
            }
        
        
    }
    bool LeapYear() {
        if (Year % 4 == 0 || Year % 400 == 0 && Year % 100 != 0) {
            return true;
        }
        else {
            return false;
        }
    }

    int ChangeAmountOfDays(int Month) {
            switch (Month) {

            case 1: return 31;
            case 2:
                if (!LeapYear()) {
                    return 28;
                }
                else {
                    return 29;
                }
            case 3: return 31;
            case 4: return 30;
            case 5: return 31;
            case 6: return 30;
            case 7: return 31;
            case 8: return 31;
            case 9: return 30;
            case 10: return 31;
            case 11: return 30;
            case 12: return 31;
            }
            return 0;

    }

    void SetDaysUI() {
        int i;

        //print out month names 1 by 1
        for (int k = 0; k < 12; k++) {
            AmountOfDays = ChangeAmountOfDays(k+1);
            cout << "\t" << MonthNames[k] << " " << Year << "\n";
            cout << "---------------------------------" << "\n";
            //print out days 1 by 1
            for (int DayOfWeek = 0; DayOfWeek < 7; DayOfWeek++) {
                cout << DayNames[DayOfWeek] << setw(5);
            }
            cout << "\n";

            //we want to set the amount of days == to the month. 
            //i = current Day put a space in between.
            //j = Total Amount of days
            for (i = 0; i < Day; i++)
                cout << "   ";
                for (int j = 1; j <= AmountOfDays; j++) {
                    cout << j << setw(3);

                    if (i++ > 5) {
                        i = 0;
                        cout << "\n";
                    }
                }
            
            if (i) {
                cout << "\n";
                Day = i;
            }
        }
        
        return;
    }

};
课程日历{
公众:
国际年;
整月;
国际日;
字符串MonthNames[12]={“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”};
字符串名;
字符串DayNames[7]={“Sun”、“Mon”、“Tue”、“Wed”、“Thu”、“Fri”、“Sat”};
int AmountOfDays=31;//基值
void AskForDate(){
过去一年;
SetUpCalendarUI();
}
void SetUpCalendarUI()
{
如果(LeapYear()){
SetDaysUI();
}
否则{

你能接近吗。
setw
需要在你要对齐的值之前使用。建议:用一个较小的程序练习对齐列,该程序只打印两行简单的预设数据。当你完成这项工作后,把你学到的知识应用到你的较大的程序中。@cigien真棒,谢谢!我把它对齐了p完美!@user4581301好的,我会试试这个,谢谢!有关此区域的更多示例代码: