Tulis sebuah program yang memvisualisasikan pembagian panjang dengan seni ASCII. Input terdiri dari dua bilangan bulat, pembilang dan penyebut, menggunakan format input pilihan Anda.
Contoh:
1234 ÷ 56:
22
----
56|1234
112
---
114
112
---
2
1002012 ÷ 12:
83501
-------
12|1002012
96
---
42
36
--
60
60
--
12
12
--
0 ÷ 35
0
-
35|0
Aturan:
- Penggunaan divisi operator bahasa pemrograman ini adalah diperbolehkan.
- Penggunaan dukungan integer besar juga diperbolehkan.
- Untuk konsistensi:
- Jika hasil bagi adalah nol, cetak satu nol di ujung papan selam.
- Jika sisanya nol, jangan cetak.
- Jangan cetak angka nol di depan pada nomor apa pun.
- Kelebihan baris baru di ujung dan spasi tambahan ke kanan diizinkan.
- Solusi dengan karakter paling sedikit menang.
Batas:
- 0 <= pembilang <= 10 72 - 1
- 1 <= penyebut <= 9999999
Ini menyiratkan bahwa output tidak akan pernah lebih luas dari 80 kolom.
Test suite dan implementasi sampel:
Anda dapat menggunakan long-division.c ( intisari ) untuk menguji program Anda. Ini sebenarnya adalah skrip bash dengan program C di dalamnya. Tweak untuk menjalankan program Anda di test suite. Lihatlah kode C di bagian bawah untuk melihat implementasi referensi. Tolong beri tahu saya jika ada masalah dengan program sampel atau test suite.
$ ./long-division.c 10 7
1
--
7|10
7
--
3
$ ./long-division.c
PASS 1234 ÷ 56
PASS 1002012 ÷ 12
PASS 1 ÷ 1
--- snip ---
Score: 35 / 35
All tests passed!
Sunting: Atas permintaan, saya memasukkan input suite tes dan output yang diharapkan ke dalam file teks ( inti ). Contoh penggunaan (bash):
cat input | while read nd; do
./program $nd |
sed 's/\s*$//' | sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba'
done > output
diff -u expected output
Perintah sed yang aneh menyaring jejak dan spasi baru dari keluaran program.