如何在集合的元素之间打印逗号
How to print a comma between elements of a set
我正在做一项作业,我做了一个函数来获取功率集并且它起作用了,但是如果设置是这样的:
{1,2,3}
它打印出这个:
{{},{1,},{2,},{1,2,},{3},{1,3},{2,3},{1,2,3}}
而且我无法删除这些逗号以变成那样:
{{},{1},{2},{1,2},{3},{1,3},{2,3},{1,2,3}}
此函数的源代码:
void power_set(int set1[], int set1_length) {
int power = pow(2,set1_length);
cout << "{";
for (int i = 0; i < power; i++) {
cout << "{";
for (int j = 0; j < set1_length; j++ ) {
if(i & (1<<j)) {
cout << set1[j];
if (j < set1_length - 1) cout << ",";
}
}
cout << "}";
if (i != power - 1)cout << ",";
}
cout << "}";
}
检查你的 if 语句:
if (j < set1_length && (i & (1 << (j+1)))) cout << ",";
解决此问题的一种方法是跟踪您是否打印了一组中的第一个数字。而不是:
for (int j = 0; j < set1_length; j++ ) {
if(i & (1<<j)) {
cout << set1[j];
if (j < set1_length - 1) cout << ",";
}
}
您可以使用标志仅打印从集合中的第二个数字开始的逗号:
bool first = true;
for (int j = 0; j < set1_length; j++ ) {
if(i & (1<<j)) {
if (first) {first = false;}
else {cout << ",";}
cout << set1[j];
}
}
我正在做一项作业,我做了一个函数来获取功率集并且它起作用了,但是如果设置是这样的:
{1,2,3}
它打印出这个:
{{},{1,},{2,},{1,2,},{3},{1,3},{2,3},{1,2,3}}
而且我无法删除这些逗号以变成那样:
{{},{1},{2},{1,2},{3},{1,3},{2,3},{1,2,3}}
此函数的源代码:
void power_set(int set1[], int set1_length) {
int power = pow(2,set1_length);
cout << "{";
for (int i = 0; i < power; i++) {
cout << "{";
for (int j = 0; j < set1_length; j++ ) {
if(i & (1<<j)) {
cout << set1[j];
if (j < set1_length - 1) cout << ",";
}
}
cout << "}";
if (i != power - 1)cout << ",";
}
cout << "}";
}
检查你的 if 语句:
if (j < set1_length && (i & (1 << (j+1)))) cout << ",";
解决此问题的一种方法是跟踪您是否打印了一组中的第一个数字。而不是:
for (int j = 0; j < set1_length; j++ ) {
if(i & (1<<j)) {
cout << set1[j];
if (j < set1_length - 1) cout << ",";
}
}
您可以使用标志仅打印从集合中的第二个数字开始的逗号:
bool first = true;
for (int j = 0; j < set1_length; j++ ) {
if(i & (1<<j)) {
if (first) {first = false;}
else {cout << ",";}
cout << set1[j];
}
}