查看: 1252|回復: 7

[解決] 請各位大大幫我debug

[複製鏈接]
  • TA的每日心情
    開心
    2015-8-22 22:33
  • 簽到天數: 120 天

    [LV.7]常住居民III

    70

    主題

    386

    帖子

    2247

    積分

    金牌會員

    Rank: 6Rank: 6

    積分
    2247

    程式設計達人 - 2014新手達陣

    發表於 2014-8-12 16:04:51 | 顯示全部樓層 |閱讀模式

    趕快加入我們來參與討論吧!

    您需要 登錄 才可以下載或查看,沒有帳號?加入我們

    x
    本帖最後由 Panda_Liu 於 2014-8-13 20:50 編輯

    這個選號機每次都在跑到10組前就停止了
    求各位學長幫我debug優化



    [C++] 純文本查看 復制代碼
    #include<iostream>
    #include<ctime>
    #include<windows.h>
    using namespace std;
    int main()
    {
        int result,lol[5],rein=0,times,m=1;
        cout<<"LOL抽獎---幸運電腦選號機"<<endl<<"請輸入你要的組數"<<endl; 
        cin>>times;
        system("cls");
        cout<<endl<<"選號結果如下"<<"共"<<times<<"組"<<"---祝您得到全角色及造型"<<endl<<endl;
        srand(time(NULL));
        while(times--)
        {
            for(int i=0;i<5;i++)
            {
                result=rand()%39+1;
                for(int n=0;n<i;n++)
                {
                    if(lol[n]==result)
                    {
                        rein=1;
                        break;
                    }
                }
                if(rein==1)
                    i--;
                lol=result;
                Sleep(10);
            }
            cout<<"第"<<m<<"組. ";
            for(int j=0;j<5;j++)
            {
                cout<<lol[j]<<" ";
                Sleep(200);
            }
            cout<<endl<<endl;
            m++;
        }        
            system("pause");
        return 0;  
    }
    
    

    By Sylveon 請愛用代碼插入的功能






    電腦選號.zip

    627 Bytes, 下載次數: 1

    怪怪的會莫名停止

    回復

    使用道具 檢舉

  • TA的每日心情
    開心
    2015-4-12 10:09
  • 簽到天數: 137 天

    [LV.7]常住居民III

    142

    主題

    686

    帖子

    3559

    積分

    邁向天堂

    蘇多門

    Rank: 8Rank: 8

    積分
    3559

    新手達陣台南一中資訊社程式設計達人 - 2014

    發表於 2014-8-12 16:32:31 | 顯示全部樓層
    我並沒有仔細研究你的程式碼,所以不太知道rein這個變數是做什麼用的
    每次只要執行到第22行rein被設為1,27行的i--會造成無窮迴圈
    蘇多門 domen111
    My Web: https://sites.google.com/site/domenprg/
    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    開心
    2015-8-22 22:33
  • 簽到天數: 120 天

    [LV.7]常住居民III

    70

    主題

    386

    帖子

    2247

    積分

    金牌會員

    Rank: 6Rank: 6

    積分
    2247

    程式設計達人 - 2014新手達陣

     樓主| 發表於 2014-8-12 16:58:24 | 顯示全部樓層
    本帖最後由 Panda_Liu 於 2014-8-12 17:07 編輯
    domen111 發表於 2014-8-12 16:32
    我並沒有仔細研究你的程式碼,所以不太知道rein這個變數是做什麼用的
    每次只要執行到第22行rein被設為1,27 ...

    rein是用來檢查選出來的數字有沒有重複的if(lol[n]==result)
                    {
                    rein=1;
                    break;
                    }
    這一段是檢查有沒有重複 有的話把rein設為1
                    if(rein==1)
                    i--;
                    lol=result;
                    Sleep(10);
    如果有重複 則i--(重跑這一次) 這樣 他會跑到沒有重複為止(我把大括號省掉了)
    如果沒有就存起來 輸出
    那個Sleep別管他


    點評

    喔喔喔~~~原來如此 謝學長~  發表於 2014-8-12 17:09
    我覺得把rein宣告在16,17行之間感覺比較好,而且應該用bool型態就可以了  發表於 2014-8-12 17:08
    27,28行之間在多一個rein=0即可,否則rein永遠都是1,i就一直減一當然就變無窮迴圈  發表於 2014-8-12 17:07
    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    慵懶
    2015-4-10 14:18
  • 簽到天數: 78 天

    [LV.6]常住居民II

    176

    主題

    612

    帖子

    3959

    積分

    管理員

    Rank: 9Rank: 9Rank: 9

    積分
    3959

    台南一中資訊社新手達陣程式設計達人 - 2014

    發表於 2014-8-12 17:12:33 | 顯示全部樓層
    C++ 沒有極限
    [C++] 純文本查看 復制代碼
    #include<cstdlib>
    #include<ctime>
    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    //定義 MAX_SIZE 為 39 
    #define MAX_SIZE 39
    
    int main()
    {
    	//初始化亂數  
    	srand(time(NULL));
    	//存放編號 
    	int card[MAX_SIZE];
    	//先依照順序放好 
    	for(int i=0 ; i<MAX_SIZE ; ++i)
    	{
    		card[i]=i+1;
    	}
    	//C++ 內建打亂 in algorithm 
    	random_shuffle(card,card+MAX_SIZE);
    	
    	cout<<"C++ 內建打亂 : "<<endl; 
    	for(int i=0; i<MAX_SIZE ;++i)
    	{
    		cout<<card[i]<<' ';
    	}
    	cout<<endl;
    	
    }

    點評

    C++居然有random_shuffle這種函數啊!  發表於 2014-8-12 18:02
    回復 支持 反對

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表