Quyển 5 - Ma Chiến Sĩ

Chương 290: Ma thuật máy tính, phép cộng và người mai mối

Chương 290: Ma thuật máy tính, phép cộng và người mai mối

Chương 290: Phép thuật máy tính bỏ túi, bài toán cộng và chuyện làm mai

Cuối cùng, đội của Rittsu cũng không giành được chiến thắng.

“Taito này, từ trò gắp sỏi tôi mới nghĩ ra, nếu có thể tính toán bằng cách nhấn nút thì tiện lợi biết mấy.”

Bēku lại nói ra một điều gì đó nghe thật rắc rối.

Phép toán bốn phép tính tưởng chừng đơn giản nhưng lại ẩn chứa chiều sâu, đặc biệt là cách sử dụng số âm.

Với ‘1 + 1’ thì không sao.

‘1 × 1’ cũng ổn.

Vấn đề nằm ở ‘1 × -1’.

Anh nghĩ xem nó là gì.

Ký hiệu ‘× -’ cứ thế nối tiếp nhau.

Nếu số và ký hiệu luân phiên nhau thì xét về mặt lập trình, nó sẽ cực kỳ đơn giản.

Nhưng nếu phải ưu tiên phép nhân và phép chia hơn phép cộng, thì đây sẽ là một vấn đề đau đầu khủng khiếp.

Máy tính bỏ túi quả là phức tạp.

“Bất kể điều kiện trao đổi thế nào cũng không được đâu. Trước đây không phải đã có cái này rồi sao: ‘Cầu ma pháp đáp số, không nhận vật phẩm nào. Mau thi triển ma pháp. Quay về, mang theo đáp số của XX. Ta kết thúc ma pháp.’ Cứ thế mà chấp nhận đi.”

“Nhưng cái đó đâu có biến thành Ma đạo cụ được. Khi công thức thay đổi thì thần chú cũng đổi theo mà.”

Đành chịu, phải lôi cái đã làm trước đây ra thôi.

```c

#include <stdio.h>

#include <stdlib.h>

int main(int argc,char *argv[])

{

int i,sum=0;/*カウンターと合計*/

if(argc<=1) return(0);/*足し算なし*/

for(i=1;i<argc;i++){/*入力された数だけループする*/

sum=sum+atoi(argv[i]);/*入力された数値を足す*/

}

return(sum);/*答えを返す*/

}

```

Tôi đưa cho Bēku xem thứ đó.

“Ơ… Nó sẽ thành ‘Ta hàm chứa, quy tắc nhập xuất tiêu chuẩn. Ta hàm chứa, quy tắc thư viện tiêu chuẩn. Đáp số ma pháp là số, thì thầm số và, thì thầm quần thể được trao làm tế vật. Mau thi triển ma pháp. Ni (ký tự katakana ni) và Tonamo là số, Tomona là 0. Nếu thì thầm số nhỏ hơn 1, hãy quay về với 0. Ni (ký tự katakana ni) bắt đầu từ 1, lặp lại bằng thì thầm số, Ni tăng dần 1 đơn vị. Bắt đầu lặp. Tonamo là, Tomona cộng chuyển đổi số, trao thì thầm quần thể thứ Ni (ký tự katakana ni). Kết thúc lặp. Quay về với Tomona. Ta kết thúc ma pháp’ ư?”

“Sao nào? Thử thi triển xem.”

“Ừm. ‘Tính toán’. Mặc dù chỉ là phép cộng thôi, nhưng tiện lợi thật đấy.”

“Phép thuật này có một mẹo nhỏ đấy. Thêm dấu trừ vào đầu con số thì có thể làm phép trừ được luôn.”

“‘Tính toán’. Thật này! Tôi có thể làm Ma đạo cụ này được không? Nếu được nâng cấp thêm nữa thì mừng quá.”

“Tùy vào khoản thù lao thì tôi sẽ cân nhắc.”

“Là quyền làm người mai mối cho đám cưới của Rachetta đấy.”

“Thứ đó tôi không cần! Anh coi thường tôi đấy à?”

“Ưm… Tôi tưởng là ý hay chứ. Maira-san thì lại thích lắm cơ.”

Hắn đã kể với Maira rồi sao.

Khốn kiếp, đúng là đã bị nhìn thấu điểm yếu rồi.

