Announcement

Collapse
No announcement yet.

con trỏ trong C

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #31
    Originally posted by 10520397 View Post
    làm thử đi ku e
    cách đầu là tương tự trên.
    a=a-b;
    b=a+b;
    a=b-a;

    cách khác dùng toán tử xor

    a=a^b;
    b=a^b;
    a=a^b;
    Last edited by 11520327; 14-10-2012, 00:15.

    Comment


    • #32
      Originally posted by 11520327 View Post
      cách đầu là tương tự trên.
      a=a-b;
      b=a+b;
      a=b-a;

      cách khác dùng toán tử xor

      a=a^b;
      b=a^b;
      b=a^b;
      uhm hay há, công nhận mấy thèn Công nghệ phần mềm ge qué hjhj
      Lê Bá Nhựt UIT-CE05
      Phone: 0968-868-300
      Email: nhutlbuit@gmail.com

      Enthuse + Creative + Try => Success

      Comment


      • #33
        Originally posted by 11520327 View Post
        cách đầu là tương tự trên.
        cách khác dùng toán tử xor

        a=a^b;
        b=a^b;
        b=a^b;
        Cách này sai nhé.

        Im a british accent lover

        Comment


        • #34
          Originally posted by 08520016 View Post
          Cách này sai nhé.
          cách này e chạy được mà, lập trình C đó!

          Comment


          • #35
            Originally posted by 11520182 View Post
            cách này e chạy được mà, lập trình C đó!
            biết xor là gì không bạn ? Bạn chạy trên IDE compiler nào ?
            Be different and always different
            http://archlinuxvn.org/
            http://theslinux.org
            http://lab.infosec.xyz

            Comment


            • #36
              Originally posted by 10520058 View Post
              biết xor là gì không bạn ? Bạn chạy trên IDE compiler nào ?

              nếu bạn dùng hệ nhị phân thì kết quả trên là đúng,còn chạy trên IDE compiler nào thì hỏi bạn 11520182 xem nhé
              Lê Bá Nhựt UIT-CE05
              Phone: 0968-868-300
              Email: nhutlbuit@gmail.com

              Enthuse + Creative + Try => Success

              Comment


              • #37
                Originally posted by 11520327 View Post
                cách đầu là tương tự trên.
                a=a-b;
                b=a+b;
                a=b-a;

                cách khác dùng toán tử xor

                a=a^b;
                b=a^b;
                b=a^b;
                Originally posted by 11520182 View Post
                cách này e chạy được mà, lập trình C đó!
                Originally posted by 10520397 View Post
                nếu bạn dùng hệ nhị phân thì kết quả trên là đúng,còn chạy trên IDE compiler nào thì hỏi bạn 11520182 xem nhé
                Sai !!!!
                a = a ^ b;
                b = a ^ b;
                a = a ^ b;

                a = 3, b = 5

                code trên cùng mà 2 bạn bảo đúng thì sai hoàn toàn không có cơ sở nào để gọi là đúng nhá
                a = a ^ b; //a = 6;b = 5
                b = a ^ b; //a = 6;b = 3
                b = a ^ b; //a = 6;b = 5

                trong khi sửa lại thì a = a ^ b; // a = 5;b = 3

                Originally posted by 08520016 View Post
                Cách này sai nhé.
                Đố anh tàu (và các bạn , hình như đố anh tàu rồi) tìm được chỗ sai (bug ẩn) trong code em :gach:

                Code:
                void swap(int &a,int &b)
                {
                    a = a ^ b;
                    b = a ^ b;
                    a = a ^ b;
                }
                Tương tự đoạn này cũng có bug critical luôn
                Code:
                void swap(int &a,int &b)
                {
                    a = a + b;
                    b = a - b;
                    a = a - b;
                }
                và thậm chí code này cũng sai luôn (bình mới rượu cũ với code trên thôi)
                Code:
                void swap(int &a,int &b)
                {
                    a = a - b;
                    b = a + b;
                    a = b - a;
                }
                Last edited by 09520019; 13-10-2012, 19:34.
                Khoảng cách giữa bạn và ước mơ của bạn là bao xa ?

                Comment


                • #38
                  Originally posted by 09520019 View Post
                  Sai !!!!
                  a = a ^ b;
                  b = a ^ b;
                  a = a ^ b;

                  a = 3, b = 5

                  code trên cùng mà 2 bạn bảo đúng thì sai hoàn toàn không có cơ sở nào để gọi là đúng nhá
                  a = a ^ b; //a = 6;b = 5
                  b = a ^ b; //a = 6;b = 3
                  b = a ^ b; //a = 6;b = 5

                  trong khi sửa lại thì a = a ^ b; // a = 5;b = 3



                  Đố anh tàu (và các bạn , hình như đố anh tàu rồi) tìm được chỗ sai (bug ẩn) trong code em :gach:

                  Code:
                  void swap(int &a,int &b)
                  {
                      a = a ^ b;
                      b = a ^ b;
                      a = a ^ b;
                  }
                  Tương tự đoạn này cũng có bug critical luôn
                  Code:
                  void swap(int &a,int &b)
                  {
                      a = a + b;
                      b = a - b;
                      a = a - b;
                  }
                  và thậm chí code này cũng sai luôn (bình mới rượu cũ với code trên thôi)
                  Code:
                  void swap(int &a,int &b)
                  {
                      a = a - b;
                      b = a + b;
                      a = b - a;
                  }
                  Trình còi em thấy mỗi cái & xinh xinh kia lạ
                  Be different and always different
                  http://archlinuxvn.org/
                  http://theslinux.org
                  http://lab.infosec.xyz

                  Comment


                  • #39
                    Originally posted by 10520058 View Post
                    Trình còi em thấy mỗi cái & xinh xinh kia lạ
                    tạm chấp nhận C++ cho code nó clear tí chứ viết C thì dính thêm dấu *, không miêu tả rõ ràng là thuật toán của mình trông "có vẻ đúng" nhưng thực chất có 1 hidden bug (ko phải bao giờ cũng dính)

                    phiên bản bên dưới thì chính xác là C, nhưng mà vẫn chung bug thôi
                    Code:
                    void swap(int *a,int *b)
                    {
                        (*a) = (*a) ^ (*b);
                        (*b) = (*a) ^ (*b);
                        (*a) = (*a) ^ (*b);
                    }
                    Last edited by 09520019; 13-10-2012, 21:49.
                    Khoảng cách giữa bạn và ước mơ của bạn là bao xa ?

                    Comment


                    • #40
                      Originally posted by 10520397 View Post
                      giả xử swap x,y
                      bạn dùng thế này nè:
                      x=x+y
                      y=x-y
                      x=x-y
                      ngâm cứu nha )
                      hey zj chỉ có cách này của mình là đúng thoi.
                      Lê Bá Nhựt UIT-CE05
                      Phone: 0968-868-300
                      Email: nhutlbuit@gmail.com

                      Enthuse + Creative + Try => Success

                      Comment


                      • #41
                        Originally posted by 09520019 View Post
                        tạm chấp nhận C++ cho code nó clear tí chứ viết C thì dính thêm dấu *, không miêu tả rõ ràng là thuật toán của mình trông "có vẻ đúng" nhưng thực chất có 1 hidden bug (ko phải bao giờ cũng dính)

                        phiên bản bên dưới thì chính xác là C, nhưng mà vẫn chung bug thôi
                        Code:
                        void swap(int *a,int *b)
                        {
                            (*a) = (*a) ^ (*b);
                            (*b) = (*a) ^ (*b);
                            (*a) = (*a) ^ (*b);
                        }
                        Có phải cái a^b=c =>> c^a=b hem anh :-s. hay cái a^0=a :-s
                        Be different and always different
                        http://archlinuxvn.org/
                        http://theslinux.org
                        http://lab.infosec.xyz

                        Comment


                        • #42
                          Originally posted by 09520019 View Post
                          Sai !!!!
                          a = a ^ b;
                          b = a ^ b;

                          Đố anh tàu (và các bạn , hình như đố anh tàu rồi) tìm được chỗ sai (bug ẩn) trong code em :gach:

                          Code:
                          void swap(int &a,int &b)
                          {
                              a = a ^ b;
                              b = a ^ b;
                              a = a ^ b;
                          }
                          Tương tự đoạn này cũng có bug critical luôn
                          Code:
                          void swap(int &a,int &b)
                          {
                              a = a + b;
                              b = a - b;
                              a = a - b;
                          }
                          và thậm chí code này cũng sai luôn (bình mới rượu cũ với code trên thôi)
                          Code:
                          void swap(int &a,int &b)
                          {
                              a = a - b;
                              b = a + b;
                              a = b - a;
                          }
                          Uhm, cái này bên uits anh em mình tìm hiểu qua ui
                          Cơ bản thì code trên của em lúc swap bản thân 1 biến thì toi, vd gọi swap(a,a) ) run và xem kết quả hok mong muốn xảy ra

                          Im a british accent lover

                          Comment


                          • #43
                            Originally posted by 10520058 View Post
                            Có phải cái a^b=c =>> c^a=b hem anh :-s. hay cái a^0=a :-s
                            không
                            Bởi vì cả 3 đoạn code mà anh đã post (review lại 2 đoạn bên dưới) cùng bị 1 bug đó

                            Code:
                            void swap(int &a,int &b)
                            {
                                a = a + b;
                                b = a - b;
                                a = a - b;
                            }
                            Code:
                            void swap(int &a,int &b)
                            {
                                a = a - b;
                                b = a + b;
                                a = b - a;
                            }
                            Originally posted by 08520016 View Post
                            Uhm, cái này bên uits anh em mình tìm hiểu qua ui
                            Cơ bản thì code trên của em lúc swap bản thân 1 biến thì toi, vd gọi swap(a,a) ) run và xem kết quả hok mong muốn xảy ra
                            đúng roài

                            a = 3, b = 5
                            swap(a,b) => OK
                            swap(5,5) => OK
                            swap(a,a) => bug (có bạn nào giải thích tại sao hơm)

                            do đó nên cẩn thận khi swap mà không dùng biến tạm nhé , nhất là không thể để hàm swap này đi chung với hàm sort rồi, vì sẽ có 1 khả năng nào đấy swap(a[i],a[j]) sẽ là swap(a[5],a[5]), lúc đó bug không hiểu tại sao luôn
                            Last edited by 09520019; 13-10-2012, 22:20.
                            Khoảng cách giữa bạn và ước mơ của bạn là bao xa ?

                            Comment


                            • #44
                              Originally posted by 09520019 View Post
                              không
                              Bởi vì cả 3 đoạn code mà anh đã post (review lại 2 đoạn bên dưới) cùng bị 1 bug đó

                              Code:
                              void swap(int &a,int &b)
                              {
                                  a = a + b;
                                  b = a - b;
                                  a = a - b;
                              }
                              Code:
                              void swap(int &a,int &b)
                              {
                                  a = a - b;
                                  b = a + b;
                                  a = b - a;
                              }


                              đúng roài

                              a = 3, b = 5
                              swap(a,b) => OK
                              swap(5,5) => OK
                              swap(a,a) => bug (có bạn nào giải thích tại sao hơm)

                              do đó nên cẩn thận khi swap mà không dùng biến tạm nhé , nhất là không thể để hàm swap này đi chung với hàm sort rồi, vì sẽ có 1 khả năng nào đấy swap(a[i],a[j]) sẽ là swap(a[5],a[5]), lúc đó bug không hiểu tại sao luôn
                              vì nó không thay đổi một lúc hai arguments được nên khi a,a sẽ sinh ra bug
                              Be different and always different
                              http://archlinuxvn.org/
                              http://theslinux.org
                              http://lab.infosec.xyz

                              Comment


                              • #45
                                Originally posted by 10520058 View Post
                                vì nó không thay đổi một lúc hai arguments được nên khi a,a sẽ sinh ra bug
                                đúng rồi, nhưng để đơn giản hơn thì ta có thể tưởng tượng đoạn code biến thành thế này

                                Code:
                                void swap(int &a,int &a)
                                {
                                    a = a + a;
                                    a = a - a;
                                    a = a - a;
                                }
                                void swap(int &a,int &a)
                                {
                                    a = a - a;
                                    a = a + a;
                                    a = a - a;
                                }
                                void swap(int &a,int &a)
                                {
                                    a = a ^ a;
                                    a = a ^ a;
                                    a = a ^ a;
                                }
                                và ta thấy ngay là sai nghiêm trọng
                                Khoảng cách giữa bạn và ước mơ của bạn là bao xa ?

                                Comment

                                LHQC

                                Collapse
                                Working...
                                X