JBTALKS.CC

标题: C++的问题和找freelance programmer [打印本页]

作者: 孤独迷惑    时间: 2014-8-8 06:54 PM
标题: C++的问题和找freelance programmer
小弟想请问下从text file里面随机选题目出来回答 像是做quiz一样
可是他现在随机选他会有repeated question, 请问如何去修改?
  1.                
  2. int random_integer[100];

  3. for(unsigned int q=0; q<question.size(); q++)
  4. {
  5.             srand((unsigned)time(0));
  6.             random_integer[q] = rand() % question.size();
  7.             cout << no++ <<")";
  8.             score += askQuestion(question[random_integer[q]], answer[random_integer[q]]);
  9. }
复制代码
PS:
如果有哪个大大会C++
然后想要接一个小project来做
可以PM我
谢谢
作者: xtjj    时间: 2014-8-8 07:23 PM
提示: 作者被禁止或删除 内容自动屏蔽
作者: xtjj    时间: 2014-8-8 07:29 PM
提示: 作者被禁止或删除 内容自动屏蔽
作者: 我是好人88    时间: 2014-8-8 10:47 PM
你有什么project要帮忙?
pm我看看,我pm不到你
作者: ~地狱王~    时间: 2014-8-9 01:56 AM
create 一个 vector 收集出过的题号,然后在generate新题号时做对比,做过的话就重新generate过,就不会有重复的题号了的
这是我想到简单的方法
作者: 孤独迷惑    时间: 2014-8-9 02:06 AM
~地狱王~ 发表于 2014-8-9 01:56 AM
create 一个 vector 收集出过的题号,然后在generate新题号时做对比,做过的话就重新generate过,就不会有重 ...

我也是想到这个
就是写的时候就写不出了
作者: angelineang    时间: 2014-8-9 06:27 AM
你要code的话 我send给你.就是你所想的那个,我以前做过跟你很类似的program
作者: htuomrev    时间: 2014-8-9 10:49 AM
把所有问题 random 排序,然后取你要的问题数量。
你的 project 属于什么性质?
作者: 孤独迷惑    时间: 2014-8-9 12:07 PM
angelineang 发表于 2014-8-9 06:27 AM
你要code的话 我send给你.就是你所想的那个,我以前做过跟你很类似的program

那么可以麻烦您发给我?
可以参考你的逻辑 在这里先谢谢你了

作者: 孤独迷惑    时间: 2014-8-9 12:09 PM
htuomrev 发表于 2014-8-9 10:49 AM
把所有问题 random 排序,然后取你要的问题数量。
你的 project 属于什么性质?


就是那个rand() % question.size() 已经random了
但是就是会从复

就是像是从一个text file load出题目来
然后randomly display那个题目 可是我做到的是有repeated题目
像 1到5 题 做5题的话 可能会有几题会从复一样的题目

project就像我所讲的那样
作者: htuomrev    时间: 2014-8-10 12:55 AM
本帖最后由 htuomrev 于 2014-8-10 12:56 AM 编辑
孤独迷惑 发表于 2014-8-9 12:09 PM
就是那个rand() % question.size() 已经random了
但是就是会从复


你误解了,我没有用array或任何vector又push又delete的方式。
简单来说,比如你的text file里有10题问题,
原本的排序应该是:0,1,2,3,4,5,6,7,8,9
随机打乱:8,6,9,3,1,0,5,7,4,2
如果説你只要五题,所以拿前面五个即可,为:8,6,9,3,1
用排序的方式就绝对不会出现随机重复的问题。

--------------

用你的理论如果要解决,其实简单。

生成一个问题数的array,比如説text file里有十题:arrayA[10]
然后arrayA里的value就为0-9。

这个时候你就取10里的randam number,比如説5
然后把arrayA[5]的value储存到另一个arrayB,然后在从arrayA删了index 5,
这过程重复到arrayB的大小和你需要的题目相同为止。

---------------

当然,从你的code入手你可以在 random_integer[q] = rand() % question.size(); 之前做个detection,看看random_integer里头是否已经存在同样的value,无继续,有则下一个。当然,这效率绝对是惨不忍睹。

---------------

你的 project 如果只是这样还真的是小菜一叠,有详情么?

