【問題描述】
抽籤是我們日常生活中經常遇到的一件事,並且其形式有很多種。這裏介紹一種抽籤遊戲,如圖3-2所示,最上面一排是遊戲的參加者——稱爲抽籤者,最下面一排是籤號(獎品、公差等)。每個人依次順着豎線往下走,當碰到橫線時,即轉橫向前進,碰到豎線再往下,以此類推,則遊戲結束後,抽籤者會一一對應到最下面一排的籤號。
#include "stdafx.h"
#include<iostream>
#include<string>
#include<iomanip>
#define N 6
#define M 8
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int i = 0;
int j = 0;
string t;
string A[N] = { "張三","李四","王五","趙陽","孟飛","凌墨" }; //抽籤者
string P[N] = { "蘋果手機一部", "PAID 一部", "100元充值卡", "謝謝抽獎","謝謝抽獎","美女一位" }; //獎品
const int C[M][N - 1] = { { 0, 0, 1, 0,0 }, { 1,0 ,1, 0,1 }, { 1, 0, 1, 0,0 },
{ 1, 0, 1,0, 1 }, { 0, 1,0, 0, 1 }, { 0, 1, 0, 1,0 }, { 1, 0,0, 1, 0 }, { 1,0,1, 0, 0 } };
std::cout << "以下是參加抽獎的觀衆:" << endl;
for (j = 0; j < N; j++)
{
std::cout << setiosflags(ios_base::left) << setw(10) << A[j] << endl;;
}
std::cout << "以下是今天的全部獎品:" << endl;
for (j = 0; j < N; j++)
{
std::cout << setiosflags(ios_base::left) << setw(10) << P[j]<<endl;
}
for (i = 0; i < M; i++) //進行交換數據
{
for (j = 0; j < N - 1; j++)
{
if (C[i][j] == 1)
{
t = A[j];
A[j] = A[j + 1];
A[j + 1] = t;
}
}
}
std::cout << "最終抽籤者抽到的獎品是:" << endl;
for (j = 0; j < N; j++)
{
std::cout << setiosflags(ios_base::left) << setw(10) << A[j]
<< setiosflags(ios_base::left) << setw(10) << P[j] << endl;;
}
std::cout << endl;
return 0;
}