1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bai toan tang hoa truong hop so nam 2 so nu

3 1 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 3
Dung lượng 8,76 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Họ cho rằng để tránh các ý kiến dị nghị không hay về sau, nên - chọn ngẫu nhiên các bạn gái được tặng hoa và khi đã chọn được bạn gái rồi thì - chọn ngẫu nhiên 2 bạn trai lên tặng hoa ch[r]

Trang 1

BÀI TOÁN TẶNG HOA

Bài toán

Một lớp học có sonu = 16 học sinh nữ và sonam = 28 học sinh nam Nhân ngày 8 tháng 3, các bạn nam muốn tặng hoa cho các bạn nữ nhưng còn e ngại vì không biết bạn nam nào sẽ tặng hoa cho bạn nữ nào Một nhóm học sinh trong lớp đưa ra ý kiến “Chọn ngẫu nhiên” Họ cho rằng để tránh các ý kiến dị nghị không hay về sau, nên

- chọn ngẫu nhiên các bạn gái được tặng hoa và khi đã chọn được bạn gái rồi thì

- chọn ngẫu nhiên 2 bạn trai lên tặng hoa cho bạn gái đó

Giải pháp có vẻ hợp lý và công minh vì không ai có thể nói ra, nói vào dựa vào cách tặng hoa này

Tuy nhiên, để một bạn gái được 2 bạn nam tặng hoa thì số bạn nam không đủ Sẽ cần một số bạn nam tặng hoa cho 2 bạn gái Chọn ai bây giờ? Lại “Chọn ngẫu nhiên” là giải phát tốt nhất

Yêu cầu: Lập trình thực hiện cách tặng hoa như trên.

Dữ liệu: Gán thẳng trong chương trình nhờ thủ tục DuLieu.

Kết quả: Đưa ra màn hình và ghi ra tệp TANGHOA.OUT, mỗi lần tặng hoa ghi trên 1 dòng, trên dòng đó

ghi tên 2 bạn trai, tiếp đó là tên bạn gái được 2 bạn trai đó tặng hoa

MÃ NGUỒN (Tệp TANGHOA2.PAS)

{truong hop sonam < 2*sonu}

uses crt;

const

tentep = 'TANGHOA2'; {Ten tep}

sonu = 16;

sonu2 = 2*sonu;

sonam = 28;

type

TENHS = string[10];

var

dsnu: array[1 sonu] of TENHS; {Dau vao}

dsnam: array[1 sonu2] of TENHS; {Dau vao}

tang: array[1 sonu,1 3] of TENHS; {Dau ra}

dcnu: array[1 sonu] of 0 1; {bien phu}

dcnam: array[1 sonu2] of 0 1; {bien phu}

thutu: byte; {bienphu}

f:text; {Bien tep}

{tao du lieu de xu ly}

procedure DuLieu;

BEGIN

{danh sach cac ban nu}

dsnu[1] := 'nu01'; dsnu[2] := 'nu02'; dsnu[3] := 'nu03'; dsnu[4] := 'nu04';

dsnu[5] := 'nu05'; dsnu[6] := 'nu06'; dsnu[7] := 'nu07'; dsnu[8] := 'nu08';

dsnu[9] := 'nu09'; dsnu[10] := 'nu10'; dsnu[11] := 'nu11'; dsnu[12] := 'nu12';

dsnu[13] := 'nu13'; dsnu[14] := 'nu14'; dsnu[15] := 'nu15'; dsnu[16] := 'nu16';

{danh sach cac ban nam}

Trang 2

dsnam[1] := 'nam01'; dsnam[2] := 'nam02'; dsnam[3] := 'nam03'; dsnam[4] := 'nam04'; dsnam[5] := 'nam05'; dsnam[6] := 'nam06'; dsnam[7] := 'nam07'; dsnam[8] := 'nam08'; dsnam[9] := 'nam09'; dsnam[10] := 'nam10'; dsnam[11] := 'nam11'; dsnam[12] := 'nam12'; dsnam[13] := 'nam13'; dsnam[14] := 'nam14'; dsnam[15] := 'nam15'; dsnam[16] := 'nam16'; dsnam[17] := 'nam17'; dsnam[18] := 'nam18'; dsnam[19] := 'nam19'; dsnam[20] := 'nam20'; dsnam[21] := 'nam21'; dsnam[22] := 'nam22'; dsnam[23] := 'nam23'; dsnam[24] := 'nam24'; dsnam[25] := 'nam25'; dsnam[26] := 'nam26'; dsnam[27] := 'nam27'; dsnam[28] := 'nam28'; END;

{xacs dinh cac ban nam tang hoa 2 lan}

procedure ThemNam;

var canthem, i, cs: byte;

BEGIN

fillchar(dcnam, sizeof(dcnam),0);

canthem := sonu2 - sonam;

for i := 1 to canthem do

begin

repeat

cs := 1 + random(sonam);

until (dcnam[cs] = 0);

dsnam[sonam + i] := dsnam[cs];

dcnam[cs] := 1;

end;

fillchar(dcnam, sizeof(dcnam),0);

END;

{chon ban nu duoc tang hoa}

procedure ChonNu;

var cs: byte; {chi so}

BEGIN

repeat

cs := 1+random(sonu);

until (dcnu[cs] = 0);

dcnu[cs] := 1;

tang[thutu][1] := dsnu[cs];

END;

{chon 2 ban nam}

procedure Chon2Nam;

var cs: byte; {chi so}

BEGIN

repeat {chon nam 1}

cs := 1+random(sonu2);

until (dcnam[cs] = 0);;

dcnam[cs] := 1;

tang[thutu][2] := dsnam[cs];

repeat {chon nam 2}

cs := 1+random(sonu2);

until (dcnam[cs] = 0);

dcnam[cs] := 1;

tang[thutu][3] := dsnam[cs];

END;

Trang 3

{Chuong trinh chinh}

BEGIN

clrscr;

assign(f,tentep+'.OUT');

DuLieu;

ThemNam;

fillchar(dcnu, sizeof(dcnu),0);

randomize;

thutu := 0;

repeat

clrscr;

inc(thutu);

if thutu = 1 then rewrite(f) else append(f);

ChonNu;

Chon2Nam;

writeln('Lan thu ',thutu,': 2 ban nam ',tang[thutu][2],' va ',tang[thutu][3],' tang hoa ban nu ',tang[thutu][1]); writeln(f,tang[thutu][2],' + ',tang[thutu][3],' tang ',tang[thutu][1]);

close(f);

writeln;

if thutu<sonu then

begin

write('Nhan ENTER de chon tiep.');

readln;

end;

until (thutu>=sonu);

writeln;

write('Da xong Nhan ENTER de thoat.');

readln;

END

Ngày đăng: 14/10/2021, 12:27

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w