佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1010|回复: 20

visual C++的问题,高手请帮忙@@

[复制链接]
发表于 3-9-2008 12:08 PM | 显示全部楼层 |阅读模式
我要弄一个student record,student _max[5]
要可以add student record,del student record,display student record的~
add student record是没有问题,可是display就做不到,不能return value哦~
各位大大能帮忙吗@@?
#include
#include
using namespace std;
void main_loop();
void user_add_array(string &name,int &idnum,int &mark);
void user_display_array();



struct Student
{
string student_name;
string student_id;
int course_mark[4];

};
Student stdRecord[5];
int main()
{

main_loop();


return 0;
}

void menu()
{
cout<<ENDL;
cout<<"***************Menu*****************\n";
cout<<"*(a)dd student record **\n";
cout<<"*(d)display student record **\n";
cout<<"*d(e)lete Student **\n";
cout<<"*(m)enu **\n";
cout<<"*e(x)it **\n";
cout<<"***************Menu*****************\n";
}

void main_loop()
{

string stud_name;
int id_num=0,course_mark=0;
char option='m';
while (option !='x')
{
switch(option)
{
case 'a':case 'A':user_add_array(stud_name,id_num,course_mark);break;
case 'd':case 'D':user_display_array();break;
//case 'e':case 'E':user_del_array();break;
case 'm':case 'M':menu();break;
default:cout<<"Invalid option"<<ENDL;
}
cout<<ENDL;
cout<<"NExt option ==>";
cin>>option;
}
}

void user_add_array(string &name,int &idnum,int &mark)
{
int i;
Student stud;

cout<<"Input\n";
cout<<"Enter student name==> ";
cin>>stud.student_name;

cout<<"Enter student ID==> ";
cin>>stud.student_id;

cout<<"Enter 4student marks";
for(i=0;i<4;i++)
{
cin>>stud.course_mark;
}

}

void user_display_array()
{
int i;
Student stud;
cout<<"\nOutput\n";
cout<<"Student name==> "<<STUD.STUDENT_NAME<<ENDL;
cout<<"Student id==> "<<STUD.STUDENT_ID<<ENDL;
cout<<"Student mArks ";
for (i=0;i<4;i++)
{
cout<<"MArk "<<I+1< "<<STUD.COURSE_MARK[I];
}
}
回复

使用道具 举报


ADVERTISEMENT

发表于 3-9-2008 03:29 PM | 显示全部楼层

回复 1# jaychen 的帖子

#include
#include
using namespace std;
void main_loop();
void user_add_array(string &name,int &idnum,int &mark);
void user_display_array();



struct Student
{
string student_name;
string student_id;
int course_mark[4];

};
Student stdRecord[5];
int main()
{

main_loop();


return 0;
}

void menu()
{
cout<<ENDL;
cout<<"***************Menu*****************\n";
cout<<"*(a)dd student record **\n";
cout<<"*(d)display student record **\n";
cout<<"*d(e)lete Student **\n";
cout<<"*(m)enu **\n";
cout<<"*e(x)it **\n";
cout<<"***************Menu*****************\n";
}

void main_loop()
{

string stud_name;
int id_num=0,course_mark=0;
char option='m';
while (option !='x')
{
switch(option)
{
case 'a':case 'A':user_add_array(stud_name,id_num,course_mark);break;
case 'd':case 'D':user_display_array();break;
//case 'e':case 'E':user_del_array();break;
case 'm':case 'M':menu();break;
default:cout<<"Invalid option"<<ENDL;
}
cout<<ENDL;
cout<<"NExt option ==>";
cin>>option;
}
}

void user_add_array(string &name,int &idnum,int &mark)
{
int i;
Student stud;

cout<<"Input\n";
cout<<"Enter student name==> ";
cin>>stud.student_name;

cout<<"Enter student ID==> ";
cin>>stud.student_id;

cout<<"Enter 4student marks";
for(i=0;i<4;i++)
{
cin>>stud.course_mark;
}

}

void user_display_array()
{
int i;
Student stud;
cout<<"\nOutput\n";
cout<<"Student name==> "<<STUD.STUDENT_NAME<<ENDL;
cout<<"Student id==> "<<STUD.STUDENT_ID<<ENDL;
cout<<"Student mArks ";
for (i=0;i<4;i++)
{
cout<<"MArk "<<I+1< "<<STUD.COURSE_MARK[I];
}
}
回复

使用道具 举报

发表于 3-9-2008 03:41 PM | 显示全部楼层
应该是酱....
#include "stdafx.h"
#include <iostream>

using namespace std;

void main_loop();
void user_add_array(string &name,int &idnum,int &mark);//红色的不需要
void user_display_array();

struct Student
{
      string student_name;
      string student_id;
      int course_mark[4];
};  //改成 }stud;

Student stdRecord[5];

int main()
{
      main_loop();
      return 0;
}

void menu()
{
      cout<<ENDL; //endl
      cout<<"***************Menu*****************\n";
      cout<<"*(a)dd student record **\n";
      cout<<"*(d)display student record **\n";
      cout<<"*d(e)lete Student **\n";
      cout<<"*(m)enu **\n";
      cout<<"*e(x)it **\n";
      cout<<"***************Menu*****************\n";
}

void main_loop()
{
      string stud_name; //红色的不需要
      int id_num=0,course_mark=0; //红色的不要

      char option='m';
      while (option !='x')
      {
            switch(option)
            {
                  case 'a':case 'A':user_add_array(stud_name,id_num,course_mark);break;//红色的不要
                  case 'd':case 'D':user_display_array();break;
                  //case 'e':case 'E':user_del_array();break;
                  case 'm':case 'M':menu();break;
                  default:cout<<"Invalid option"<<ENDL; //endl
            }
      cout<<ENDL;//endl
      cout<<"NExt option ==>";
      cin>>option;
      }
}

void user_add_array(string &name,int &idnum,int &mark)//红色的不需要
{
      int i;
      Student stud;//红色的不需要

      cout<<"Input\n";
      cout<<"Enter student name==> ";
      cin>>stud.student_name;

      cout<<"Enter student ID==> ";
      cin>>stud.student_id;

      cout<<"Enter 4student marks";
      for(i=0;i<4;i++)
      {
            cin>>stud.course_mark;
      }
}

void user_display_array()
{
      int i;
      Student stud;//红色的不需要
      cout<<"\nOutput\n";
      cout<<"Student name==> "<<STUD.STUDENT_NAME<<ENDL; //stud.student_name<<endl;
      cout<<"Student id==> "<<STUD.STUDENT_ID<<ENDL; // stud.student_id<<endl;
      cout<<"Student marks\n";
      for (i=0;i<4;i++)
      {
            cout<<"Mark "<< i+1< "<<STUD.COURSE_MARK[I];
          //cout<<"Mark "<< i+1< " : "<<stud.course_mark<<"\n";
      }
}
回复

使用道具 举报

 楼主| 发表于 3-9-2008 05:20 PM | 显示全部楼层
compile了有error 勒~@@
那个void function的parameter不是不能拿掉的吗@@?
回复

使用道具 举报

发表于 3-9-2008 07:10 PM | 显示全部楼层
  1. #include <iostream>
  2. #include <string>

  3. using namespace std;
  4. void main_loop();
  5. void user_add_array();
  6. void user_display_array();



  7. struct Student
  8. {
  9. string student_name;
  10. string student_id;
  11. int course_mark[4];

  12. };
  13. Student stdRecord[5];
  14. int size=0; //define the array position
  15. int main()
  16. {

  17. main_loop();


  18. return 0;
  19. }

  20. void menu()
  21. {
  22. cout<<endl;
  23. cout<<"***************Menu*****************\n";
  24. cout<<"*(a)dd student record **\n";
  25. cout<<"*(d)display student record **\n";
  26. cout<<"*d(e)lete Student **\n";
  27. cout<<"*(m)enu **\n";
  28. cout<<"*e(x)it **\n";
  29. cout<<"***************Menu*****************\n";
  30. }

  31. void main_loop()
  32. {

  33. string stud_name;
  34. int id_num=0,course_mark=0;
  35. char option='m';
  36. while (option !='x')
  37. {
  38. switch(option)
  39. {
  40. case 'a':case 'A':user_add_array();break;
  41. case 'd':case 'D':user_display_array();break;
  42. case 'e':case 'E':user_del_array();break;
  43. case 'm':case 'M':menu();break;
  44. default:cout<<"Invalid option"<<endl;
  45. }
  46. cout<<endl;
  47. cout<<"NExt option ==>";
  48. cin>>option;
  49. }
  50. }

  51. void user_add_array()
  52. {



  53. cout<<"Input\n";
  54. cout<<"Enter student name==> ";
  55. cin>>stdRecord[size].student_name;

  56. cout<<"Enter student ID==> ";
  57. cin>>stdRecord[size].student_id;

  58. cout<<"Enter 4student marks";
  59. for (int i =0 ; i < 4 ; i++)
  60. cin>>stdRecord[size].course_mark[i];
  61. size++;
  62. }

  63. void user_display_array()
  64. {
  65. for (int i =0 ; i <=size ; i++)    {
  66. cout<<"\nOutput\n";
  67. cout<<"Student name==> "<<stdRecord[size].student_name<<endl;
  68. cout<<"Student id==> "<<stdRecord[size].student_id<<endl;
  69. cout<<"Student mArks ";
  70. for (int j =0 ; j < 4 ; j++)
  71. cout<<"MArk "<<(j+1)<<" "<<stdRecord[size].course_mark[j]<<endl;
  72. }
  73. }
复制代码
回复

使用道具 举报

 楼主| 发表于 4-9-2008 12:44 AM | 显示全部楼层
sssky~谢谢你的reply~
你的是没有error~~
可是add_array里面的value还是没return哦~~~
是不是void的parameter没有写呢@@?
回复

使用道具 举报

Follow Us
发表于 4-9-2008 08:28 AM | 显示全部楼层

回复 6# jaychen 的帖子

void的parameter是不需要的.... 因为你不需要call function from other class....
回复

使用道具 举报

发表于 4-9-2008 09:24 AM | 显示全部楼层
#include "stdafx.h"
#include <iostream>
#include <string>


using namespace std;

void main_loop();
void user_add_array();
void user_display_array();
int k = 0;


struct Student
{
        string student_name;
        string student_id;
        int course_mark[4];
};

Student stud[5];

int main()
{
        main_loop();
        return 0;
}

void menu()
{
        cout<<endl;
        cout<<"***************Menu*****************\n";
        cout<<"*(a)dd student record **\n";
        cout<<"*(d)display student record **\n";
        cout<<"*d(e)lete Student **\n";
        cout<<"*(m)enu **\n";
        cout<<"*e(x)it **\n";
        cout<<"***************Menu*****************\n";
}

void main_loop()
{
        char option='m';
        while (option !='x')
        {
                switch(option)
                {
                        case 'a':case 'A':user_add_array();break;
                        case 'd':case 'D':user_display_array();break;
                        //case 'e':case 'E':user_del_array();break;
                        case 'm':case 'M':menu();break;
                        default:cout<<"Invalid option"<<endl;
                }
                cout<<endl;
                cout<<"NExt option ==>";
                cin>>option;
        }
}

void user_add_array()
{
        int i;

        cout<<"Input\n";
        cout<<"Enter student name==> ";
        cin >> stud[k].student_name;

        cout<<"Enter student ID==> ";
        cin >> stud[k].student_id;
  
        cout<<"Enter 4 student marks(spacing)==> ";
        for(i=0;i<4;i++)
        {
                cin >> stud[k].course_mark;
        }
        k++;
}