作者: 孤独迷惑    时间: 2014-8-10 01:26 AM
htuomrev 发表于 2014-8-10 12:55 AM
你误解了,我没有用array或任何vector又push又delete的方式。
简单来说,比如你的text file里有10题问 ...


你的方式没错的话是 random_shuffle(question.begin(),question.end())
这样的话是没从复没错 可是我的答案里面也会被shuffle掉
我也有试过先save进一个vector里面 然后再从那个vector shuffle

基本上就只是做个register,然后login
选择5个不同的categories 来做,一个里面有10个MCQ问题 而这10个都会random selected
然后就一直继续做 直到user结束 过后分数会被记录 显示花的总共时间
过后就display top 10 high score的users和他们的分数

就大概这样...

作者: htuomrev    时间: 2014-8-10 01:32 AM
本帖最后由 htuomrev 于 2014-8-10 01:37 AM 编辑
孤独迷惑 发表于 2014-8-10 01:26 AM
你的方式没错的话是 random_shuffle(question.begin(),question.end())
这样的话是没从复没错 可是我的 ...


用 struct ==''

struct ques {
string ques, answ;
}


如果不要用struct,用你原本的random方式,这样会简单点:
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<ctime>
  4. #include<cstring>
  5. using namespace std;

  6. int main() {
  7.    
  8.     // constant
  9.     const int num_question_in_file = 10;
  10.     const int num_question = 5;
  11.    
  12.     // array to keep data
  13.     int question_seq[num_question]; // <- result array
  14.     int temp_array[num_question_in_file];
  15.    
  16.     // initialize for temp array (value = index)
  17.     for (int i=0;i<num_question_in_file;i++) {
  18.         temp_array[i] = i;
  19.     }
  20.    
  21.     // seed of random
  22.     srand(time(NULL));
  23.    
  24.     // var for keep index of random result
  25.     int index;
  26.    
  27.     // generate random index and push into array question_seq without repeat
  28.     for (int i=0;i<num_question;i++) {
  29.         index = rand() % (num_question_in_file - i);
  30.         question_seq[i] = temp_array[index];
  31.         // remove arleady index from temp array
  32.         if (index < num_question_in_file - 1)
  33.            memmove(&temp_array[index],&temp_array[index+1],sizeof(int)*(num_question_in_file-1-index));
  34.     }
  35.    
  36.     for (int i=0;i<num_question;i++) {
  37.         cout << question_seq[i] << ", ";
  38.     }
  39.     cout << endl;
  40.    
  41.     system("pause");
  42. }
复制代码
---------

你的project看起来真像assignment ==''。
如果只是assignment,不懂我倒可以帮忙一下,如果是完整system就收费了 XD。
作者: 孤独迷惑    时间: 2014-8-10 01:43 AM
本帖最后由 孤独迷惑 于 2014-8-10 01:44 AM 编辑
htuomrev 发表于 2014-8-10 01:32 AM
用 struct ==''

struct ques {


在此先感谢您了

我会参考下你写的source code
小弟我还算是个新手
所以对您可能算是小菜一碟 在加上我逻辑比较差一点
尤其是对数目字 会很容易乱

其实算是小project罢了 不过基本上我已经把login register做quiz那些做好了
你如果早点 可能就会交给你了 价钱合理Outsource了

作者: htuomrev    时间: 2014-8-10 01:47 AM
孤独迷惑 发表于 2014-8-10 01:43 AM
在此先感谢您了

我会参考下你写的source code

新手不是问题,写久了就怕你再睡着的时候也在想着coding ==''。
编程这东西刚开始是靠逻辑没错,后来就是靠经验了……
作者: 孤独迷惑    时间: 2014-8-10 01:50 AM
htuomrev 发表于 2014-8-10 01:47 AM
新手不是问题,写久了就怕你再睡着的时候也在想着coding ==''。
编程这东西刚开始是靠逻辑没错,后来就是 ...

我其实不打算做programmer
我有问了一些freelance 他们charge这个project收费
才发现原来这么好赚

我对数字特别没灵感 就很像算fees那些
算法每次都会算错 改来改去就乱了 即使写在一张纸上也是一样
所以数字对我来说我特别容易乱
作者: andy5627    时间: 2014-10-27 06:58 PM
如果有什么project要找freelance,可以找我。




欢迎光临 JBTALKS.CC (https://www.jbtalks.my/) Powered by Discuz! X2.5