Yahoo奇摩知識+ 將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+ 網站將會轉為唯讀模式。其他 Yahoo奇摩產品與服務或您的 Yahoo奇摩帳號都不會受影響。如需關於 Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

匿名使用者
匿名使用者 發問時間: 電腦與網際網路程式設計 · 8 年前

寫一支程式可從”input.txt”讀取多行,每行由字母A~

寫一支程式可從”input.txt”讀取多行,每行由字母A~D代表花色與數字1~10組成。每行的組成格式如” A 1 B 1 C 1 D 1 A 10”,讀取完每行後,程式需計算下列情況,並將結果寫入”output.txt”.

1. 如果包含兩張相同數字,寫”a pair”到檔案的對映行

2. 如果有兩對,寫”two pair”到檔案的對映行

3. 如果有四張一樣數字,寫”four of a kind”到檔案的對映行

4. 如果花色均相同,寫”flush”到檔案的對映行

5. 其他情況則寫”random”到檔案的對映行

已更新項目:

請用C寫!

2 個解答

評分
  • 8 年前
    最佳解答

    如果是4張相同 有算 第一種情形跟第二種情形嗎??

    2012-12-11 09:42:18 補充:

    #include <stdio.h>

    #include <vector>

    using namespace std;

    struct Poker

    {

    int Number[5],Type[5];

    };

    // return 1, a pair

    // return 2, two pair

    // return 3, four of a kind

    // return 4, flush

    // return 5, random

    int GetType(Poker Input)

    {

    int NumCount[13],i,j, CountType[4], PairCount = 0;

    memset(CountType,0,sizeof(CountType));

    memset(NumCount,0,sizeof(NumCount));

    /*確認數字*/

    for(i = 0; i < 5; i++) NumCount[Input.Number[i]]++;

    for(i = 0; i < 13; i++)

    {

    if(NumCount[i] == 4)

    return 3;

    if(NumCount[i] == 2)

    PairCount ++;

    }

    if(PairCount == 1) return 1;

    else if(PairCount == 2) return 2;

    /* 確認花色是否均相同 */

    for(i = 0; i < 5; i++) CountType[Input.Type[i]] ++;

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

    if(CountType[i] == 5)

    return 4;

    return 5;

    }

    int main()

    {

    FILE *f;

    vector <Poker> Input;

    int counter = 0;

    char tempchar;

    int num,i;

    fpos_t position;

    struct Poker Temp;

    f = fopen("input.txt","r");

    // 從input 讀取資料

    while(!feof(f))

    {

    tempchar = fgetc(f);

    if(tempchar>= 65 && tempchar <= 68)

    {

    Temp.Type[counter] = tempchar - 'A';

    // A: 0, B: 1, C: 2, D: 3

    continue;

    }

    else if(tempchar>= 48 && tempchar <= 57)

    {

    fgetpos(f,&position);

    fseek (f , position - 1 , SEEK_SET );

    fscanf(f,"%d",&num);

    Temp.Number[counter] = num - 1;

    }

    else continue;

    counter ++;

    if(counter == 5)

    {

    Input.push_back(Temp);

    counter = 0;

    }

    }

    fclose(f);

    f = fopen("output.txt","w");

    for(i = 0; i < Input.size(); i++)

    {

    switch(GetType(Input[i]))

    {

    case 1:

    fprintf(f,"a pair\n");

    break;

    case 2:

    fprintf(f,"two pair\n");

    break;

    case 3:

    fprintf(f,"four of a kind\n");

    break;

    case 4:

    fprintf(f,"flush\n");

    break;

    case 5:

    fprintf(f,"random\n");

    break;

    }

    }

    }

    2012-12-12 23:27:04 補充:

    我是用C寫啊!!!

    參考資料: 自己的經驗
  • 匿名使用者
    7 年前

    * ***** http://*****/

    [電子遊戲]

    拉霸、水果盤、7PK、5PK

    [運彩遊戲]

    棒球、籃球、足球、網球、冰球、各種體育經典賽事

    [真人遊戲]

    百家樂、21點、骰寶、輪盤、牌九、三公、輪盤、翻攤、牛牛、二八杠

    [對戰遊戲]

    台灣麻將、德州撲克、骰盅吹牛、四支刀、鬥地主、十三支、二八槓、暗棋、接龍

    [彩球遊戲]

    香港六合、台灣樂透、今彩539、樂合彩、大陸時時彩、基諾彩、北京賽車、賽狗、賽馬、指數

    [優惠活動]

    1. 新舊會員儲值就送500點

    2. 真人百家樂彩金等你拿

    ***** http://*****/

    歡迎免費體驗試玩!!

    線上影片直播、正妹圖、討論區免費註冊 ~

還有問題?馬上發問,尋求解答。