注册 登录
编程论坛 C++教室

帮忙给看看啊,高手给指点下。。。。

红绿灯 发布于 2011-11-01 22:44, 777 次点击
程序代码:
#include "stdafx.h"
#include <iostream>
using namespace std;
bool CheckValid(int *,int *,int *);
int GetData();
int _tmain(int argc, _TCHAR* argv[])
{
    int a,b,c;
    a,b,c=GetData();
    CheckValid(&a,&b,&c);
    return 0;
}
bool CheckValid(int *month_ptr,int *data_ptr,int *year_ptr)
{

    if(*month_ptr==(1||3||5||7||8||10||12))
    {
        if(*data_ptr>31)
        {
            cout<<"输入日期错误"<<endl;
            return false;
        }
        else
            return true;
    }
    else if(*month_ptr==2)
    {
        if(*year_ptr%4==0)
        {
            if(*data_ptr>29)
            {
                cout<<"输入日期错误"<<endl;
                return false;
            }
            else
                return true;
        }
        else
            if(*data_ptr>28)
            {
                cout<<"输入日期错误"<<endl;
                return false;
            }
            else
                return true;
   
      
    }
    else
    {
        if(*data_ptr>30)
        {
            cout<<"输入日期错误"<<endl;
            return false;
        }
        else
            return true;
    }

}
int GetData()
{
    int month=0,data=0,year=0;
    int *month_ptr=&month;
    int *data_ptr=&data;
    int *year_ptr=&year;
    cout<<"请输入你要转换的日期(格式为:月/日/年)"<<endl;
    cin>>*month_ptr>>*data_ptr>>*year_ptr;
    return (*month_ptr,*data_ptr,*year_ptr);
}
我要是输入2 30 2001 不报日期错误,调试了下也看不懂,请高手指点下
10 回复
#2
Noll_Nie2011-11-01 23:08
程序代码:

#include <iostream>
using namespace std;

bool CheckValid(int *,int *,int *);

int GetData(int *, int *, int *);

int main(int argc, char* argv[])
{
    int a,b,c;
    //a,b,c=GetData();
    GetData(&a,&b,&c);
    CheckValid(&a,&b,&c);
    return 0;
}


bool CheckValid(int *month_ptr,int *data_ptr,int *year_ptr)
{
   

    //if(*month_ptr==(1||3||5||7||8||10||12))
    if(*month_ptr==1 || *month_ptr==3 || *month_ptr==5 || *month_ptr==7 || *month_ptr==8 || *month_ptr==10 || *month_ptr==12)
    {
        if(*data_ptr>31)
        {
            cout<<"输入日期错误"<<endl;
            return false;
        }
        else
            return true;
    }
    else if(*month_ptr==2)
    {
        if(*year_ptr%4==0)
        {
            if(*data_ptr>29)
            {
                cout<<"输入日期错误"<<endl;
                return false;
            }
            else
                return true;
        }
        else
            if(*data_ptr>28)
            {
                cout<<"输入日期错误"<<endl;
                return false;
            }
            else
                return true;
           

           

    }
    else
    {
        if(*data_ptr>30)
        {
            cout<<"输入日期错误"<<endl;
            return false;
        }
        else
            return true;
    }
   

}
int GetData(int *month_ptr, int *data_ptr, int *year_ptr)
{
    //int month=0,data=0,year=0;
   
//int *month_ptr=&month;
   
//int *data_ptr=&data;
   
//int *year_ptr=&year;
    cout<<"请输入你要转换的日期(格式为:月/日/年)"<<endl;
    cin>>*month_ptr>>*data_ptr>>*year_ptr;
    //return (*month_ptr,*data_ptr,*year_ptr);
    return 0;
}

就是那个得到日期的函数的问题吧 ,还有就是if条件的地方://if(*month_ptr==(1||3||5||7||8||10||12))
    if(*month_ptr==1 || *month_ptr==3 || *month_ptr==5 || *month_ptr==7 || *month_ptr==8 || *month_ptr==10 || *month_ptr==12)
#3
红绿灯2011-11-02 12:48
回复 楼主 红绿灯
不是那的问题,我改了还是得不到想要的结果,我感觉是函数值传递的错误,但不知道哪出错了
#4
红绿灯2011-11-02 12:49
回复 2楼 Noll_Nie
不是那的问题,我改了还是得不到想要的结果,我感觉是函数值传递的错误,但不知道哪出错了
#5
nomify2011-11-02 13:13
楼主用的神马语言呢
#6
红绿灯2011-11-02 13:25
回复 5楼 nomify
难道你觉得不是c++?
#7
nomify2011-11-02 13:35
C++有这语法?
a,b,c=GetData();
if(*month_ptr==(1||3||5||7||8||10||12))
 return (*month_ptr,*data_ptr,*year_ptr);
#8
红绿灯2011-11-02 13:46
回复 7楼 nomify
你给改改吧,本人菜鸟,请高手指点
#9
nomify2011-11-02 13:51
其实二楼的已经把错误改了。
不过你的代码只有这些功能,也就只能那样了。
你说的得不到结果,那你想得到什么结果?
#10
红绿灯2011-11-02 14:01
回复 9楼 nomify
如果你输入2/30/2001不会输出 日期错误  输入4/31/2001也不会显示日期错误 我调试了 看只把2001赋到了c 可能就是你说的那个a,b,c=GetData();
 return (*month_ptr,*data_ptr,*year_ptr);  错了  那该怎么返回多个值呢?又该怎么传值啊?  教教我
#11
nomify2011-11-02 17:59
这里输入要用空格或者回车隔开。
返回多个值可以用结构体,全局变量也可以,通过参数也可以。
1