Đọc từ file số n và phân tích thành dãy nhị phân

Vấn đề của mình là mình thật sự ko hiểu kiểu trả về của doinhiphan là char* nhưng sau khi return thì in ra sai. Nhưng nếu trong while(n!=0) mình cho xuất str[i] thì lại chính xác. Và đây là code của mình . Mong nhận được sự trợ giúp từ mọi người ạ.

#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;
char *doinhiphan(long n)
{
	char *str;
	str=new char [200];
	int i=0;
	while (n!=0)
	{
		if (n%2==0)
		{	
			str[i]='0';
		}
		else 
		str[i]='1';
		n=n/2;
		i++;
	}
	str[i]=NULL;
	char res[200];
	for (int j=i-1;j>=0;j--)
	{
		res[i-j-1]=str[j];
	}
	delete(str);
	res[i]='\0';
	return str;
}

void doctep(long &n)
{
	fstream f;
	f.open("matran.txt",ios::in);
	f >> n;
	f.close();
}


int main()
{
	long n;
	doctep(n);
	cout << doinhiphan(n);
}
1 Like

Hi Đỗ Nam

  1. Bạn xóa nó rồi thì làm sao cho ra ket quả đúng được.
1 Like

Mình nhầm .
bạn thử test với return res hộ mình với @@

Oh oh . Mình cảm ơn @@

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?