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.?
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?
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.?
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)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.
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 ...
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.
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:
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?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; } };
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?
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 đó.Email: kevin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
Phone: 0972 89 7667
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 hoặc bị sự thiếu kỷ luật làm tiêu tan sự nghiệp.
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.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.
Keep moving forward!
... Retired ...