Làm thế nào để tạo ra gawk program hoàn chỉnh trên linux ?
Đề 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
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ế
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?
@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
Để 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
@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.
@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à