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

Đề tài: Giá trị trả lại của một hàm

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

    Mặc định Giá trị trả lại của một hàm

    Chào các bạn, mình có hai vấn đề thế này mong các bạn chỉ giúp:
    1. Khai báo một hàm có kiểu giá trị trả lại khác void, ví dụ:
    float getvalue(int i); // trả lại giá trị thứ i trong danh sách liên kết chẳng hạn
    Nếu như danh sách không rỗng thì hàm chạy bình thường, nhưng nếu như danh sách rỗng thì giá trị trả lại như thế nào để chương trinh gọi nó vẫn chạy bình thường? Mong các bạn chỉ giúp.
    2. . Việc so sánh hai mảng hoặc hai xâu:
    //code
    int a[]={...}, b[]={...} ;
    char *c="...", *d="..." ;
    cout <<(a==b)<<endl; // dòng 3
    cout <<(c==d)<<endl;
    cout << a==b<<endl;
    cout << c==d<<endl;
    //endl
    Mình muốn hỏi là tại sao các dòng 3 và 4 thì cho ra kết quả như mong muốn, còn các dòng 5 và 6 thì sai. Mình đã chạy chương trình với các dòng 5 và 6, có lần thì chương trình báo lỗi tại những dòng này, có lần lại chạy đc thì dòng 5 in địa chỉ ô nhớ, dòng 6 in ra xâu c.
    Thank?

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

    Làm thế nào với giá trị trả lại của một hàm khi không có giá trị trả về để chương trình vẫn chạy bình thường đây.?

  3. #3
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Nếu như danh sách không rỗng thì hàm chạy bình thường, nhưng nếu như danh sách rỗng thì giá trị trả lại như thế nào để chương trinh gọi nó vẫn chạy bình thường? Mong các bạn chỉ giúp.
    Có gì phức tạp đâu bạn. Bạn trả về giá trị đặc biệt nào đó cho biết là ko tìm thấy (Hoặc throw exception cũng được)

    Ví dụ đối với dslk phía trên

    Code:
    // list is null, do nothing, just return
    if(dslk.pHead == null)
           return -1; 
    
    // list is not null
    // do some stuff here
    Keep moving forward!

    ... Retired ...

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

    Trích dẫn Nguyên bản được gửi bởi nhc1987 Xem bài viết
    Có gì phức tạp đâu bạn. Bạn trả về giá trị đặc biệt nào đó cho biết là ko tìm thấy (Hoặc throw exception cũng được)

    Ví dụ đối với dslk phía trên

    Code:
    // list is null, do nothing, just return
    if(dslk.pHead == null)
           return -1; 
    
    // list is not null
    // do some stuff here
    Oh, ý mình hỏi không phải như vậy. Hàm của mình khai báo là:
    float getvalue(int i);
    Giả sử có một danh sách số thực float thì hàm trên có tác dụng là trả lại giá trị float của phần tử thứ i trong danh sách( int i). Hình như bạn hiểu là trả lại thứ tự, ở đây lời gọi hàm đã có thứ tự hàm rồi ( i). Mình muốn hỏi là nếu như danh sách không có phần tử thứ i thì phải xử lí thế nào để chương trình biết là không tồn tai giá trị này, và vẫn chạy bình thường.

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

    Mình có một bài toán cụ thể thế này. Tạo danh sách liên kết các số nguyên:

    Code:
    class IntNode{
    public:
        int info;
        IntNode *next;
        IntNode(...){//khởi tạo}
    };
    class IntList{
    private:
        IntNode head;
        IntNode tail;
    public:
        //các thao tác với danh sách, trong đó có thao tác xóa nút, chẳng hạn del Head và del Tail:
    
        int delHead( ) {
            int x=head->info
            //head=head->next
            ...
            return x;
        }
    };
    Trường hợp danh sách không rỗng thì không sao, nhưng nếu như danh sách rỗng thì phải xử lí delHead thế nào để chương trình gọi nó vẫn chạy bình thường?

  6. #6
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Giá trị trả lại của một hàm

    Bạn cần hiểu rõ hơn về danh sách liên kết. Nếu trong danh sách liên kết có chứa phần tử NULL nằm trong nó thì làm thế nào xử lý nó được.

    Đối với xóa một phần tử của danh sách liên kết bạn cần phải dồn các phần tử của nó lại để tạo ra một danh sách mới.
    Muốn dồn lại ở danh sách liên kết thì nó cũng đơn giản. Có thể làm bằng cách đơn giản như: Tìm ra phần tử của danh sách là NULL, gán giá trị của phần tử kế tiếp cho nó và đồng thời empty phần tử kế tiếp đó, cứ làm như thế cho đến hết.

    Trong trường hợp danh sách chưa có phần tử nào thì nó là danh sách rỗng, thông báo rằng nó rỗng đã có gì đâu mà gọi là danh sách? Đơn giản mà, phải không nào?
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  7. #7
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Mình muốn hỏi là nếu như danh sách không có phần tử thứ i thì phải xử lí thế nào để chương trình biết là không tồn tai giá trị này, và vẫn chạy bình thường.
    Thì cũng vậy thôi mà :-o. Nguyên tắc lập trình ở đây là phải check biến i người ta đưa vào chứ. Khi người ta đưa con số i vào thì check nó có nằm giữa 0 và dslk.length hay ko. Nếu có thì return về giá trị đó, còn nếu không thì return 1 giá trị đặc biệt nào đó, ví dụ max_float chẳng hạn.
    Keep moving forward!

    ... Retired ...

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

  1. Trao đổi liên kết, trao doi logo, Text Link với các webforumblog (free)
    Gửi bởi nguyenlam14990 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 31
    Bài viết cuối: 13-03-2012, 11:53 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