Nói đến người mai mối thì phải dắt chính thê đi cùng chứ.

Nếu là Maira, được tôi dắt đi thì chắc chắn sẽ rất vui.

“Bốn người cùng nhau. Năm người chúng ta sẽ làm mai.”

“Cũng được thôi. Thế bài diễn văn thì sao?”

“Tôi sẽ đại diện phát biểu. Hoặc tất cả chúng ta cùng phát biểu.”

“Đành chịu vậy.”

Sao tự dưng lại thành ra như thể tôi đang yêu cầu vô lý thế này.

Phải nói rõ ràng ra mới được.

“Không phải tôi đang nhờ vả đâu nhé. Đây là mệnh lệnh. Hơn nữa, làm người mai mối xong thì cả đời phải ngẩng đầu không nổi đấy.”

“Ơ… Thế thì tôi bỏ cuộc đây!”

“Nói thế thì sẽ bị Rachetta ghét đấy.”

“Có chuyện gì vậy ạ?”

“Rachetta không liên quan gì đâu. À không, ý anh là… Đang định nhờ Taito làm mai ấy mà.”

“Tuy có vẻ hơi sớm một chút, nhưng tôi rất vui ạ.”

“Thấy chưa, Rachetta rất tôn trọng tôi đấy.”

“Khụ, đành chịu vậy.”

“Vốn dĩ là do anh nói ra trước mà.”

“Gì cơ, gì cơ?”

“Là bí mật thảo luận sao?”

“Tôi nghe thấy rồi mà. Chuyện người mai mối đúng không?”

“Thật là sớm quá đi mất.”

Maira và mọi người cũng xúm lại.

“Thế là chúng ta sẽ làm mai cho Bēku và Rachetta. Tuy nhiên, với điều kiện là Bēku không bị ghét bỏ trước khi cưới nhé. Tôi nói trước là năm người chúng ta đấy.”

Maira và mọi người bắt đầu ồn ào. Họ đang bàn tán về trang phục sẽ mặc khi làm mai.

“Đồng chí, cái giá phải trả lớn thật đấy, nhưng ta đã có được thứ tốt rồi.”

“Cũng phải thôi. Có khi thành tỷ phú cũng nên.”

“Vậy thì chúng ta hãy thử dịch ngay sang ngôn ngữ So-Mikaka xem sao.”

Nó viết là: “A ni mi so ri na shi i, ne to ka shi ni ra ru ku ru, a ni mi so ri na shi i, ne to ka shi ri ni ko ru ku ru, ni mi ka, mo chi ni mi yu ni mi ka, chi su ki so ne so ku chi su, ke chi su ki hi ga mu yo, ga, ni mi ka, ni ne to na mo ho wa re, ni ha yu chi su ki so ne ho nu yo, su i ka na su mi yu wa yo re, ha ra su yu ni ho nu re ni ne chi su ki so re ni re re yo ga, to na mo ho to na mo re chi ka ra ni yu chi su ki hi ga ni mu yo re, mu, su i ka na su mi yu to na mo yo re, mu.”

Lúc nào nhìn cái thứ tiếng So-Mikaka này tôi cũng chẳng hiểu gì sất.

Ma đạo cụ phép cộng và những lá bùa bán chạy như tôm tươi.

Đến mức trong một thời gian dài, vẻ mặt hớn hở của Bēku và Rittsu cứ giữ mãi.

Thật là khó chịu không tả được.

Hóa ra có rất nhiều người gặp khó khăn trong việc tính toán.

Thế là tôi bắt tay vào phép thuật máy tính bỏ túi, nhưng giữa chừng lại bỏ dở.

Đã mất công làm rồi, thì cứ ghi lại thôi.

––––––––––––––––––––––––––––––––––––––

Đây là phép thuật máy tính bỏ túi chưa hoàn thành.

Cũng có thể nói là tôi đã chán nản giữa chừng khi lập trình.

Vì nó quá dài nên tôi sẽ đặt nó ở cuối văn bản.

Còn nhiều điểm cần cải thiện như hiển thị, nhưng vì tác giả là một lập trình viên cùi bắp nên không có đủ động lực để tạo ra phiên bản hoàn chỉnh.

Không đọc cũng chẳng ảnh hưởng gì đâu.

Thỉnh thoảng tôi lại nghĩ, nếu tác phẩm này mà làm theo kiểu 80% là lập trình, mỗi chương khoảng 10.000 chữ, thì sao nhỉ.

