2
Làm sao để trả về hai giá trị trong cùng một hàm C/C++?
1
duytam921120 đã đăng:

Giả sử mình có hàm tính Tổng và đồng thời tính Tích luôn như sau,

int TinhTongVaTinhTich(int a, int b){
    int Tong = a + b;
    int Tich = a * b;

    return Tong;
    //return Tich;
}

Hàm trên chỉ cho phép trả về 1 giá trị, vậy cho mình hỏi làm sao để cùng trả về hai giá trị Tong và Tich ở câu lệnh return?

thêm bình luận...
3
Hữu Long50 đã đăng:

Bạn không thể trả về cùng lúc hai giá trị trong cùng một hàm với câu lệnh return nhưng nếu như bạn vẫn muốn, thì vẫn còn cách khác, mặc dù có chút hơi phức tạp và ở đây mình dùng cấu trúc struct để lưu hai giá trị của Tong và Tich rồi sau đó ở hàm tính Tổng và Tích mình sẽ trả về cấu trúc struct thay vì từng biến Tong và Tich, cụ thể như sau,

#include <iostream>
using namespace std;

// Khai báo cấu trúc chứa giá trị Tổng và Tích
struct TT {
    int Tong;
    int Tich;
};


// Hàm tính Tổng và Tích
// Input: 2 số nguyên a và b
// Output: Cấu trúc TT như trên thay vì hai biến Tong hoặc Tich riêng lẻ
TT TinhTongVaTinhTich(int a, int b){
    TT A;

    A.Tong = a + b;
    A.Tich = a * b;

    return A;
}

int main(){
    int a = 2;
    int b = 3;

    TT A = TinhTongVaTinhTich(a, b);

    cout << A.Tong << endl; // Tong = 5
    cout << A.Tich << endl; // Tich = 6

    return 0;
}

Các bước mình thực hiện ở đoạn chương trình trên:

  • Tạo một cấu trúc tên TT có hai thành phần là Tong và Tich với kiểu dữ liệu số nguyên.
  • Tạo hàm tính tổng truyền vào hai giá trị a và b, thực hiện tính Tổng và Tích sau đó lưu vào biến cấu trúc A.
  • Ở hàm main(), tạo biến cấu trúc A để nhận giá trị trả về, sử dụng toán tử chấm (.) để lấy giá trị đã tính bên trong cấu trúc ra.

Hope it help...

đã bổ sung 3.2 năm trước bởi
Avatar: Hữu Long Hữu Long50

Mình đã hiểu ý của bạn, cách của bạn có hơi phức tạp nhưng cũng khá hay, thanks bạn nhé.

duytam9211 10.05.2018
thêm bình luận...
2
Commander20 đã đăng:

Bạn không thể trả về 2 giá trị trong cùng một hàm nhưng bạn có thể làm theo cách sau

int Tong;
int Tich;

void TinhTongVaTinhTich(int a, int b, int &Tong, int &Tich)
{
        Tong = a + b;
        Tich = a*b;
}

Sau khi kết thúc hàm thì Biến Tong Tich sẽ là giá trị cần tìm.

Cần dấu & để truyền tham chiếu vào ( hoặc đơn giản là biến sẽ bị thay đổi khi ra khỏi hàm )

Giả sử mình muốn trả về nhiều giá trị hơn nữa thì phải khai báo thêm nhiều biến, như thế có hiệu quả không bạn @Commander. Mình thấy các ngôn ngữ cấp cao khác như Python, Java,... nó trả về đối tượng nào cũng được hết, liệu mình có thể làm như thế trong C/C++ được không bạn nhỉ? Thanks bạn nhé.

duytam9211 10.05.2018
thêm bình luận...

Câu trả lời của bạn

Chào mừng bạn đến với cộng đồng chia sẻ tri thức BanhoiTuidap.com, bạn có thể chia sẻ bất kỳ sự hiểu biết, nghiên cứu hoặc kinh nghiệm của mình về câu hỏi này với một số lưu ý:
  • Lịch sự, tế nhị.
  • Hạn chế ghi tắt, câu trả lời của bạn chỉ nên tập trung vào câu hỏi ở trên.
Câu trả lời của bạn sẽ được đăng ở chế độ cộng đồng, cho nên bạn sẽ không thể chỉnh sửa sau khi đăng, có thể đăng ký thành viên trên BanhoiTuidap.com khi bạn muốn theo dõi câu hỏi này hoặc chủ đề liên quan.
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)