Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: hỏi về sự khác nhau giữa 2 lệnh for sau.

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

    Mặc định hỏi về sự khác nhau giữa 2 lệnh for sau.

    đề bài là xóa 1 phần tử trong mảng

    C Code:
    1. void xoa(int a[],int &n,int &vt)
    2. {
    3.     scanf("%d",&vt);
    4.     for(int i=vt;i<n;i++)
    5.     {
    6.         a[i]=a[i+1];
    7.         n--;
    8.    
    9.     }  
    10. }

    với
    C Code:
    1. void xoa(int a[],int &n,int &vt)
    2. {
    3.     scanf("%d",&vt);
    4.     for(int i=vt;i<n-1;i++)
    5.     {
    6.         a[i]=a[i+1];
    7.    
    8.     }  
    9. }

    các bạn giải thích giùm mình nhé
    Đã được chỉnh sửa lần cuối bởi ronoa : 06-01-2012 lúc 06:54 PM.

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Edit (Chết mất, cặp mắt để đâu mà ko thấy) :(
    For 1: Chỉ cho chạy đến n-2 là đủ. Kết thúc vòng for thì n--.(đẩy n-- ra khỏi vòng lặp)

    For 2: thiếu n-- cuối bài
    ______
    Cả 2 code đều ko "ngon". Thường thì người ta đưa đối số "vt" từ bên ngoài vào, hàm này chỉ làm nhiệm vụ dựa vào cái đó để xóa.
    2 hàm trên viết ko được "độc lập" cho lắm
    p/s: Viết code nửa nạc nửa cổ điển nửa tân thời thế này: scanf với cả & @@.
    Nếu đang học C (chỉ chữ C ko có dấu gì ở phía sau) thì tập cách truyền tham biến = con trỏ cho quen.
    Đã được chỉnh sửa lần cuối bởi clchicken : 06-01-2012 lúc 07:13 PM.
    Um Mani Padme Hum...!!

  3. #3
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    Trích dẫn Nguyên bản được gửi bởi ronoa Xem bài viết
    đề bài là xóa 1 phần tử trong mảng

    C Code:
    1. void xoa(int a[],int &n,int &vt)
    2. {
    3.     scanf("%d",&vt);
    4.     for(int i=vt;i<n;i++)
    5.     {
    6.         a[i]=a[i+1];
    7.         n--;
    8.    
    9.     }  
    10. }

    với
    C Code:
    1. void xoa(int a[],int &n,int &vt)
    2. {
    3.     scanf("%d",&vt);
    4.     for(int i=vt;i<n-1;i++)
    5.     {
    6.         a[i]=a[i+1];
    7.    
    8.     }  
    9. }

    các bạn giải thích giùm mình nhé
    Mình thấy 2 vòng for của bạn đều có vấn đề
    - Vòng for đầu n-- không nằm trong vòng for
    - Vòng for 2 thiếu n-- và i phải chạy tới < n nếu ko sẽ mất dữ liệu
    Hướng dẫn C++: https://www.youtube.com/watch?v=BwLodoQdoY4&list=PL1c9Uxlo-mplJDRGdONNupgo5OCBTyGGn

  4. #4
    Ngày gia nhập
    12 2011
    Nơi ở
    TP HCM
    Bài viết
    3

    Trích dẫn Nguyên bản được gửi bởi ronoa Xem bài viết
    đề bài là xóa 1 phần tử trong mảng

    C Code:
    1. void xoa(int a[],int &n,int &vt)
    2. {
    3.     scanf("%d",&vt);
    4.     for(int i=vt;i<n;i++)
    5.     {
    6.         a[i]=a[i+1];
    7.         n--;
    8.    
    9.     }  
    10. }

    với
    C Code:
    1. void xoa(int a[],int &n,int &vt)
    2. {
    3.     scanf("%d",&vt);
    4.     for(int i=vt;i<n-1;i++)
    5.     {
    6.         a[i]=a[i+1];
    7.    
    8.     }  
    9. }

    các bạn giải thích giùm mình nhé
    Đúng là cả 2 vòng for đều có vấn đề thât!.
    Bạn nên debug từng câu lệnh để biết lỗi của mình nhé!.

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

  1. Lập trình C++ bit shifting? kết quả binary y hệt nhau nhưng cout lại khác nhau
    Gửi bởi quano1 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 10-05-2016, 10:28 AM
  2. 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
  3. fptaptech và cncaptech giống nhau hay khác nhau?
    Gửi bởi lqthinh92 trong diễn đàn Đào tạo CNTT
    Trả lời: 3
    Bài viết cuối: 16-08-2013, 12:30 AM
  4. Database Hai câu truy vấn giống nhau(logic) mà kết quả lại khác nhau??
    Gửi bởi kqphu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 15-10-2011, 11:50 AM
  5. Kết Quả khác nhau ở những lần chạy khác nhau
    Gửi bởi llvllrSi trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 11
    Bài viết cuối: 15-12-2010, 01:26 AM

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