Announcement

Collapse
No announcement yet.

Tìm giúp lỗi trong bài này với

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

  • Tìm giúp lỗi trong bài này với

    Đề là chèn x vào dãy a tăng để sau khi chèn a vẫn là dãy tăng mà không cần sắp xếp lại
    Em code rồi, nhưng chạy không được, chạy được 1 đoạn rồi báo lỗi,tìm hoài không ra nhờ mọi người chỉ xem giúp
    PHP Code:
     #include "stdafx.h"

    #include <stdio.h>
    #include <conio.h>
    void nhap(int a[],int &n);
    void xuat(int a[],int n);
    void doicho(int a[],int n);
    void chen(int a[], int &n,int x);
    void main()
    {
       
    int i,j,a[10],n,x;
       
    printf("\nNhap so phan tu cua mang : ");
       
    scanf("%d",&n);
     
    printf("\nnhap mang:");  
     
    nhap(a,n);
       
    printf("\nmang vua nhap la:");
       
    xuat(a,n);
       
    printf("\nmang sau khi duoc sap tang la:");
      
    doicho(a,n);
      
    xuat(a,n);
      
    printf("\nnhap vao so can chen:"); scanf("%d",&x);
       
    printf("\nmang sau khi chen la:");
        
    chen(a,n,x);
       
    xuat(a,n);
       
    getch();
    }
    void nhap(int a[],int &n)
    {
        
    int i;
        for(
    i=0;i<n;i++)
       {
           
    printf("Nhap a[%d] : ",i);
            
    scanf("%d",&a[i]);
       }
    }
    void xuat(int a[],int n)
    {
        
    int i;
        for(
    i=0;i<n;i++)
             
    printf("  %d",a[i]);
    }
    void doicho(int a[],int n)
    {
        
    int tam,i,j;
         for(
    i=0;i<n;i++)
           for(
    j=i+1;j<n;j++)
          {
              if(
    a[i] > a[j])
             {
                 
    tam a[i];
                
    a[i] = a[j];
                
    a[j] = tam;
             }
          }

    }
    void chen (int a[], int &nint x)
    {
        
    int i,j,k;
        if(
    a[n-1])
         
    a[n] = x;
       if(
    <= a[0])
       {
               for(
    i=n;i>0;i--)
              
    a[i] = a[i-1];
            
    a[0] = x;
         }                         
            for(
    j=1;j<n;j++)  
         {
               if(
    a[j-1] <= && <= a[j])
              for(
    k=n;k>j;k--)
                  
    a[k] = a[k-1];
                  
    a[j]=x;
              
    n++;
            }
       

    Last edited by 11520367; 07-03-2012, 12:24.
    Khi còn nhỏ ta thấy nhiều chuyện là lớn
    Khi lớn ta thấy nhiều chuyện là nhỏ
    Đến khi thành người ta mới phân biệt được chuyện nào là lớn, chuyện nào là nhỏ

  • #2
    Tìm giúp lỗi trong bài này với !

    Đề là: viết ct chèn số x vào dãy a tăng để dãy a sau khi chèn vẫn là dãy tăng
    E viết code rồi, nhưng chạy được 1 đoạn thì báo lỗi giữa chừng và không chạy nữa.Mọi người tìm lỗi giúp nha!
    Hàm em viết như sau:
    PHP Code:
    void chen (int a[], int &nint x)
    {
        
    int i,j,k;
        if(
    a[n-1])
        
    a[n] = x;
      if(
    <= a[0])
       {
               for(
    i=n;i>0;i--)
              
    a[i] = a[i-1];
            
    a[0] = x;
         }                         
            for(
    j=1;j<n;j++)  
         {
               if(
    a[j-1] <= && <= a[j])
              for(
    k=n;k>j;k--)
                  
    a[k] = a[k-1];
                  
    a[j]=x;
              
    n++;
            }
       

    Last edited by 11520367; 07-03-2012, 12:25.
    Khi còn nhỏ ta thấy nhiều chuyện là lớn
    Khi lớn ta thấy nhiều chuyện là nhỏ
    Đến khi thành người ta mới phân biệt được chuyện nào là lớn, chuyện nào là nhỏ

    Comment


    • #3
      1. Để code vào thẻ [php]
      2. Lỗi là lỗi gì ?
      3. Xem lại
      PHP Code:
      for(i=0;i<n;i++)
      for(
      j=i+1;j<n;j++) 
      Last edited by 08520195; 07-03-2012, 04:48.
      Bùm, Maria Ozawa Bin Laden, chuyên gia cưa bom hàng đầu Việt Nam
      Bùm, Maria Ozawa Bin Laden, chuyên gia cưa bom hàng đầu Việt Nam
      Bùm, Maria Ozawa Bin Laden, chuyên gia cưa bom hàng đầu Việt Nam
      Bùm, Maria Ozawa Bin Laden, chuyên gia cưa bom hàng đầu Việt Nam
      ...

      Comment


      • #4
        đang chạy tới lúc nhập vào số cần chèn thì không chạy nữa mà hiện bảng báo lỗi access violation gì đó có 2 nút break và continue, bấm continue thì không được buộc bấm break thôi

        Khi còn nhỏ ta thấy nhiều chuyện là lớn
        Khi lớn ta thấy nhiều chuyện là nhỏ
        Đến khi thành người ta mới phân biệt được chuyện nào là lớn, chuyện nào là nhỏ

        Comment


        • #5
          Bài của bạn sai ở hàm này:
          PHP Code:
          void chen (int a[], int &nint x
          {
          int i,j,k;
          if(
          a[n-1]) //Chèn vào cuối -> OK!
          {
          a[n] = x;
          n++;
          }
          if(
          <= a[0]) //Chèn vào đầu -->OK!
          {
          for(
          i=n;i>0;i--)
          a[i] = a[i-1];
          a[0] = x;

          for(
          j=1;j<n;j++) //ERROR --> j=n: kết thúc
          {
          if(
          a[j-1] <= && <= a[j])
          for(
          k=n;k>j;k--)
          a[k] = a[k-1];
          a[j]=x;
          n++;   //n tăng liên tục sau mỗi vòng --> lặp vô hạn

          Fix:
          PHP Code:
          for(j=1;j<n;j++) 
          {
          if(
          a[j-1] <= && <= a[j])
              {
                  for(
          k=n;k>j;k--)
                  
          a[k] = a[k-1];
                  break;
              }
          }
          a[j]=x;
          n++; 
          Lần sau bạn cố gắp chú thích code của mình nhiều nhiều tí để mọi người dễ đọc!
          Góp ý cho bạn về cách post bài xíu: lần sau trước khi post bài bạn đừng nên để Tittle với một câu nói trống không như vậy!

          Comment


          • #6
            Bạn cho biết nó bị lỗi gì được không ?

            Comment


            • #7
              Originally posted by 08520557 View Post
              Bạn cho biết nó bị lỗi gì được không ?
              Nó bị lỗi ở chỗ điều kiện chạy vòng for là j<n mà ở đây sau mỗi vòng n lại tăng lên như vậy sẽ bị rơi vào tình trạng lặp vô hạn, mình đã chú thích rõ trong code rồi mà!

              Comment


              • #8
                Ờ. Hồi sáng đọc mà đọc không kỹ. Cũng không thấy ai nói bị lỗi gì và fix lỗi gì cả.

                Comment


                • #9
                  Originally posted by 10520245 View Post
                  Nó bị lỗi ở chỗ điều kiện chạy vòng for là j<n mà ở đây sau mỗi vòng n lại tăng lên như vậy sẽ bị rơi vào tình trạng lặp vô hạn, mình đã chú thích rõ trong code rồi mà!
                  Lặp vô hạn sao lại Access Violation ?

                  Trước mắt ở đoạn code DoiCho (sắp xếp) Insertion Sort đã bị sai rùi kìa

                  PHP Code:
                  int tam,i,j;
                       for(
                  i=0;i<n;i++) //i chạy tới n-1
                         
                  for(j=i+1;j<n;j++)
                        {
                            if(
                  a[i] > a[j])
                           {
                               
                  tam a[i];
                              
                  a[i] = a[j];
                              
                  a[j] = tam;
                           }
                        } 
                  Bùm, Maria Ozawa Bin Laden, chuyên gia cưa bom hàng đầu Việt Nam
                  Bùm, Maria Ozawa Bin Laden, chuyên gia cưa bom hàng đầu Việt Nam
                  Bùm, Maria Ozawa Bin Laden, chuyên gia cưa bom hàng đầu Việt Nam
                  Bùm, Maria Ozawa Bin Laden, chuyên gia cưa bom hàng đầu Việt Nam
                  ...

                  Comment


                  • #10
                    làm như 10520245 thì không còn bị như lúc đầu nữa, nhưng ở chỗ chèn vào đầu dãy thì có vấn đề. Vd:chèn số 0 vào dãy 1 2 3 4 thì kết quả là 0 0 1 2 3 4. Em không hiểu tại sao?
                    Khi còn nhỏ ta thấy nhiều chuyện là lớn
                    Khi lớn ta thấy nhiều chuyện là nhỏ
                    Đến khi thành người ta mới phân biệt được chuyện nào là lớn, chuyện nào là nhỏ

                    Comment


                    • #11
                      Trước mắt ở đoạn code DoiCho (sắp xếp) Insertion Sort đã bị sai rùi kìa

                      PHP Code:
                      int tam,i,j;
                           for(
                      i=0;i<n;i++) //i chạy tới n-1
                             
                      for(j=i+1;j<n;j++)
                            {
                                if(
                      a[i] > a[j])
                               {
                                   
                      tam a[i];
                                  
                      a[i] = a[j];
                                  
                      a[j] = tam;
                               }
                            } 
                      à em thấy rồi,em code ẩu quá
                      Khi còn nhỏ ta thấy nhiều chuyện là lớn
                      Khi lớn ta thấy nhiều chuyện là nhỏ
                      Đến khi thành người ta mới phân biệt được chuyện nào là lớn, chuyện nào là nhỏ

                      Comment

                      LHQC

                      Collapse
                      Working...
                      X