30/09/2018, 16:48
giúp mình về cấp phát động trong c++
#include<iostream>
//
//hiển thị
void Display(char *display, int n)
{
for (int i = 0; i < n; i++)
std::cout << display[i];
std::cout << std::endl;
}
//
//khởi tạo cấu hình đầu tiên
void InitFirst(char *&first, int n)
{
first = new char[n];
for (int i = 0; i < n; i++)
first[i] = '0';
}
//
//khởi tạo cấu hình cuối cùng
void InitLast(char *&last, int n)
{
last = new char[n];
for (int i = 0; i < n; i++)
last[i] = '1';
}
int NextBitString(char *first, int n)
{
//
//countBool đếm xem có bao nhiêu số 1 chuyển thành số 0
int countBool = 0;
//
//xét từ vị trí cuối cùng
n--;
while (first[n] == '1')
{
first[n--] = '0';
countBool++;
}
first[n] = '1';
return countBool;
}
void Generate(int n)
{
//
//đếm sồ trường hợp có thể xảy ra
int countCase=1;
char *first = NULL, *last = NULL;
//
//khởi tạo cấu hình đầu tiên và cuối cùng
InitFirst(first, n);
InitLast(last, n);
//
//hiển thị cấu hình đầu tiên(trường hợp đầu tiên)
Display(first, n);
while (true)
{
int countBool;
countBool = NextBitString(first, n);
//
//kiểm tra xem có phải là cấu hình cuối cùng chưa
if (countBool != n)
{
Display(first, n);
countCase++;
}
else
break;
}
std::cout << "co tat ca " << countCase << " truong hop";
//lỗi ở đây
delete[] first, last;
}
void main()
{
int n;
std::cout << "nhap n=";
std::cin >> n;
Generate(n);
}
Tại sao lệnh delete[] first, last; lại bị lỗi vậy?
Bài liên quan
Bạn thử tách thành 2 dòng
xem thử thế nào? Mình cũng chưa test thử.
thử rồi, vẫn lỗi
bạn sửa
char *first = NULL, *last = NULL;
thành
char * first = NULL, last = NULL;
thử?
không thử cũng biết là không được. Bác đừng troll em
Thử đi …
hý. e ko biết mà.
nhưng e chạy thử bằng Dev C++ thì ra kết quả rồi nhé, chả lỗi đâu cả.
có lỗi là Dev bắt Main phải return int thôi.