Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 12 kết quả

Đề tài: Vòng lặp for lồng nhau, giúp tớ hiểu rõ hơn về vòng lặp for lồng nhau?

  1. #1
    Ngày gia nhập
    04 2009
    Bài viết
    13

    Mặc định Vòng lặp for lồng nhau, giúp tớ hiểu rõ hơn về vòng lặp for lồng nhau?

    Ví dụ có một đoạn code như thế này (bài toán tìm phương án để có được 1000 từ 100, 200, 500)

    Code:
    #include<stdio.h>
    main()
    {
           int t100, t200, t500;
           for (t500=0; t500<=2; t500++)
                  for (t200=0; t200<=5; t200++)
                         for (t100=0; t100<=10; t100++)
                                if (100*t100+ 200*t200+ 500*t500 == 1000)
                                {
                                       printf("Tien 100d = ");
                                       if       (t100) printf (" %2d x 100d ", t100);
                                       else if (t200) printf (" %2d x 200d ", t200);
                                       else    (t500) printf (" %2d x 500d ", t500);
                                }
           getch();
    }
    hay (bài toán sắp xếp các số tăng dần)

    Code:
    void SapTang (float a[], int n)
    {
           for (int i=0; i<=n+2; i++)
                  for (int j=i+1; j<=n-1; j++)
                         if (a[i] > a[j])
                         {
                                float temp=a[i];
                                a[i]=a[j];
                                a[j]=temp;
                         }
    }
    Vậy cho tớ hỏi là mình phải hiểu như thế nào? Ví dụ như bài 2 tớ hỉu là: i tăng dần từ 0, và nếu thỏa đk i<=n-2 thì sẽ tiếp tục xét vòng lặp For thứ 2. Vấn đề ở chỗ là nếu cứ xét từ từ như vậy thì sẽ rất mất t/g, dễ sai sót (bài nào 5 6 cái for là ngu nặng ) , vậy có cách nào nhìn nhận vấn đề này theo cách dễ hiểu hơn ko

    Và vòng lặp For lồng vào nhau như vậy thường xuất hiện ở các dạng bài nào khi nào nên dùng nó

    Rất mong các bạn giúp tớ hỉu đc problem này. Níu đc thì giảng cho tớ kĩ kĩ nhé ( nhứt là bài 1 á, nhìn vào tớ ngu lun ) . THANKS A LOT

  2. #2
    Ngày gia nhập
    02 2009
    Nơi ở
    105 Lô P c/c ngô gia tự P.02 Q.10 TP.hcm
    Bài viết
    37

    bạn ơi bài saptang cua bạn sai o vong lap for(int i=0;i<=n-2 hoạc là i<n-1 chứa không phải là +2 dâu ;
    còn vòng lạp for lòng nhau chạy theo quy tắt như sau:
    vd:for(int i=0;i<4;i++)// vong lap chay i=0;roi` no sang chay vòng lap j chay het vong lap j no moi chay lai vòng lap i=1 va tiep tuc chay vong lap jchay het j no noi tiep tuc chay den i=2 cu the cho den i=4 no tu dong ngat vong lap
    for(int j=0;j<6;i++)

  3. #3
    Ngày gia nhập
    04 2009
    Bài viết
    13

    Cụ thể luôn đây :
    Chạy vòng for từ 2->9, bên trong là 6 vòng for từ 0->9 lồng nhau. Mỗi bước lặp thì xét điều kiện, nếu thỏa thì nhận.
    Đoạn này của ô.MOD meocon bên Topic "QUẢN LÝ SỐ ĐIỆN THOẠI", đọc xong tớ ngu người lun, mà tại sao nó phải lồng như vậy? mà nếu nó lồng vào nhau như vậy thì quá khó để hỉu ?

    Các bạn giúp tớ vụ này. Thanks nhìu lun

  4. #4
    Ngày gia nhập
    02 2009
    Nơi ở
    105 Lô P c/c ngô gia tự P.02 Q.10 TP.hcm
    Bài viết
    37

    nếu không lòng nhau thì chạy for(int i=2000000;i<=9999999;i++)// thi chạy lau lám.+muốn dò dầu số cũng lâu lám

  5. #5
    Ngày gia nhập
    03 2009
    Nơi ở
    hà nội
    Bài viết
    26

    Có tới 7 vòng lặp for tức là các số điện thoại sẽ có 7 số và từ 2000000 đến 9999999
    Vì các vòng for lồng nhau nên khi kiểm tra điều kiện nào đó nó sẽ bắt đầu từ vòng for cuối cùng.
    Mình nghĩ 7 vòng này với vòng for(int i=2000000;i<=9999999;i++) cũng chẳng khác j` nhau cả.
    Ko bít thì phải học, phải hỏi _ Bít thì nên chia sẻ cho người khác cùng bít
    Chia sẻ là cách học tốt nhất ^_^[j0y_k3y]0_0

  6. #6
    Ngày gia nhập
    02 2009
    Nơi ở
    105 Lô P c/c ngô gia tự P.02 Q.10 TP.hcm
    Bài viết
    37

    Mặc định Vòng lặp for lồng nhau, giúp tớ hiểu rõ hơn về vòng lặp for lồng nhau?

    sorry bạn trước
    if trong for thứ 1(for chính)có mện đề if(gi` gì đó)co len continue thì nó các ngan vòng lạp đi đén 1000000>>>mat theMAX la 6999999 lần lập luôn;nếu ban muốn tra số 000000000 co tôn tai không tôn tại chang le~ bạn chay hết vong lap for kia a`

  7. #7
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Trích dẫn Nguyên bản được gửi bởi bk7million Xem bài viết
    mà tại sao nó phải lồng như vậy? mà nếu nó lồng vào nhau như vậy thì quá khó để hỉu ?
    Nó lồng nhau để cố định 1 số vòng ngoài sau đó xét các số ở vòng trong.
    Nếu hết các vòng trong rồi thì lại thay đổi số chạy vòng ngoài. Rồi lại bắt đầu vòng lặp bên trong.

    Để hiểu nó thì
    Các bạn nên bắt đầu từ các vòng lặp số lần lặp nhỏ

  8. #8
    Ngày gia nhập
    03 2009
    Nơi ở
    hà nội
    Bài viết
    26

    Trích dẫn Nguyên bản được gửi bởi Phamvanla19 Xem bài viết
    sorry bạn trước
    if trong for thứ 1(for chính)có mện đề if(gi` gì đó)co len continue thì nó các ngan vòng lạp đi đén 1000000>>>mat theMAX la 6999999 lần lập luôn;nếu ban muốn tra số 000000000 co tôn tai không tôn tại chang le~ bạn chay hết vong lap for kia a`
    Mình ko hiểu ý bạn lắm?
    Nhưng nếu để chắc chắn nhập đúng số điện thoại rùi mới kiểm tra thì cũng có thể dùng lệnh if để chặn chứ?
    Code:
    ìf ((n>2000000)&&(n<9999999))
           { 
              .......................
           }
        else printf("ko có số điện thoại đó");
    Ko bít thì phải học, phải hỏi _ Bít thì nên chia sẻ cho người khác cùng bít
    Chia sẻ là cách học tốt nhất ^_^[j0y_k3y]0_0

  9. #9
    Ngày gia nhập
    03 2009
    Nơi ở
    hà nội
    Bài viết
    26

    hì hì sorry! lúc trước mình nhầm :(
    Ko phải là thực hiện vòng lặp cuối cùng trước. Nó bắt từ vòng lặp đầu tiên.
    tức là xét từ số 2000000,2000001.......
    vòng lặp đầu tiên có số làn lặp ít nhất và vòng lặp cuối cùng sẽ là ít nhất.
    Ko bít thì phải học, phải hỏi _ Bít thì nên chia sẻ cho người khác cùng bít
    Chia sẻ là cách học tốt nhất ^_^[j0y_k3y]0_0

  10. #10
    Ngày gia nhập
    04 2009
    Bài viết
    13

    Trích dẫn Nguyên bản được gửi bởi trungkien45 Xem bài viết
    Nó lồng nhau để cố định 1 số vòng ngoài sau đó xét các số ở vòng trong.
    Nếu hết các vòng trong rồi thì lại thay đổi số chạy vòng ngoài. Rồi lại bắt đầu vòng lặp bên trong.

    Để hiểu nó thì
    Các bạn nên bắt đầu từ các vòng lặp số lần lặp nhỏ
    Bạn trungkien nói vậy thì tớ hỉu sơ sơ.

    Mà các bạn giúp tớ thì giúp cho trót , mần ơn giải thích cho tớ cụ thể bài 1 nhé (bài toán 1000 đồng ý mà), nhứt là cái chỗ For ý, nó hoạt động ra sao ? mà theo như các bạn nói thì mình có thể dồn 3 cái FOR đó lại thành 1 à ?

    Cám ơn các bạn nhiều lém

Các đề tài tương tự

  1. Xem giúp mình 2 vòng lặp giống nhau nhưng kết quả khác nhau
    Gửi bởi anhkhoadn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 06-11-2013, 12:57 AM
  2. Vòng lặp for lồng nhau, giải thích giúp em cách hoạt động?
    Gửi bởi tucute89 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 11
    Bài viết cuối: 27-06-2013, 02:28 PM
  3. Viên uống nhau thai cừu Queen 9 giúp bạn cải thiện vòng 1
    Gửi bởi phitmdt trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 26-01-2013, 05:10 PM
  4. Lập trình C sự khác nhau giữa vòng lặp do while và while
    Gửi bởi huypn93 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 08-01-2013, 04:29 PM
  5. Lập trình C++ giá trị của xâu trong vòng lặp và ngoài vòng lặp khác nhau
    Gửi bởi virus93ttll trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 17
    Bài viết cuối: 14-05-2011, 02:43 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn