我正在做一项作业,允许用户输入整数(最多 20 个条目)并在输入“0”时显示奇数条目和偶数条目的列表。该作业要求用户每行输入一个整数。
我已经设法提取和分离奇数和偶数条目,但是作业要求赔率显示在一行上,偶数显示在其下方的另一行上。
例如,如果用户输入整数 1-9:
Odds: 1 3 5 7 9
Evens: 2 4 6 8
目前,它返回:
Even: 2
Even: 4
Even: 6
Odd: 1
Odd: 3
Odd: 5
etc...
我希望我的程序甚至允许这样做,但我怀疑问题出在我设置循环的方式上。
#include <iostream>
using namespace std;
bool isEven(int x) {
if ((x%2) == 0) {
return true;
} else {
return false;
}
}
int main(){
const int x = 20;
int list[x];
int counter;
cout<<"Enter up to 20 integers or press 0 to display list"<<endl;
for (counter=0; counter<x; counter++) { //main loop
cout<<"Enter number: ";
cin>>list[counter];
if (list[counter]==0) {
for (int i =0; i<counter; i++) {
if (isEven(list[i])==true) {
cout<<"Even: "<<list[i];
}
}
for (int j = 0; j<counter; j++) {
if (isEven(list[j])==false) {
cout<<"Odd: "<<list[j];
}
}
break;
}
}
return 0;
}
最佳答案
将输入和输出拆分为单独的循环:
for (counter=0; counter<x; counter++) {
// input
}
for (counter=0; counter<x; counter++) {
// output
}
在遍历每个值之前打印标签并使用 \n
打印换行符:
cout << "Even: ";
for (int i =0; i<counter; i++) {
if (isEven(list[i])==true) {
cout << list[i];
}
}
cout << "\nOdd: ";
for (int j = 0; j<counter; j++) {
if (isEven(list[j])==false) {
cout << list[j];
}
}
cout << "\n";
关于c++ - 将输出压缩成单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55063267/