| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 648 人关注过本帖
标题:大家帮我看下,没有错但运行无法输入
只看楼主 加入收藏
px200
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-4-16
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:9 
大家帮我看下,没有错但运行无法输入
#include<iostream>
#include<string>
using namespace std;
class Date{
public:
    Date();
    Date(char *name,int ID,char Sex,int Math,int English,int C,int Computer);
    void showstudent();
    void aver(int Average,int Math,int English,int C,int Computer);
private:
    char *name;
    int ID;
    char Sex;
    int Math;
    int English;
    int C;
    int Computer;
    int Average;
   
};
Date::Date(char *name,int ID,char Sex,int Math,int English,int C,int Computer)
{
 name=new char[10];
     cin>>name>>ID>>Sex>>Math>>English>>C>>Computer;
     aver(Average,Math,English,C,Computer);
 delete []name;
}
Date::Date()
{}
void Date::showstudent()
{cout<<name<<"  "<<ID<<"  "<<Sex<<"  "<<Math<<"  "<<English<<"  "<<C<<"  "<<Computer<<" "<<Average<<endl;}
void Date::aver(int Average,int Math,int English,int C,int Computer)
{
    Average=(Math+English+C+Computer)/4;
}

int main()
{
    int q;
    cout<<"Please Input the Number of Students:"<<endl;
    cin>>q;
    cout<<"Please input"<<" "<<q<<" "<<"student info: Name  ID  Sex  Math  English  C  Computer"<<endl;
    Date *stu=new Date[q];
    cout<<endl<<"Student Information you input:"<<endl;
    cout<<"Name  ID  Sex  Math  English  C  Computer  Average"<<endl;
    for(int i=0;i<4;i++)
    {
        stu[i].showstudent();
    }
    delete []stu;
    return 0;
}
搜索更多相关主题的帖子: void namespace English private include 
2013-04-16 08:58
aoguren
Rank: 2
等 级:论坛游民
帖 子:29
专家分:43
注 册:2009-5-4
收藏
得分:4 
函数设计的也不合理。

Date *stu=new Date[q];
cout<<endl<<"Student Information you input:"<<endl;
cout<<"Name  ID  Sex  Math  English  C  Computer  Average"<<endl;
做完后面,你的Date::Date(char *name,int ID,char Sex,int Math,int English,int C,int Computer)构造函数不会执行,
而是会执行Date();

然后 到后面 for(int i=0;i<4;i++)
    {
        stu[i].showstudent();
    }
就执行不了,所以会报错。
2013-04-16 11:27
px200
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-4-16
收藏
得分:0 
回复 2楼 aoguren
怎么改一下,让构造函数执行?
2013-04-16 15:27
子楠
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:111
专家分:164
注 册:2013-4-9
收藏
得分:4 
#include<iostream>
#include<string>
using namespace std;
class Date{
public:
    Date();
    void set(char *na,int id,char *ss,int ma,int en,int cc,int co);
    void showstudent();
    void aver();
private:
    char *name;
    int ID;
    char *Sex;
    int Math;
    int English;
    int C;
    int Computer;
    double Average;
   
};
void Date::set(char *na,int id,char *ss,int ma,int en,int cc,int co)
{   
    strcpy(name,na);
    strcpy(Sex,ss);
    ID=id;
    Sex=ss;
    Math=ma;
    English=en;
    C=cc;
    Computer=co;
}
Date::Date()
{
    name=new char[10];
    Sex=new char[10];
}
void Date::showstudent()
{ cout<<name<<"  "<<ID<<"  "<<Sex<<"  "<<Math<<"  "<<English<<"  "<<C<<"  "<<Computer<<"  "<<Average<<endl;}
void Date::aver()
{
      Average=(Math+English+C+Computer)/4;
}

int main()
{
    int i,q,id,ma,en,cc,co;
    char *na,*ss;
    cout<<"Please Input the Number of Students:"<<endl;
    cin>>q;
    Date *stu=new Date[q];
   
    for(i=0;i<q;i++)
    {    cout<<"请输入信息"<<endl;
        cin>>na>>id>>ss>>ma>>en>>cc>>co;
        stu[i].set(na,id,ss,ma,en,cc,co);
    }
    for(i=0;i<q;i++)
    {    stu[i].aver();
        stu[i].showstudent();
    }
    delete []stu;
    return 0;
}
好了,可以

[ 本帖最后由 子楠 于 2013-4-16 18:00 编辑 ]
2013-04-16 17:33
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:4 
回复 3楼 px200
你的概念还不是很牢固哦!构造函数不需要你去调用,构造函数的作用是处理对象初始化,构造函数在建立对象时自动执行,但是构造函数的名字必须和类名一样。

Maybe
2013-04-16 21:15
px200
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-4-16
收藏
得分:0 
回复 5楼 邓士林
那我那个应该怎么改啊? 真不会了
2013-04-16 21:53
px200
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-4-16
收藏
得分:0 
回复 4楼 子楠
谢谢 但这个只能初始化一个对象,最好用构造函数对对象进行初始化。
2013-04-16 21:55
子楠
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:111
专家分:164
注 册:2013-4-9
收藏
得分:0 
回复 7楼 px200
在main函数中我用了个循环对n个对象初始化呀
2013-04-17 21:56
zhuxiaoneng
Rank: 4
等 级:业余侠客
威 望:2
帖 子:51
专家分:215
注 册:2013-4-10
收藏
得分:4 
已经在你的另外一个帖子里,给你修改了
2013-04-18 09:32
马小柯
Rank: 2
等 级:论坛游民
帖 子:17
专家分:14
注 册:2013-4-10
收藏
得分:4 
#include<iostream>
 #include<string>
 using namespace std;
 class Date{
 public:
     Date();
     Date(char *name,int x,string y,int m,int e,int c,int co);
     void setdate();
     void showstudent();
     void aver();
 private:
     string Name;
     int ID;
     string Sex;
     int Math;
     int English;
     int C;
     int Computer;
     double Average;
     
};
 void Date::setdate()
 {
 //Name=new char[10];
 cin>>Name>>ID>>Sex>>Math>>English>>C>>Computer;
 }
 Date::Date()
 {}
 void Date::showstudent()
 {cout<<Name<<"  "<<ID<<"  "<<Sex<<"  "<<Math<<"  "<<English<<"  "<<C<<"  "<<Computer<<" "<<Average<<endl;}
 void Date::aver()
 {
     Average=(Math+English+C+Computer)/4.0;
 }
 Date::Date(char *name,int x,string y,int m,int e,int c,int z)
 {
     Name=name;
     ID=x;
     Sex=y;
     Math=m;
     English=e;
     C=c;
     Computer=z;
 }
int main()
 {
     int q;
     cout<<"Please Input the Number of Students:"<<endl;
     cin>>q;
     cout<<"Please input"<<" "<<q<<" "<<"student info: Name  ID  Sex  Math  English  C  Computer"<<endl;
     Date *stu=new Date[q];
     for(int j=0;j<q;j++)
     {
         stu[j].setdate();
         stu[j].aver();
     }
     cout<<endl<<"Student Information you input:"<<endl;
     cout<<"Name  ID  Sex  Math  English  C  Computer  Average"<<endl;
     for(int i=0;i<q;i++)
     {
         stu[i].showstudent();
     }
     delete stu;
     return 0;
 }
 
2013-04-18 15:13
快速回复:大家帮我看下,没有错但运行无法输入
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019670 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved