Announcement

Collapse
No announcement yet.

Cho hỏi đoạn code đơn giản

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

  • Cho hỏi đoạn code đơn giản

    #include <stdio.h>
    void main()
    {
    int n,i,a,s;
    printf("nhap n ");
    scanf("%d",&n);
    for(i=0,s=0;i<=n;i++)
    {
    a= 1/(2*i);
    s=s+a;
    }
    printf("tong la %f",s);

    }

    nó bị thiếu hay sai gì nhờ chỉ giúp với. thank!
    Hãy cứ sống một cách thật tuyệt vời, rồi những điều tốt đẹp sẽ đến với bạn !!

  • #2
    văng lỗi ở dòng này: a= 1/(2*i);
    -----------------------------
    Mai Văn Khải
    Software Engineering, University Information of Technology
    a07d26eb5cbc98f77b36a461eb629456

    Comment


    • #3
      i=0 ;
      a=1/(2*0) =?
      phép tính này ko có nghĩa.
      i phải khác 0.

      Comment


      • #4
        em sua lại là
        #include <stdio.h>
        void main()
        {
        int n,i,a,s;
        printf("nhap n ");
        scanf("%d",&n);
        for(i=1,s=0;i<=n;i++)
        {
        a=1/(2*i);
        s=s+a;
        }
        printf("tong la %f",s);

        }

        nhap n thi nó ra 0.0000 anh sửa hộ em @@!
        Hãy cứ sống một cách thật tuyệt vời, rồi những điều tốt đẹp sẽ đến với bạn !!

        Comment


        • #5
          do bạn khai báo biến a và s là int nên ở dòng a=1/(2*i) nó luôn trả về 0 --> s nó cũng 0. sửa lại thành float thì ok
          “ Đơm hoa không kết trái thì có sao?

          Là cá thì nhất định phải bơi ư?

          Ai bảo cuộc đời là phải sống,
          Ai bảo đau khổ rồi cũng sẽ qua,
          Ai bảo bài hát là phải có dạo đầu,

          Phá vỡ ranh giới để tìm kiếm điều gì đó...”

          Comment


          • #6
            Originally posted by 12520527 View Post
            do bạn khai báo biến a và s là int nên ở dòng a=1/(2*i) nó luôn trả về 0 --> s nó cũng 0. sửa lại thành float thì ok
            bạn nói thì đúng nhưng minh thử lại cũng như vậy T.T
            Hãy cứ sống một cách thật tuyệt vời, rồi những điều tốt đẹp sẽ đến với bạn !!

            Comment


            • #7
              bạn sửa thành a=(float)1/(2*i); nhé
              “ Đơm hoa không kết trái thì có sao?

              Là cá thì nhất định phải bơi ư?

              Ai bảo cuộc đời là phải sống,
              Ai bảo đau khổ rồi cũng sẽ qua,
              Ai bảo bài hát là phải có dạo đầu,

              Phá vỡ ranh giới để tìm kiếm điều gì đó...”

              Comment


              • #8
                ko được nản wa' (
                Hãy cứ sống một cách thật tuyệt vời, rồi những điều tốt đẹp sẽ đến với bạn !!

                Comment


                • #9
                  #include <stdio.h>
                  void main()
                  {
                  int n,i;
                  float a,s;
                  printf("nhap n ");
                  scanf("%d",&n);
                  for(i=1,s=0;i<=n;i++)
                  {
                  a=(float)1/(2*i);
                  s=s+a;
                  }
                  printf("tong la %f",s);
                  }

                  mình chạy ra bt mà :surrender:
                  “ Đơm hoa không kết trái thì có sao?

                  Là cá thì nhất định phải bơi ư?

                  Ai bảo cuộc đời là phải sống,
                  Ai bảo đau khổ rồi cũng sẽ qua,
                  Ai bảo bài hát là phải có dạo đầu,

                  Phá vỡ ranh giới để tìm kiếm điều gì đó...”

                  Comment


                  • #10
                    Originally posted by 12520527 View Post
                    #include <stdio.h>
                    void main()
                    {
                    int n,i;
                    float a,s;
                    printf("nhap n ");
                    scanf("%d",&n);
                    for(i=1,s=0;i<=n;i++)
                    {
                    a=(float)1/(2*i);
                    s=s+a;
                    }
                    printf("tong la %f",s);
                    }

                    mình chạy ra bt mà :surrender:
                    cám ơn bạn nha, bạn giải thich chổ a=(float)1/(2*i); dùm mình nha, minh chưa hiểu lam
                    Hãy cứ sống một cách thật tuyệt vời, rồi những điều tốt đẹp sẽ đến với bạn !!

                    Comment


                    • #11
                      em nên sửa thành:

                      s=0;
                      for(i=0;i<n;i++)
                      {
                      a=1/(2*(i+1));
                      s+=a;
                      }

                      và nếu em muốn cộng các số nguyên thì chỗ này sửa thành: printf("tong la %n",s);

                      Originally posted by 12520333 View Post
                      cám ơn bạn nha, bạn giải thich chổ a=(float)1/(2*i); dùm mình nha, minh chưa hiểu lam
                      đó là ép kiểu, ép từ kiểu int qua float!
                      -----------------------------
                      Mai Văn Khải
                      Software Engineering, University Information of Technology
                      a07d26eb5cbc98f77b36a461eb629456

                      Comment


                      • #12
                        Originally posted by 12520333 View Post
                        cám ơn bạn nha, bạn giải thich chổ a=(float)1/(2*i); dùm mình nha, minh chưa hiểu lam
                        Giả sử bạn khai báo 3 biến
                        Code:
                        int a,b;
                        float c;
                        Giả sử nhập a= 1 và b = 2
                        Nếu thực hiện phép toán
                        Code:
                        c = a/b
                        thứ tự ưu tiên là phép chia rồi đến phép gán.
                        vì kết quả của phép chia số nguyên với số nguyên là 1 số nguyên nên kết quả 0.5 sẽ làm tròn xuống còn 0 --> c = 0
                        để có kết quả chính xác thì cần ép kiểu số a hoặc số b (hoặc cả 2) thành số thực
                        Code:
                        c = (float)a/b
                        thương của một số thực với một số nguyên là một số thực.
                        thứ tự ưu tiên luôn là ép kiểu, chia rồi gán.
                        trong trường hợp của bạn, cần ép kiểu số 1 hoặc (2*i) vì 1 là kiểu nguyên, (2*i) cũng là nguyên nên khi chia ra kết quả cũng là số nguyên :confuse:

                        chúc bạn học tốt :sure:
                        “ Đơm hoa không kết trái thì có sao?

                        Là cá thì nhất định phải bơi ư?

                        Ai bảo cuộc đời là phải sống,
                        Ai bảo đau khổ rồi cũng sẽ qua,
                        Ai bảo bài hát là phải có dạo đầu,

                        Phá vỡ ranh giới để tìm kiếm điều gì đó...”

                        Comment


                        • #13
                          Originally posted by 12520333 View Post
                          #include <stdio.h>
                          void main()
                          {
                          int n,i,a,s;
                          printf("nhap n ");
                          scanf("%d",&n);
                          for(i=0,s=0;i<=n;i++)
                          {
                          a= 1/(2*i);
                          s=s+a;
                          }
                          printf("tong la %f",s);

                          }

                          nó bị thiếu hay sai gì nhờ chỉ giúp với. thank!
                          i chạy từ 0 thì a=1/(2*0)==> không thực hiện được là phải rồi
                          sửa lại là for(i=1,s=0;i<=n;i++)

                          Comment


                          • #14
                            Originally posted by 12520333 View Post
                            #include <stdio.h>
                            void main()
                            {
                            int n,i,a,s;
                            printf("nhap n ");
                            scanf("%d",&n);
                            for(i=0,s=0;i<=n;i++)
                            {
                            a= 1/(2*i);
                            s=s+a;
                            }
                            printf("tong la %f",s);

                            }

                            nó bị thiếu hay sai gì nhờ chỉ giúp với. thank!
                            em khai báo các biến n, i, a, s đều là kiểu số nguyên, kiểu số nguyên thì ví dụ số 3.5 nó chỉ lấy 3 mà thôi, em thử khai báo lại biến bằng kiểu float đi ^^~
                            Chúc e học tốt.
                            p/s: cuốn tin học đại cương của trường mình a thấy viết rất hay (mặc dù trong đó có 1 vài lỗi sai) em nên đọc kỹ cuốn này nha

                            Comment


                            • #15
                              Code này thực hiện bài toán j vậy

                              Comment

                              LHQC

                              Collapse
                              Working...
                              X