佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

楼主: Wongkokchoy

Asignment新的小问题。。。

[复制链接]
发表于 3-10-2008 08:15 PM | 显示全部楼层
原帖由 Wongkokchoy 于 3-10-2008 08:03 PM 发表
想到了,应该是这样吧!

do
            {
            coutdice;
            if (dice !='q'&& dice!='t')
            {
            cout


或许这样会比较好

            if (dice !=toupper('q') && dice!=toupper('t')) // 抱歉, 这个写错了
            if (toupper(dice) !='Q' && toupper(dice) !='T') // 这个才是

怎样不管大小写t 或 q 都行了

[ 本帖最后由 onlylonly 于 3-10-2008 08:25 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 3-10-2008 08:19 PM | 显示全部楼层
原帖由 onlylonly 于 3-10-2008 08:15 PM 发表


或许这样会比较好

            if (dice !=toupper('q') && dice!=toupper('t'))

怎样不管大小写t 或 q 都行了



如果要用toupper的话,需要任何header file吗?
回复

使用道具 举报

发表于 3-10-2008 08:22 PM | 显示全部楼层

回复 82# Wongkokchoy 的帖子


turbo c++ 5.02 写法
#include <ctype.h>

正规写法
#include <cctype>
回复

使用道具 举报

发表于 3-10-2008 08:24 PM | 显示全部楼层

回复 82# Wongkokchoy 的帖子

抱歉写错写错


if (toupper(dice) !='Q' && toupper(dice) !='T')
回复

使用道具 举报

发表于 3-10-2008 11:47 PM | 显示全部楼层
原帖由 onlylonly 于 3-10-2008 08:01 PM 发表
非也非也, 我其实并非如 hackintosh 描写般厉害。

当时之所以能成功架设linux服务器介因天时,地利,人和。 全是外力,并非自己厉害。 天时是运气, 地利是因为环境允许, 当时电脑室尚有多余电脑,又因蕫教总的 ...


果然是cari新人王, 强~~~~~

不要说现在的degree和diploma student, 他们已经成为了马来西亚教育制度偏差的牺牲品(国立的不受, 私立的只要赚钱而忽略学生品质, 加上学生们的思想还不够"大")
你能18岁能干出这种成绩, 你已经可以胜任大部分的diploma学生

读书和打工当然是为了知识和未来
现在还有学生在学校混日子, 为文凭
打功就先问薪水多少

haiz
试问有多少东西是靠自己的双手一滴一滴做出来的啦
onlyonly加油

楼主, 虽然我在你的贴灌水
但你却可以见识到cari新人王的功力, 应该是赚到啦
楼主加油
回复

使用道具 举报

 楼主| 发表于 4-10-2008 12:54 AM | 显示全部楼层
看到onlylonly的经验还真的让我佩服的五体投地 orz.

灌水不是问题啦,只要班主不来封楼就行了。

还有一个问题,

每次我做array的时候,我都不懂要如何让user自行set array's cell 的数量。每次我都是用酱的方法来骗的

#define m 50000000;
int player[m];

请问有没有那些方法能够让user自行设定array cell 的数量吗?
回复

使用道具 举报

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

回复 86# Wongkokchoy 的帖子

有, 用dynamic array, 或vector,deque,list

dynamic array:

int *player = new int[50]; // 50 elements array



int input, *player;

cout << "number of array :";
cin >> input;

player = new int [input];

至于vector,deque,list 的,这个比较广, 可以自行去 www.cplusplus.com 查看。

用法一般上是
vector<int> player;

player.push_back( <variable/ input> );

deque , list 可以push_back 与 push_front, vector 只能 push_back

[ 本帖最后由 onlylonly 于 4-10-2008 09:46 AM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 4-10-2008 09:30 AM | 显示全部楼层
原帖由 onlylonly 于 4-10-2008 08:56 AM 发表
int *player = new int[50]; // 50 elements array


这个我做到:

  1. #include <iostream.h>
  2. void main()
  3. {
  4. int n, code;
  5. cout<<"Tell me how many player(s).\n";
  6. cin>>n;
  7. int *player=new int [n];
  8. for (int x=0; x<n; x++)
  9. {
  10. code=x+1;
  11. cout<<"key in the code number of player "<<code<<".\n";
  12. cin>>player[x];
  13. }
  14. }
复制代码


可是这个有error:

int input, *player;

cout << "number of array :";
cin >> input;

player = new [input];

" border="0">
回复

使用道具 举报


ADVERTISEMENT

发表于 4-10-2008 09:45 AM | 显示全部楼层

回复 88# Wongkokchoy 的帖子

写错写错, 我今天搞什么的


int input, *player;

cout << "number of array :";
cin >> input;

player = new int [input];
回复

使用道具 举报

 楼主| 发表于 4-10-2008 10:13 AM | 显示全部楼层
可以了,谢谢你。
回复

使用道具 举报

 楼主| 发表于 5-10-2008 04:48 PM | 显示全部楼层
还有一件事,就是如果我要小的function从main function那边拿value的话;要怎么做?

比如:

我要从main function里面拿int number的value去subfunction.

void Ladder(int number)
{
cout<<"\nLook!! There is a ladder over there!\n";
cout<<"layer "<<number<<" climb up the ladder.\n";
return number;
}

上面那个不能RUN, 因为有一些error。

有谁能帮我吗?

没猜错的话一定是onlylonly来帮我

[ 本帖最后由 Wongkokchoy 于 5-10-2008 04:52 PM 编辑 ]
回复

使用道具 举报

发表于 5-10-2008 05:06 PM | 显示全部楼层

回复 91# Wongkokchoy 的帖子

我帮onlyonly回答吧, onlyonly不介意吧

当你declare
void anyName(int anyInterger){

/*whatever*/

return anyInteger;
}

是错的
因为void 是没有return value

如果你要return value

int anyName(int anyInterger){

/*whatever*/

return anyInteger;
}
回复

使用道具 举报

 楼主| 发表于 5-10-2008 05:29 PM | 显示全部楼层
对,我忘了-.-

所以如果我要用return的话, 就一定不可以用void就对了。

那么如果我用void的话,我第二次做function call的时候,number 会变成上一次的value吗?
回复

使用道具 举报

发表于 5-10-2008 09:24 PM | 显示全部楼层

回复 93# Wongkokchoy 的帖子

@晨天
你帮我答才好哩。。 明天开始考试了,应该不得空上来了。

-----------
每一次你call function, function的 parameter value 就会变

int main()
{
          ...................
         Ladder(3); // number = 3
         Ladder(10); // number = 10

         return 0;
}

/*void Ladder(int number)*/ // number is parameter, also known as argument
回复

使用道具 举报

 楼主| 发表于 6-10-2008 07:36 AM | 显示全部楼层
onlylonly在考试啊,那就不方便打扰了。

还有一个问题:

我想从main function那里拿player [x]的value去void Snake, 可是有error。。。。、
我连phototype那边也跟着换了,可也是不行。
void Snake(int number, int player[x])
{
cin.get();
cout<<"\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~SNAKE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n";
cout<<"\nWoot!! Player "<<number<<" meets an anaconda!!!!\n";
cin.get();
cout<<"In order to escape from the snake, player "<<number<<" had run away.\n";
cout<<" Player "<<number<<" had reached "<<player[x]<<"!\n\n";
cout<<"\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~SNAKE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n";
}

哪里出了问题呢?

[ 本帖最后由 Wongkokchoy 于 6-10-2008 12:38 PM 编辑 ]
回复

使用道具 举报

发表于 6-10-2008 12:52 PM | 显示全部楼层
void Snake(int number, int player[x])
{
cin.get();
cout<<"\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~SNAKE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n";
cout<<"\nWoot!! Player "<<number<<" meets an anaconda!!!!\n";
cin.get();
cout<<"In order to escape from the snake, player "<<number<<" had run away.\n";
cout<<" Player "<<number<<" had reached "<<player[x]<<"!\n\n";
cout<<"\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~SNAKE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n";
}


改成

void Snake(int number, int player)
{
cin.get();
cout<<"\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~SNAKE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n";
cout<<"\nWoot!! Player "<<number<<" meets an anaconda!!!!\n";
cin.get();
cout<<"In order to escape from the snake, player "<<number<<" had run away.\n";
cout<<" Player "<<number<<" had reached "<<player<<"!\n\n";
cout<<"\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~SNAKE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n";
}

我可能没时间上来回答, 但是有其他高手回答的, 如 geekman 等等。。

[ 本帖最后由 onlylonly 于 6-10-2008 11:40 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 8-10-2008 04:03 PM | 显示全部楼层
朋友的好心提醒,让我想起一个大问题!!!!

do                                                // do-while loop to avoid user to key in negative value or zero
    {
    cout<<"\nPlease enter the numbers of players:\n";
    cin>>n;
    if (n<=0)
    cout<<"INVALID number of player!\n";
    }

如果那个user故意key-in alphabet的话,我的while loop就变成infinite loop 了。。。。

有什么办法能够解决吗?
回复

使用道具 举报

发表于 8-10-2008 04:19 PM | 显示全部楼层

回复 97# Wongkokchoy 的帖子

写一个 number checking function, 再用 atoi 转换成为 int
  1. bool check_number( string input )
  2. {
  3.     int i;

  4.     for( i = 0; i < input.length(); i++ )
  5.         if( isdigit( input ) == false )
  6.             return false;

  7.     return true;
  8. }
复制代码
用法
  1. #include <iostream.h> //#include <iostream>
  2. #include <ctype.h> // #include <cctype>
  3. #include <string.h> //#include <string>

  4. //using namespace std;

  5. bool check_number( string input );

  6. int main()
  7. {
  8.     string input;
  9.     int n;

  10.     cin >> input;

  11.     if( check_number( input ) == false)
  12.         cout << "INVALID , INPUT NOT NUMBER";
  13.     else
  14.         n = atoi(input.c_str());

  15.    


  16.     return 0;

  17. }

  18. bool check_number( string input )
  19. {
  20.     int i;

  21.     for( i = 0; i < input.length(); i++ )
  22.         if( isdigit( input ) == false )
  23.             return false;

  24.     return true;
  25. }
复制代码

[ 本帖最后由 onlylonly 于 8-10-2008 04:35 PM 编辑 ]
回复

使用道具 举报

发表于 8-10-2008 04:28 PM | 显示全部楼层

回复 97# Wongkokchoy 的帖子

若用在你的code 里就
  1. string input;
  2. .......................
  3. // YOUR CODE
  4. .............

  5. do                                                // do-while loop to avoid user to key in negative value or zero
  6.     {
  7.     cout<<"\nPlease enter the numbers of players:\n";
  8.     cin >> input;

  9.    /*********** NUMBER CHECKING ***************/
  10.     if( check_number( input ) == false)
  11.         cout << "INVALID , INPUT NOT NUMBER";
  12.     else
  13.         n = atoi(input.c_str()); // convert string to integer, store to n
  14.     /*******************************************************/
  15.     if (n<=0)
  16.     cout<<"INVALID number of player!\n";
  17.     }
复制代码

[ 本帖最后由 onlylonly 于 8-10-2008 04:36 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 8-10-2008 04:36 PM | 显示全部楼层
这个有一点深, 我再问lecturer要不要放下去, 毕竟他也没有教。。。

然后我尝试放cin.getline 进去我的function可是有error.....

void winner(int, char);      // phototype

char  *name[100];


for (int x=0; x<n; x++)
    {
    cout<<"Please enter player "<<(x+1)<<"'s name.\n";
    cin.getline (name[x], 100);
    }


if (player[x]==100)                      // exits loops when one of the players reach 100
            {
            winner (number, name);           <-------------------------------------
            break;
            }


void winner(int number,char name )
{
cin.get();
cout<<"\n\n----------------------------------WINNER---------------------------------------\n";
cout << "\n"<<name<<" Player  [" <<number<< "] win!!!!\n\nCongratulation!!!\n\n"<<endl;
cout<<"----------------------------------WINNER---------------------------------------\n";
}


error是cannot convert 'char**' to ‘char'
type mismatch in parameter 2 in call to winner(int, char)
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


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

GMT+8, 23-12-2025 07:20 PM , Processed in 0.139882 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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