Chắc là sẽ không có ai đọc đâu, nhưng hiệu quả về mặt điểm số quảng cáo thì có vẻ tốt đấy.

```c

#include <stdio.h>

#include <stdlib.h>

extern MAGIC *obj_make(long obj_size_mm,int image,int attri);

extern int touch(MAGIC *mp);

extern int mclose(MAGIC *mp);

MAGIC *mp[10],*mpadd,*mpsub,*mpmul,*mpdiv,*mpequ;/*魔法の定義*/

int sum,value,step;/*合計、対象の数、ステップ*/

void value_inpit(void)

{

int i;/*カウンタ*/

for(i=0;i<10;i++){

if(touch(mp[i])==1){/*数字に触った*/

value=value*10+i;/*桁が進む*/

}

}

}

void close_button(void)/*ボタンを閉じる*/

{

for(i=0;i<10;i++){

mclose(mp[i]);

}

mclose(mpadd);

mclose(mpsub);

mclose(mpmul);

mclose(mpdiv);

mclose(mpequ);

}

int main(void)

{

int image_button[10]={IMAGEBUTTON0,IMAGEBUTTON1,IMAGEBUTTON2,IMAGEBUTTON3,IMAGEBUTTON4,IMAGEBUTTON5,IMAGEBUTTON6,IMAGEBUTTON7,IMAGEBUTTON8,IMAGEBUTTON9};/*ボタンイメージ*/

int i;/*カウンタ*/

for(i=0;i<10;i++){

mp[i]=obj_make(10,IMAGEBUTTON[i],HOLOGRAPHY);/*0から9までの番号が書かれたボタンをホログラフィで生成*/

}

mpadd=obj_make(10,IMAGEBUTTONADD,HOLOGRAPHY);/*+と書かれたボタンをホログラフィで生成*/

mpsub=obj_make(10,IMAGEBUTTONSUB,HOLOGRAPHY);/*-と書かれたボタンをホログラフィで生成*/

mpmul=obj_make(10,IMAGEBUTTONMUL,HOLOGRAPHY);/*×と書かれたボタンをホログラフィで生成*/

mpdiv=obj_make(10,IMAGEBUTTONDIV,HOLOGRAPHY);/*÷と書かれたボタンをホログラフィで生成*/

mpequ=obj_make(10,IMAGEBUTTONEQU,HOLOGRAPHY);/*=と書かれたボタンをホログラフィで生成*/

sum=0;/*合計0*/

value=0;/*数値0*/

step=0;/*処理ステップ0*/

while(1){

switch(step){

case 0:/*最初*/

if(touch(mpsub)==1){ step=2; break; }/*マイナスから始まる*/

value_inpit();/*1桁入力*/

if(value!=0){ step=1; break; }/*プラスから始まる*/

break;

case 1:/*足す*/

value_inpit();/*1桁入力*/

if(touch(mpadd)==1){ step=1; sum=sum+value; value=0; break; }

if(touch(mpsub)==1){ step=2; sum=sum+value; value=0; break; }

if(touch(mpmul)==1){ step=3; sum=sum+value; value=0; break; }

if(touch(mpdiv)==1){ step=6; sum=sum+value; value=0; break; }

if(touch(mpequ)==1){ sum=sum+value; close_button(); retuen(sum); }/*イコール処理*/

break;

case 2:/*引く*/

value_inpit();/*1桁入力*/

if(touch(mpadd)==1){ step=1; sum=sum-value; value=0; break; }

if(touch(mpsub)==1){ step=2; sum=sum-value; value=0; break; }

if(touch(mpmul)==1){ step=3; sum=sum-value; value=0; break; }

if(touch(mpdiv)==1){ step=6; sum=sum-value; value=0; break; }

if(touch(mpequ)==1){ sum=sum-value; close_button(); retuen(sum); }/*イコール処理*/

break;

case 3:/*掛ける*/

if(touch(mpsub)==1){ step=4; break; }/*マイナスを掛ける*/

value_inpit();/*1桁入力*/

if(value!=0){ step=5; break; }/*プラスを掛ける*/

break;

case 4:/*掛けるマイナス*/

value_inpit();/*1桁入力*/

if(touch(mpadd)==1){ step=1; sum=sum*value*-1; value=0; break; }

if(touch(mpsub)==1){ step=2; sum=sum*value*-1; value=0; break; }

if(touch(mpmul)==1){ step=3; sum=sum*value*-1; value=0; break; }

if(touch(mpdiv)==1){ step=4; sum=sum*value*-1; value=0; break; }

if(touch(mpequ)==1){ sum=sum*value*-1; close_button(); retuen(sum); }/*イコール処理*/

break;

case 5:/*掛けるプラス*/

```

