Yêu cầu thg 2 10, 2019 3:38 CH 173 0 1
  • 173 0 1
0

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

Chia sẻ
  • 173 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 CÂU TRẢ LỜI


Đã trả lời thg 2 10, 2019 4:13 CH
Đã được chấp nhận
+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ế

Chia sẻ
thg 2 10, 2019 4:25 CH

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?

Avatar Hoàng Đức Quân @devil_boom_129
thg 2 10, 2019 4:27 CH

@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

Avatar Hoàng Đức Quân @devil_boom_129
thg 2 10, 2019 4:31 CH

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

thg 2 10, 2019 4:40 CH

@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.

Avatar Hoàng Đức Quân @devil_boom_129
thg 2 10, 2019 4:42 CH

@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à

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí