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ố 11 kết quả

Đề tài: Cách chèn 1 phần tử vào mảng trong C?

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    54

    Mặc định Cách chèn 1 phần tử vào mảng trong C?

    em làm rồi nhưng code bị sai mong mọi người chỉ chỗ sai cho mình để lần sau rút kinh nghiệm .
    code :

    Code:
    /* chen 1 phan tu vao mang */
    # include <stdio.h>
    # include <conio.h>
    main()
    { int A[100];
      int n,i,k,x;
      clrscr ();
      printf ("\n nhap n:");
      scanf ("%d",&n);
      for (i=1;i<=n;i++)
      { printf ("\n nhap A[%d] :",i);
        scanf ("%d",&A[i]);
      }
      printf ("\n nhap vi tri can chen k:");
      scanf ("%d", &k);
      printf ("\n nhap x:");
      scanf ("%d",&x);
      for (i=n;i>=k;i--)
      { A[i+1]=A[i];
        A[k]=x;
      }
      printf (" ma tran A sau  chen: ");
      for (i=1;i<=n;i++)
      printf (" %d",&A[i]);
      getch() ;
    }
    Đã được chỉnh sửa lần cuối bởi langman : 07-12-2012 lúc 08:59 PM. Lý do: Thêm code

  2. #2
    Ngày gia nhập
    04 2007
    Nơi ở
    Bà Trưng quê ở Mê Linh
    Bài viết
    29

    Bạn làm rồi thì bạn phải post bài lên để mọi người cùng đóng góp chứ ? Bạn có code đâu mà chúng tôi biết bạn viết sai ở chỗ nào ?
    >"<

  3. #3
    Ngày gia nhập
    12 2007
    Bài viết
    54

    Code:
    /* chen 1 phan tu vao mang */
    # include <stdio.h>
    # include <conio.h>
    main()
    { int A[100];
      int n,i,k,x;
      clrscr ();
      printf ("\n nhap n:");
      scanf ("%d",&n);
      for (i=1;i<=n;i++)
      { printf ("\n nhap A[%d] :",i);
        scanf ("%d",&A[i]);
      }
      printf ("\n nhap vi tri can chen k:");
      scanf ("%d", &k);
      printf ("\n nhap x:");
      scanf ("%d",&x);
      for (i=n;i>=k;i--)
      { A[i+1]=A[i];
        A[k]=x;
      }
      printf (" ma tran A sau  chen: ");
      for (i=1;i<=n;i++)
      printf (" %d",&A[i]);
      getch() ;
    }
    xin lỗi hôm qua máy nhà mình bị hư . mong mọi người giúp

    Bạn thangit chú ý: Bạn rất nhiều lần không đưa code vào tag code và các lỗi vi phạm khác. Nếu bạn còn tiếp tục, toàn bộ bài viết của bạn sẽ bị xóa bỏ và có thể bạn sẽ phải cấm tham gia diễn đàn đó.
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 23-01-2008 lúc 02:10 PM. Lý do: Nhắc nhở vi phạm

  4. #4
    Ngày gia nhập
    12 2007
    Bài viết
    28

    /* chen 1 phan tu vao mang */
    # include <stdio.h>
    # include <conio.h>
    main()
    { int A[100];
    int n,i,k,x;
    clrscr ();
    printf ("\n nhap n:");
    scanf ("%d",&n);
    for (i=1;i<=n;i++)
    { printf ("\n nhap A[%d] :",i);
    scanf ("%d",&A[i]);
    }
    printf ("\n nhap vi tri can chen k:");
    scanf ("%d", &k);
    printf ("\n nhap x:");
    scanf ("%d",&x);
    for (i=n;i>=k;i--)
    { A[i+1]=A[i];
    A[k]=x;
    }
    printf (" ma tran A sau chen: ");
    for (i=1;i<=n;i++)
    printf (" %d",&A[i]);
    getch() ;
    }
    xin lỗi hôm qua máy nhà mình bị hư . mong mọi người giúp
    - Bài của bạn có một vài sai sót nhỏ:
    for (i=n;i>=k;i--)
    { A[i+1]=A[i];
    A[k]=x;
    }
    Chỗ này ở mỗi vòng lặp bạn đều gán A[k] = x; nhưng đúng ra phải gán A[k] = x sau khi đã "đẩy" toàn bộ phần trên của mảng lên. Gán A[k] = x sớm sẽ làm mất giá trị của A[k]

    Nếu bài của bạn có nhiều lần scanf, bạn nên dùng kèm sau đó lệnh fflush(stdin) để làm sạch vùng đệm, nếu không chương trình dễ chạy sai(cái này do lỗi của chương trình, thật ra về lý thuyết thì không cần)

    Cuối cùng, cái này không hẳn là lỗi : bạn dùng mảng trong khoảng từ 1 -> n; nhưng trong C nếu bạn khai báo A[n] thì mảng chỉ từ 0 -> n-1. Riêng bài này thì không sai, nhưng có thể sai với các bài khác, hơn nữa nhìn không giống C lắm.

    Hy vọng giúp được bạn
    // À quên, lần sau bạn để code vào thẻ code nhé!

    Yêu cầu để code vào thẻ code (ký hiệu trên thanh công cụ) chứ không phải là thẻ trích dẫn
    Đã được chỉnh sửa lần cuối bởi iamvtn : 23-01-2008 lúc 05:23 PM.

  5. #5
    Ngày gia nhập
    12 2007
    Bài viết
    54

    mình chạy dược rồi cám ơn bạn . bài mình có 1 lỗi sai nữa là khi in dùng & ở dòng cuối .
    cậu có thể giúp mình hiểu sâu về lệnh fflush(stdin) ko .

  6. #6
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Mặc định Cách chèn 1 phần tử vào mảng trong C?

    Lệnh fflush(stdin) dùng để xóa bộ đệm bàn phím thôi .
    Ví dụ khi bạn nhập 1 chuỗi ký tự rồi nhấn enter thì lúc nãy chuỗi ký tự kia sẽ được đưa vào biến còn ký tự enter sẽ còn lưu lại trong bộ đệm vì các lệnh scan và gets không thể lấy đc ký tự enter trong bộ đệm và như vậy ta phải dùng lệnh fflush(stdin) để xóa ký tự enter rồi mới có thể nhập vào mà ko bị trôi dòng.Nhưng>>>chỉ khi nhập chuỗi hoặc ký tự thì mới phải dùng lệnh fflush(stdin) còn với số thì không cần lệnh này vì scanf đối với số nó không lấy ký tự enter mình cũng không hiểu vì sao nữa^^! .Nói túm lại là chỉ dùng với chuỗi và ký tự thôi.
    Chút kiến thức mọn nếu có gì sai cả nhà chỉ bảo thêm.
    À quên đây là box C++ chứ không phải C bạn hãy gửi bài sang box C thì hợp lý hơn.
    Chúc bạn học tốt.Thân!!
    Đã được chỉnh sửa lần cuối bởi comeonbaby : 23-01-2008 lúc 10:43 AM.

  7. #7
    Ngày gia nhập
    03 2011
    Bài viết
    4

    mình bổ sung thêm nhé

    Code:
     for(int i = n;i<vt;i--)
        a[i]=a[i-1];
        a[vt]=x;
        n++;
    thế là ok rùi bạn

  8. #8
    Ngày gia nhập
    12 2012
    Nơi ở
    ninh thuận
    Bài viết
    3

    chỗ này là gì zậy các bác
    A[i+1]=A[i]
    giải thích ý nghĩa của nó là gì? đc hk

  9. #9
    Ngày gia nhập
    12 2012
    Nơi ở
    Hà Nội
    Bài viết
    13

    Trích dẫn Nguyên bản được gửi bởi bqthanh94 Xem bài viết
    chỗ này là gì zậy các bác
    A[i+1]=A[i]
    giải thích ý nghĩa của nó là gì? đc hk
    Tức là khi mình chèm vào giữa mảng 1 phần tử, thì vị trí của các phẩn tử tiếp theo sẽ tăng thêm 1.
    Ví dụ: mảng a[]={1,2,3,4};tức a[0]=1,a[1]=2; a[2]=3];a[3]=4
    mình chèn thêm phẩn tử 5 vào giữa 2 và 3 thì lúc này mảng a có 5 phần tử tương ứng
    a[0]=1;
    a[1]=2;
    a[2]=5;
    lúc này bạn phải đấy a[3]=a[2]ban đấu =3;
    a[4]=a[3] ban đầu =4;
    [SIGPIC]Đam mê dẫn đến thành công!

  10. #10
    Ngày gia nhập
    12 2012
    Nơi ở
    ninh thuận
    Bài viết
    3

    cảm ơn nha, hiểu oy hi, không ngở cũng đơn giản quá

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

  1. Lập trình C tìm xem trong mảng số nguyên i_Mang[] có bao nhiêu phần tử có giá trị âm & phần tử có giá trị âm trong mảngn
    Gửi bởi fawker trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 29-05-2013, 03:28 PM
  2. Bài tập C xóa phần tử trùng nhau trong mảng 1 chiều để lại 1 phần tử
    Gửi bởi ronoa trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 06-01-2012, 10:46 PM
  3. Thủ tục loại bỏ các phần tử trùng nhau, giữ lại duy nhất 1 phần tử trong DSLK
    Gửi bởi mrtyoffline trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 02-03-2011, 10:27 PM
  4. Thuật toán trên C | Xóa phần tử trong dãy phần tử tăng dần?
    Gửi bởi quangphuit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-03-2010, 01:57 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