Dưới đây là bản dịch đoạn mã sang tiếng Việt, diễn đạt theo ngữ cảnh "Lập trình ma pháp" như trong bảng tên đã cung cấp:

```

Tiếp nhận giá trị nhập vào; /* Nhập một chữ số */

Nếu điểm cộng ma pháp được chạm tới: {

chuyển_bước = 1;

tổng = tổng * giá_trị;

giá_trị = 0;

thoát;

}

Nếu điểm trừ ma pháp được chạm tới: {

chuyển_bước = 2;

tổng = tổng * giá_trị;

giá_trị = 0;

thoát;

}

Nếu điểm nhân ma pháp được chạm tới: {

chuyển_bước = 3;

tổng = tổng * giá_trị;

giá_trị = 0;

thoát;

}

Nếu điểm chia ma pháp được chạm tới: {

chuyển_bước = 4;

tổng = tổng * giá_trị;

giá_trị = 0;

thoát;

}

Nếu điểm bằng ma pháp được chạm tới: {

tổng = tổng * giá_trị;

vô_hiệu_hóa_nút_bấm();

trả_về(tổng); /* Xử lý dấu bằng */

}

thoát;

Trường hợp 6: /* Phép chia */

Nếu điểm trừ ma pháp được chạm tới: {

chuyển_bước = 7;

thoát;

}

Tiếp nhận giá trị nhập vào; /* Nhập một chữ số */

Nếu giá_trị khác 0: {

chuyển_bước = 8;

thoát;

}

thoát;

Trường hợp 7: /* Chia số âm */

Tiếp nhận giá trị nhập vào; /* Nhập một chữ số */

Nếu điểm cộng ma pháp được chạm tới: {

chuyển_bước = 1;

tổng = tổng / giá_trị * -1;

giá_trị = 0;

thoát;

}

Nếu điểm trừ ma pháp được chạm tới: {

chuyển_bước = 2;

tổng = tổng / giá_trị * -1;

giá_trị = 0;

thoát;

}

Nếu điểm nhân ma pháp được chạm tới: {

chuyển_bước = 3;

tổng = tổng / giá_trị * -1;

giá_trị = 0;

thoát;

}

Nếu điểm chia ma pháp được chạm tới: {

chuyển_bước = 4;

tổng = tổng / giá_trị * -1;

giá_trị = 0;

thoát;

}

Nếu điểm bằng ma pháp được chạm tới: {

tổng = tổng / giá_trị * -1;

vô_hiệu_hóa_nút_bấm();

trả_về(tổng); /* Xử lý dấu bằng */

}

thoát;

Trường hợp 8: /* Chia số dương */

Tiếp nhận giá trị nhập vào; /* Nhập một chữ số */

Nếu điểm cộng ma pháp được chạm tới: {

chuyển_bước = 1;

tổng = tổng / giá_trị;

giá_trị = 0;

thoát;

}

Nếu điểm trừ ma pháp được chạm tới: {

chuyển_bước = 2;

tổng = tổng / giá_trị;

giá_trị = 0;

thoát;

}

Nếu điểm nhân ma pháp được chạm tới: {

chuyển_bước = 3;

tổng = tổng / giá_trị;

giá_trị = 0;

thoát;

}

Nếu điểm chia ma pháp được chạm tới: {

chuyển_bước = 4;

tổng = tổng / giá_trị;

giá_trị = 0;

thoát;

}

Nếu điểm bằng ma pháp được chạm tới: {

tổng = tổng / giá_trị;

vô_hiệu_hóa_nút_bấm();

trả_về(tổng); /* Xử lý dấu bằng */

}

thoát;

}

}

vô_hiệu_hóa_nút_bấm(); /* Vô hiệu hóa nút bấm */

trả_về(tổng); /* Hoàn tất */

}

```

Hãy bình luận để ủng hộ người đăng nhé!