Chủ đề: Dùng (%) để tạo vòng tròn số?
-
01-05-2011, 11:48 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Dùng (%) để tạo vòng tròn số?
Mình muốn một biến chạy từ 0 tới n sau đó quay lại 0 và tiếp tục chạy tới n, cứ như vậy tới khi kết thúc chương trình!
tất nhiên là loại bỏ cách
Mã:if(i == n) i = 0; i++;
int i = 0
while (true)
i = 3 % (i+2);// i sẽ chạy từ 0 tới 1 và quay lại 0;
Mình muốn nâng lên tổng quát nhưng nghĩ không ra cách! Mong nhận được sự giúp đỡ của mọi ngườiView more random threads:
- Làm trong suốt panel trong C# bằng cách nào?
- Xử lý đa luồng trong Window Form C#?
- Xác định là thứ mấy trong tuần khi biết ngày tháng năm với lập trình C#
- Load tất cả các file trong 1 folder
- Sử dụng kiểu dữ liệu nào cho các hằng số của API
- Sự khác nhau giữa IEnumwerable<> và IQueryable<>
- Làm sao phân biệt được chương trình viết bằng UDP hay TCP?
- Xây dựng chức năng phần mềm theo mô hình Cleint/Server
- lỗi "Column name or number of supplied values does not match table definition."
- chụp hình lại sau khi capture từ camera(webcam)
-
01-05-2011, 05:57 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
dùng thử i % n nhé [IMG]images/smilies/biggrin.png[/IMG]
i chạy từ 0.
-
01-05-2011, 06:55 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi MrDnD
-
02-05-2011, 08:12 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
cách của bạn vuthanhtrung
Mã:i = 0; i = i% (5+1) = 0
0/6 = 0 dư 0 => i = 0;
cách của bạn clamvn
Mã:i = 0; i = (i+ 5)%5 = 0;
0 + 5 = 5 ; 5 chia 5 = 1 dư 0 => i = 0;
và công thức đúng là :Mã:i = (i + n + 2)%(n+1);
-
02-05-2011, 08:59 AM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi Click8A4
cách của bạn : nếu i=n+1 thì (n+1 + n + 2 )%(n+1) = 1 chứ ko phải = 0.
Vậy cách mà bạn bảo là sai thì đúng, còn cách bạn bảo đúng là sai.
Bó tay
-
02-05-2011, 09:24 AM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
làm sao mà i có thể đạt được giá trị n + 1 chứ, giả sử i = n;
thì i = (i + n + 2) % (n+1) = (2n+2)%(n+1) = 0 đúng không bạn?
Mình cho i chạy từ 0 -> n mà, khi i = n thì i sẽ quay lại giá trị 0 và tiếp tục chu trình mới!
còn cách của bạn thì sẽ như thế này :
i = 0;
i = (i + n)%n = n%n = 0; và cứ chạy mãi ở số 0 đó, nó chỉ chạy khi i khác 0; và sau khi chạy tới i = n - 1 thì sẽ quay về số 0, và rồi đứng mãi ở số 0 đó! Như thế sao có thể gọi là vòng tròn được!
Hi` nếu không tin bạn có thể quăng nó vô một timer rồi show nó ra textbox là biết ngay ý mà! Thậm chí bạn có thẻ cho i bắt đầu bằng bất kì giá trị nào nằm trong khoảng từ 0 -> n, nó luôn chạy thành một vòng tròn!
Công thức này do mình tổng quát lên từ một công thức trong sách, do lâu không sử dụng nên quên mất!
Tổng kết : thuật toán có thể dùng để tạo ra một vòng tròn số, thay thế cho câu lệnh
Mã:if(i == n ) i = 0; i++;
Mã:i = (i + n + 2) % (n+1);
-
02-05-2011, 10:00 AM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Nhầm tí, cái i mình nói là ám thị vị trí của phần tử trong mảng.
công thức tổng quát cho i chạy theo 2 chiều : từ trái sang phải hay từ phải sang trái (nghĩa là i tăng dần theo chiều dương hay giảm dần theo chiều âm thì ta vẫn lấy dc 1 phần tử thông qua công thức ) là
Mã:a[(n+i%n)%n];
-
02-05-2011, 07:41 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
i = (i +n )% n
i chạy từ trái qua phải hay từ phải qua trái gì cũng dc.
-
03-05-2011, 08:54 AM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cảm ơn công thức của clamvn, bây giờ mình muốn làm cho cái vòng tron của mình chạy ngược lại thì có ai có ý tưởng gì không nhỉ?
i = (i + n + 2)%(n+1)
0 1 2 3 ... n -> 0 1 2 3 ... n -> ... -> ...
Bây giờ mình muốn nó chạy ngược lại như thế này:
n n-1 ... 3 2 1 0 -> n n-1 ... 3 2 1 0 -> ... -> ...
Không thể dùng : i = n - ((i + n + 2)%(n + 1)) được;
-
03-05-2011, 09:00 AM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
tổng quát
Mã:/** * * @author zstar */public class method { public static int nextIndex(int current, int h, int count) { //viec lua chon menu se chay vong tron current += h + count; current = current % count; return current; }}
chạy ngược nextIndex(current,-1,n)
h là bước tiến hoặc lùi , âm là lùi , dương là tiến
mình dùng cái hàm này để chọn menu vòng tròn trong J2ME
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...