C ++ - 检查给定时间间隔内是否没有偶数

时间:2017-03-01 20:07:40

标签: c++

我必须在C ++上编写一个程序,它找到用户给出的范围内的所有偶数。这是我到目前为止编写的代码:

#pragma hdrstop
#pragma argsused

#include <tchar.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>

void main() {
int m, n, j = 1; // m and n- numbers entered by user, j- product of all even numbers in interval
char atbilde; // A letter entered by user, of which system decides wether to continue or to stop programme

do {
    j = 1;
    cout << "Enter the min number of interval!  ";
    cin >> n;
    cout << "Enter the max number of interval!  ";
    cin >> m;
    if (n > m) { // Detects wether „n” is larger than „m”
cout << "Max number of interval has to be larger than min number!";
        do { // If max number is larger than min number, screen is cleared
            cin.clear();
            cin.ignore();
            cout << "Enter the numbers again!";
            cout << "\n Enter the min number of interval!  ";
            cin >> n;
            cout << "\n Enter the max number of interval!  ";
            cin >> m;
        }
        while (n > m);
    }

    cout << "Even  numbers in given interval: ";
    for (; n <= m; n++)
    { 
        if (n % 2 == 0)
        { // Detects, wether there are even numbers in given interval
                if (n != 0) {

                    cout << n << " ";
                    j *= n;

                }

                if ((n == m) && (n % 2 != 0)) {
                    j=0;
                }

        }

    }
        cout << "\n The product of found even numbers: " << j << " ";


    cout << "\n Repeat? (Y/N) ";
    cin >> answer;
    system("cls");

}
while (tolower(answer) != 'n');
}

但是我遇到了一个小问题,所以由于这个问题我无法完成100%的程序。 比如,用户输入范围,其最小和最大数量是相同的,它是奇数。在这种情况下,程序必须打印出句子“间隔中没有偶数”代替“找到偶数的乘积:”。我在互联网上搜索了解决方案,但还没找到。 我希望你能知道正确的解决方案。

2 个答案:

答案 0 :(得分:0)

一些提示可以帮助您:如果范围内没有偶数,您将无法进入循环。那么j会是什么?你如何对这个价值做出反应?

答案 1 :(得分:0)

我试图修复你的代码,我尽我所能从我理解你要做的事情中做到了。 我清理了它,修复了拼写和语法,我删除了不必要的东西,我也让它更紧凑,更好看。

#include <iostream>

int main() {
    int max=0, min=1, sum=0; product = 1, amount = 0; // max, min - entered by user, product - product of all even numbers in interval, sum - sum of all even numbers in interval. amount - amount of even numbers in interval
    char x=Y; // Entered by user to know if to quit or continue to continue.

    while ((x == Y) || (x == y))
    {
        while (min > max) { // System detects whether minimum is bigger than maximum
            cin.clear();  // Clears screen so if this part runs again it wouldn't get messy.
            cin.ignore();
            cout << "Max has to be larger than min!";
            cout << "\n Enter the min number of interval!  ";
            cin >> min;
            cout << "\n Enter the max number of interval!  ";
            cin >> max;
        }

        for (; min <= max; min++)
        {
            if (min % 2 == 0)
            {
                sum+=n;
                count++;
                product*=n;
            }
        }
        if (count == 0)
        {
            product=0;
            cout << "There are no even numbers in interval!";
        }
        else
        {
            cout << "\n The amount of the even numbers in interval: " << amount << ",the product of the even numbers: " << product << ",the sum of the even numbers: " sum << "\n\n";
        }
        cout << "Repeat? (Y/N) ";
        x=getchar;
        system("cls");
    }
    return 0;
}