void user_display_array()
{
        int i;
        for (int h = 0; h<sizeof(stud)/sizeof * stud;h++)
        {
        cout << "\nOutput\n";
        cout << "Student name==> " << stud[h].student_name << endl;
        cout << "Student id==> " << stud[h].student_id << endl;
        cout << "Student mArks\n";
        for (i=0;i<4;i++)
        {
                cout << "Mark" << i+1 << " : " << stud[h].course_mark << "\n";
        }
        }
}
看看吧.... 我DEBUG了..没问题...
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 4-9-2008 01:46 PM | 显示全部楼层
请问什么是#include "stdafx.h" @@?
我compile了
user add array有error哦@@
cout<<"Enter 4 student marks(spacing)==> ";
        for(i=0;i<4;i++)
        {
                cin >> stud[k].course_mark;
        }
        k++;

binary >>:no operator defined which takes a right-hand operand of type int[4]
回复

使用道具 举报

发表于 4-9-2008 02:44 PM | 显示全部楼层

回复 9# jaychen 的帖子

你是用VS2005???
回复

使用道具 举报

发表于 4-9-2008 05:31 PM | 显示全部楼层
  1. struct Student

  2. {

  3.         string student_name;

  4.         string student_id;

  5.         int course_mark[4];

  6. };
复制代码
  1. cout<<"Enter 4 student marks(spacing)==> ";

  2.         for(i=0;i<4;i++)

  3.         {

  4.                 cin >> stud[k].course_mark;

  5.         }

  6.         k++;
复制代码
这里 Student::course_mark[] 是array , 而却cin >> stud[k].course_mark ( 变成char) , 当然出问题

array 转成char 当然不被允许

换成
  1. cout<<"Enter 4 student marks(spacing)==> ";

  2.         for(i=0;i<4;i++)

  3.         {

  4.                 cin >> stud[k].course_mark[i];

  5.         }

  6.         k++;
复制代码
就可以了

[ 本帖最后由 onlylonly 于 5-9-2008 01:10 PM 编辑 ]
回复

使用道具 举报

发表于 4-9-2008 05:38 PM | 显示全部楼层

回复 11# onlylonly 的帖子

咿...做么我没有注意到的...
回复

使用道具 举报

发表于 4-9-2008 06:07 PM | 显示全部楼层
直接return struct 吧, 尝试别用global variable
  1. #include <iostream>
  2. #include <string>

  3. using namespace std;

  4. const int NUM = 5;

  5. struct Student
  6. {
  7. string student_name;
  8. string student_id;
  9. int course_mark[4];

  10. };
  11. void main_loop();
  12. Student user_add_array();
  13. void user_display_array(Student stud[]);


  14. int main()
  15. {

  16.         main_loop();


  17.         return 0;
  18. }


  19. void menu()
  20. {
  21.         cout<<endl;
  22.         cout<<"***************Menu*****************\n";
  23.         cout<<"*(a)dd student record **\n";
  24.         cout<<"*(d)display student record **\n";
  25.         cout<<"*d(e)lete Student **\n";
  26.         cout<<"*(m)enu **\n";
  27.         cout<<"*e(x)it **\n";
  28.         cout<<"***************Menu*****************\n";
  29. }

  30. void main_loop()
  31. {


  32.         int i;
  33.         char option='m';

  34.         Student stdRecord[NUM];

  35.         while (option !='x')
  36.         {
  37.                 switch(option)
  38.                 {
  39.                         case 'a':case 'A':
  40.                                 for( i = 0; i < NUM; i++ )
  41.                                         stdRecord = user_add_array();
  42.                                         break;
  43.                         case 'd':case 'D':user_display_array(stdRecord);break;
  44.                         //case 'e':case 'E':user_del_array();break;
  45.                         case 'm':case 'M':menu();break;
  46.                         default:cout<<"Invalid option"<<endl;
  47.                 }

  48.                 cout<<endl;
  49.                 cout<<"NExt option ==>";
  50.                 cin>>option;

  51.         }
  52. }

  53. Student user_add_array()
  54. {
  55.         int i;
  56.         Student stud;

  57.         cout<<"Input\n";
  58.         cout<<"Enter student name==> ";
  59.         cin>>stud.student_name;

  60.         cout<<"Enter student ID==> ";
  61.         cin>>stud.student_id;

  62.         cout<<"Enter 4student marks";

  63.         for(i=0;i<4;i++)
  64.                 cin>>stud.course_mark[i];

  65.         return stud;
  66.         

  67. }

  68. void user_display_array(Student stud[])
  69. {
  70.    
  71.     int i, count;

  72.     for( i = 0; i < NUM; i++ )
  73.     {
  74.             cout<<"\nOutput\n";
  75.             cout<<"Student name==> "<<stud.student_name<<endl;
  76.             cout<<"Student id==> "<<stud.student_id<<endl;
  77.             cout<<"Student mArks ";

  78.             for( count = 0; count < 4; count++ )
  79.                     cout<<"MArk "<< count + 1 << " = " <<stud.course_mark[count];
  80.     }
  81.         
  82. }
