01/10/2018, 16:36

Hỏi về cách truyền xâu ký tự vào hàm trong c++

mình có chương trình như sau:

#include <iostream>
#include <string>
using namespace std;
void nhap(string A)
{
	getline(cin,A);
	cout << A.length() << endl;//KET QUA DUNG
}
void dao(string A,string B)
{
	cout << A.length() << endl;//KET QUA SAI
	for(int i=0;i<A.length();i++)
	{
		B[A.length()-i-1]=A[i];
	}
}
int main()
{
	string A,B;
	nhap(A);
	xuat (A);
	dao(A,B);
	xuat (A);
	return 0;
}

chương trình thì không có lỗi gì cả, nhưng kết quả hiển thị sai

  • ở hàm nhap(string A) thì mình kiểm tra độ dài chuỗi A nhập vào đúng.
  • ở hàm dao(string A,string B) thì mình kiểm tra độ dài chuỗi A khi truyền vào sai (=0 mọi trường hợp )
    mọi người chỉ giùm mình sai chỗ nào với? cảm ơn!
Trần Hoàn viết 18:38 ngày 01/10/2018

Mình nghĩ vấn đề nằm ở hàm nhập của bạn.
Thử đưa lệnh kiểm tra độ dài ra khỏi hàm đi bạn :))

#include <iostream>
#include <string>
using namespace std;
void nhap(string A)
{
	getline(cin,A);
}
void dao(string A,string B)
{
	cout << A.length() << endl;//KET QUA SAI
	for(int i=0;i<A.length();i++)
	{
		B[A.length()-i-1]=A[i];
	}
}
int main()
{
	string A,B;
	nhap(A);
	cout << A.length() << endl;//KET QUA SAI
	xuat (A);
	dao(A,B);
	xuat (A);
	return 0;
}

Cách sửa:

void nhap(string &A)//Bạn tự tìm hiểu google nhé
{
	getline(cin,A);
}
minh viết 18:48 ngày 01/10/2018

Cảm ơn b! Để m thử xem

Anh chàng Doggo viết 18:46 ngày 01/10/2018

https://yeulaptrinh.pw/1678/phan-biet-tham-chieu-va-tham-tri/
Bạn tham khảo thêm về hai cách truyền tham chiếu và tham trị nhé

minh viết 18:48 ngày 01/10/2018

CẢM ơn bạn!..

Bài liên quan
0