将输出冷凝成单线

问题描述 投票:1回答:1

我正在进行一项允许用户输入整数(最多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;
}
c++
1个回答
1
投票

将输入和输出拆分为单独的循环:

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";
© www.soinside.com 2019 - 2024. All rights reserved.