NextDate问题

Posted zhouqianwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NextDate问题相关的知识,希望对你有一定的参考价值。

给出一个年月日,求其下一天是否存在,使用driver函数从文件中读取数据数据格式为“%d-%d-%d”

代码如下

//
//  main.cpp
//  Data
//
//  Created by 周谦炜 on 2019/11/5.
//  Copyright © 2019 周谦炜. All rights reserved.
//

#include <iostream>
#include <vector>
#include <fstream>
#include <stdio.h>
#include <string.h>
#include <cstring>

using namespace std;


vector<string> trans(string data){
    vector<string> res;
    char tem[data.length()+1];
    strcpy(tem, data.c_str());
    char* pch =strtok(tem,"-");
    while(pch)
    {
        res.push_back(string(pch));
        pch = strtok(NULL, "-");
    }
    return res;
}


string NextDate(string data){
    vector<string> res=trans(data);
    if (res.size()!=3) {
        return "日期格式错误。";
    }
    int year=atoi(res[0].c_str());
    int month=atoi(res[1].c_str());
    int day=atoi(res[2].c_str());
    bool isspcyear=((year%4==0)&&(year%100!=0))||(year%400==0);
    int datatime[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    if(year<1900||year>2200){
        return "日期年份错误。";
    }else if (month<1||month>12){
        return "日期月份错误。";
    }else if (day>datatime[month-1]||day<1){
        return "日期日错误。";
    }
    else if (month==2){
        if (!isspcyear) {
            if (month==2&&day==29) {
                return "日期日错误。";
            }
        }
    }
    day++;
    if (month==2) {
        if (isspcyear) {
            if (day>29) {
                month=3;
                day=1;
            }
        }
        else{
            if (day>28) {
                month=3;
                day=1;
            }
        }
    }else{
        if (day>datatime[month-1]) {
            month++;
            day=1;
            if (month>12) {
                month=1;
                year++;
            }
        }
    }
    
    char res_num[50];
    sprintf(res_num,"%d-%d-%d",year,month,day);
    return string(res_num);
}

void driver(){
    ifstream fin;
    fin.open("/测试用例.txt");  //保存测试用例
    ofstream fout;
    fout.open("/测试结果.txt");  //保存测试结果
    string temp1,temp2;
    int i=0;
    
    fout << "输入		结果		预期结果		预期是否正确"<< endl;
    while (fin >> temp1) {
        if (i%2==0) {
            fout << temp1 << "	" << NextDate(temp1) << "	";
            temp2=NextDate(temp1);
        }
        else{
            fout << temp1 <<  "	";
            if (temp2==temp1) {
                fout << "正确";
            }
            else{
                fout << "错误";
            }
            fout << "
";
        }
        i++;
    }
    
    fin.close();
    fout.close();
}


int main(int argc, const char * argv[]) {
    driver();
    return 0;
}

 

以上是关于NextDate问题的主要内容,如果未能解决你的问题,请参考以下文章

第4次作业类测试代码+101+谢艳敏

第4次作业类测试代码+105032014125+洪诗育

黑盒测试——nextDate函数测试(等价类划分法边界值分析法判定表驱动法)

UT源码+105032014074

UT源码 125

UT源码+158