Asked Feb 10th, 2019 3:38 p.m. 186 0 1
  • 186 0 1
0

Làm thế nào để tạo ra gawk program hoàn chỉnh trên linux ?

Share
  • 186 0 1

Đề bài của mình là như vầy: Format sau khi paste mấy cái số có hơi khó nhìn mong mọi người bỏ qua

We want to make sure that all angle values in degrees are between 0° < x < 360°. For any file containing a list of angles in degrees with the Degrees header line at the top (as in angles.txt), write a complete gawk program that prints out the original value of the angle in the file as well as its coterminal value between 0° < x < 360°. In this file, for example, the gawk program should print the following: $ gawk -f minor1.gawk angles.txt

135 	135
90 	 	90
1860 	60
-45 	315
0 	 	0
-270 	90
1170 	90
-180 	180
-795 	285
-630	90

1 ANSWERS


Answered Feb 10th, 2019 4:13 p.m.
Accepted
+1

Mình thì hoàn toàn không biết gawk syntax sao nhưng bản chất bài toán trên là bài toán chia lấy phần dư, ví dụ như 1860 chia 360 dư 60. Thế nên quay về mặt thuật toán cũng là bài toán cơ bản. Bạn suy nghĩ hướng đó rồi viết syntax của gawk chạy thử nhé Mình viết mã giả

// a là số đọc từ file
// b là kq đổi ra
b = a%360;
fwrite(b, filename);

ý tưởng chỉ có thế

Share
Feb 10th, 2019 4:25 p.m.

Mình lúc nãy nghĩ về thuật toán như vầy:

Mình xài while loop, nếu số nằm ngoài khoảng 0 và 360 thì mình xét điều kiện.

Nếu như số đó < 0 thì mình cứ +360 lên cho tới khi nó nằm trong khoảng 0 và 360;

Nếu như số đó > 360 thì mình cứ -360 xuống cho tới khi nó nằm trong khoảng 0 và 360;

Bạn nghĩ mình nghĩ như thế có được ko?

0
| Reply
Share
Avatar Hoàng Đức Quân @devil_boom_129
Feb 10th, 2019 4:27 p.m.

@Alex456 làm thế cũng được. nhưng thực sự khá là dài. mà cách đơn giản chỉ là chia lấy phần dư thôi mà. có 1 dòng

0
| Reply
Share
Avatar Hoàng Đức Quân @devil_boom_129
Feb 10th, 2019 4:31 p.m.

Screen Shot 2019-02-10 at 11.29.55 PM.png

Để bạn tin hơn thì mình đã chạy irb để thử phép chia phần dư. Bạn có thể thấy trong ảnh đầu ra của mình hoàn toàn khớp với kq dự kiến bạn đưa ra. Mà cách này ngắn gọn hơn cách bạn rất nhiều

0
| Reply
Share
Feb 10th, 2019 4:40 p.m.

@devil_boom_129 cam on bạn. Mình chỉ là nghĩ ra cách đó xong sau khi bạn nói phần dư mình chỉ muốn thử hỏi bạn em cách mình nghĩ có đúng ko. Mình vẫn đang tập tành coding nên chưa giỏi.

+1
| Reply
Share
Avatar Hoàng Đức Quân @devil_boom_129
Feb 10th, 2019 4:42 p.m.

@Alex456 không sao. code nhiều thì quen tay thôi. cố gắng "lười" viết code ở mức độ vừa phải thì code sẽ ngắn lại, gọn nhẹ và hiệu quả ấy mà

+1
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.