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

Đề tài: help danh sach đặc!!!

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    0

    Mặc định help danh sach đặc!!!

    Cho mình hỏi đoạn code sau đây mình đã sai chỗ nào, mà tai sao khi chya chương trình thì kết quả chỉ toàn là ra những phần tử rác ???? Giúp mình nhé!! Thanks much!!!
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3.  
    4. typedef struct list
    5. {
    6.     int a[100]; //tung phan tu cua mang va con bieu hien gia tri toi da cua mang
    7.     int n;         //so phan tu thuc su ma mang chua
    8. };
    9.  
    10. int timvitri(list l,int x)
    11. {
    12.     //duyet toan bo danh sach tu trai sang phai
    13.     for(int i=0;i<l.n;i++)
    14.     {
    15.         //neu gap x thi tra ve vi tri lien
    16.         if(l.a[i]==x)
    17.         return i;
    18.  
    19.             //nguoc lai se tra ve -1
    20.         else
    21.         return -1;
    22.     }
    23.  
    24.  
    25.  
    26. }
    27.  
    28.  
    29. void main()
    30. {
    31.     clrscr();
    32.     list l;
    33.     int gt;
    34.     int kq;
    35.  
    36.             printf("Nhap danh sach:");
    37.             scanf("%d",&l.n);
    38.             printf("\nNhap gia tri can tim:");
    39.             scanf("%d",&gt);
    40.             kq=timvitri(l,gt);
    41.             if(kq==-1)
    42.             printf("ko co gia tri trong danh sach");
    43.             else
    44.             printf("Vay vi tri cua phan tu do la:%d",kq);
    45.     getch();
    46. }

    Type tiếng Việt có dấu và đúng chính tả, bỏ code vào thẻ code
    Đã được chỉnh sửa lần cuối bởi rox_rook : 25-03-2008 lúc 01:35 AM.

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Bài này chẳng có liên quan gì nhiều đến thuật toán cả, chú ý post bài vào đúng box, tại sao không post vào box hỏi đáp C ?
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3.  
    4. //typedef struct list -> Tại sao khai báo typedef mà trong khi không dùng ?
    5. struct list
    6. {
    7.     int a[100]; //tung phan tu cua mang va con bieu hien gia tri toi da cua mang
    8.     int n;         //so phan tu thuc su ma mang chua
    9.                     //n là gì, cái tên của biến này chẳng nói lên được gì.
    10.                     //tại sao không khai báo cái tên mang ý nghĩa 1 chút
    11.                    // int soLuongPhanTu ?
    12. };
    13.  
    14. //int timvitri(list l, int x) Truyền bằng trị là rất poor performance
    15. //nếu list có 100 item thì nó phải tạo 1 copy cho 100 item này mỗi
    16. //lần gọi hàm này à ?
    17. //Dùng const reference
    18. int timvitri(const list& l,int x)
    19. {
    20.     //duyet toan bo danh sach tu trai sang phai
    21.     for(int i=0;i<l.n;i++)
    22.     {
    23.         //neu gap x thi tra ve vi tri lien
    24.         if(l.a[i]==x)
    25.             return i;
    26.  
    27.         //nguoc lai se tra ve -1
    28.     //Chỗ này logic sai, nếu không gặp lần đầu thì sẽ thoát luôn à.
    29.         //Cơ hội nào để nó tìm trong những thằng còn lại ? 
    30.         //else
    31.             //return -1;
    32.     }
    33.     return -1;
    34. }
    35.  
    36.  
    37. //Tập dùng int main(), void main() đã out of standared for a long time ago.
    38. int main()
    39. {
    40.     //clrscr(); Clear gì ở đây ?
    41.     list l;
    42.     int gt;
    43.     int kq;
    44.  
    45.     //printf("Nhap danh sach:"); Nhập danh sách gì, n là gì ?
    46.     printf("Nhap so phan tu 's danh sach.\n");
    47.     scanf("%d",&l.n);
    48.     //Số phần tử cho nhập hồi nào mà biểu không trash
    49.     for(int x = 0; x < l.n; ++x){
    50.         scanf("%d", &l.a[x]);
    51.     }
    52.    
    53.     printf("\nNhap gia tri can tim:");
    54.     scanf("%d",&gt);
    55.    
    56.     kq = timvitri(l,gt);
    57.     if(kq == -1)
    58.         printf("ko co gia tri trong danh sach");
    59.     else
    60.             printf("Vay vi tri cua phan tu do la:%d",kq);
    61.     //getch();
    62.    return 0;
    63. }

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    21

    Mình bị mất canh bản về c bạn có thể nói rỏ hơn về cách chuyền bằng trị và cách chuyền bằng const có jì khác nhau. Trong khi đó bài trên chỉ có thiếu cái return ở cuối hàm int timvỉti() thui . Bạn sửa lại bằng chuyền bằng const có những lợi ích jì vậy ạh

  4. #4
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Mình bị mất canh bản về c bạn có thể nói rỏ hơn về cách chuyền bằng trị và cách chuyền bằng const có jì khác nhau. Trong khi đó bài trên chỉ có thiếu cái return ở cuối hàm int timvỉti() thui . Bạn sửa lại bằng chuyền bằng const có những lợi ích jì vậy ạh
    - Khi truyền copy thường ta để làm gì : Thao tác trên dữ liệu đó để tính toán 1 cái gì đó, tức là ta nói rằng ta không muốn chỉnh sữa dữ liệu này, chỉ làm việc trên nó mà thôi -> truyền tham trị ok.
    Nhưng bây h giả sử ta có 1 struct A {...} gồm nhiều dữ liệu trong đây thì truyền bằng trị là giải pháp hết sức nghèo nàn ? Tại sao ?
    -> Khi truyền tham trị nó sẽ tạo ra 1 bản sao của 1 struct này, khi struct có dữ liệu lớn thì sao ? Quá lãng phí bộ nhớ.
    -> Giải pháp 2 là truyền bằng tham chiếu ( reference ) thao tác trực tiếp đối với dữ liệu đó không cần tạo ra copy, nhưng vì pass by reference nên việc vô tình chỉnh sữa dữ liệu là có thể xảy ra -> do đó ta dùng const mang ý nghĩa không cho phép chỉnh sữa dữ liệu.
    const thực chất không hề tồn tại trong C, nó là của C++. Một keyword hết sức thông minh và đáng giá.
    Khi bạn vô tình chỉnh sữa dữ liệu thì chắc chắn compiler nó sẽ la làng lên. Thế thôi.

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

  1. Danh Sach LK Đơn khi In ra màn hình lỗi
    Gửi bởi conghmu trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 15-10-2013, 01:41 PM
  2. danh sach liên kết đơn
    Gửi bởi cotdot trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 13-08-2009, 09:48 PM
  3. Danh sach lien ket (Help)
    Gửi bởi rongconhn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 28-07-2009, 06:31 PM
  4. cho mình hỏi về đoạn code này (danh sach liên kết)
    Gửi bởi fcmtuan trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 18-05-2007, 01:02 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