复制代码
对了, vc 不是case sensitive 的? 看到忽然转换的大小写

endl 变成 ENDL

[ 本帖最后由 onlylonly 于 5-9-2008 01:18 PM 编辑 ]
回复

使用道具 举报

发表于 4-9-2008 10:38 PM | 显示全部楼层
呃。。。只要是C语言,不管是C还是C++,都是case sensitive的。。。
回复

使用道具 举报

 楼主| 发表于 5-9-2008 12:56 AM | 显示全部楼层
不好意思
我用的是Microsoft Visual C++ 6.0
回复

使用道具 举报

发表于 5-9-2008 08:08 AM | 显示全部楼层
做么不能用class来做吗??? 会比struc好...
回复

使用道具 举报


ADVERTISEMENT

发表于 5-9-2008 01:12 PM | 显示全部楼层
可能老师只教到struct

如果不用return ,也可以用referrence & 。
用global variable的原因是要知道当时增加了多少位学生。

class 和struct 都还好,我认为linked list 最好用。^ ^

还有13楼的大大,要注意course_mark 是array , cin>>stud.course_mark ;
回复

使用道具 举报

发表于 5-9-2008 01:15 PM | 显示全部楼层

回复 14# geekman 的帖子

就是洛, 我还以为 vc 特别的。

看到 endl 变成 ENDL 是还真的吓一跳。 还以为 vc 搞花样。

@mEIO 当然可以, 那就变成
  1. for( int = 0; i < NUM; i++)
  2.        stud[i].add_array;
复制代码

[ 本帖最后由 onlylonly 于 5-9-2008 01:17 PM 编辑 ]
回复

使用道具 举报

发表于 5-9-2008 01:23 PM | 显示全部楼层

回复 17# ss_sky87 的帖子

呵呵, 刚提醒别人, 自己又犯下同样错误。。

其实不用global variable 也是可以知道增加了多少学生。

比如
  1. struct any
  2.     {
  3.      int a;
  4.      char b;
  5.     };

  6.     any *i = new any [10];
复制代码
或是用vector::pushback(), resize  等。

用global variable 反而没拿么好

[ 本帖最后由 onlylonly 于 5-9-2008 01:25 PM 编辑 ]
回复

使用道具 举报

发表于 5-9-2008 02:28 PM | 显示全部楼层
可是那是最简易的方法呢。

而且如果老师教到vector了,他们不可能会这样做瓜。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 24-12-2025 12:14 AM , Processed in 0.163101 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表