我正在进行一项允许用户输入整数(最多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";