C++ 中的订单号并识别重复的订单号

Order numbers in c++ and recognize the repeated ones

本文关键字:订单号 识别 C++      更新时间:2023-10-16

我试图用 c++ 制作一个程序,该程序应该对 3 个随机数进行排序(用户将编写它们),然后打印哪个是较高的和较低的,但如果两个或更多数字相等,则应打印它。

新代码:

#include <iostream>
using namespace std;
int main()
{
    int num1;
    int num2;
    int num3;
    cout << "num1" << endl;
    cin >> num1;
    cout << "num2" << endl;
    cin >> num2;
    cout << "num3" << endl;
    cin >> num3;
    if(num1 == num2 && num3==num2 && num1==num3){
        cout << "all numbers are equal";
    }
    else if (num1 == num2){
        cout << "num1 and num2 are equal";
    }
    else if (num2 == num3){
        cout << "num2 and num3 are equal";
    }
    else if(num3 == num1){
        cout << "num1 and num3 are equal";
    }
    else{
    if (num1 != num2 && num2 != num3 && num3 != num1){
        if (num1 > num2 && num1 > num3){
            cout << "higher is num1";
        }
        else if(num2 > num1 && num2 > num3){
            cout << "higher is num2";
        }
        else if(num3 > num1 && num3 > num2){
            cout << "higher is num3";
        }
    }
    }
    return 0;
}

新问题:程序也需要知道哪个是最低的,那么我该怎么做呢?

旧代码:

#include <iostream>
using namespace std;
int main()
{
    int num1;
    int num2;
    int num3;
    cout << "num1" << endl;
    cin >> num1;
    cout << "num2" << endl;
    cin >> num2;
    cout << "num3" << endl;
    cin >> num3;
    if(num1 == num2 && num3==num2 && num1==num3){
        cout << "all your numbers are equal";
    }
    if (num1 != num2 && num2 != num3 && num3 != num1){
        if (num1 > num2 && num1 > num3){
            cout << "num1";
        }
        else if(num2 > num1 && num2 > num3){
            cout << "num2";
        }
        else /*(num3 > num1 && num3 > num2)*/{//Here I tried to use and else if
            cout << "num3";
        }
    }

    return 0;
}

老问题这段代码全错了,但我不知道我做错了什么,请帮助我。我还有最后一个问题,我有 if 到 if 句子的限制吗?或者我只是不能写另外两个如果或..?谢谢。

#include <iostream>
#include <set>
int main()
{
    std::set<int> numbers;
    int input;
    for (int i=1; i<=3; ++i) {
        std::cout << "Enter number " << i << ": ";
        std::cin >> input;
        numbers.insert(input);
    }
    if (numbers.size() < 3) {
        std::cout << "You entered the same number more than once, silly!" << std::endl;
        std::cout << "Nevertheless, ";
    }
    std::cout << "the maximum number is " << *numbers.rbegin() << std::endl;
}

此代码的重要功能是它利用了以下std::set属性:

  1. 它保持其所有元素的排序顺序
  2. 它不允许重复的元素

std::set::rbegin用于获取最后一个元素,即最大数字(因为数字会自动排序)。

此代码不显示哪些数字最大和最小,但可以轻松添加。例如,std::set::insert返回的信息可用于确定集中哪个插入失败。std::set 只能包含其所包含对象的单个副本。 因此,如果用户多次输入数字,则要插入的调用将失败。

以下代码段解决了您的目的。它有三个功能findLargestfindSmallestcheckEqual。这是一个非常基本的程序,可以根据您对如何显示和返回什么等的需求进行修改。

#include <iostream>
using namespace std;
void findLargest(int n1,int n2,int n3)
{
    if(n1>n2 && n1>n3)
    {
        cout<<"Largest number is :"<<n1;
        cout<<"n";
    }
    else if((n2>n1) && (n2>n3))
    {
        cout<<"Largest number is :"<<n2;
        cout<<"n";
    }
    else
    {
        cout<<"Largest number is :"<<n3;
        cout<<"n";
    }
}
void findSmallest(int n1,int n2,int n3)
{
    if(n1<=n2 && n1<=n3)
    {
        cout<<"Smallest number is :"<<n1;
        cout<<"n";
    }
    else if((n2<=n1) && (n2<=n3))
    {
        cout<<"Smallest number is :"<<n2;
        cout<<"n";
    }
    else
    {
        cout<<"Smallest number is :"<<n3;
        cout<<"n";
    }
}
int checkEqual(int n1,int n2,int n3)
{
    if(n1==n2 && n2==n3 && n3==n1)
    {
        cout<<"All three are equal";
        cout<<"n";
    }
    else if(n1==n2||n2==n3||n3==n1)
    {
        cout<<"Two numbers are equal";
        cout<<"n";
    }
    else
    {
        cout<<"None are equal.. Finding Largest and Smallest....!!";
        cout<<"n";
    }
}
int main() {
    int num1,num2,num3;
    cout<<"Enter the numbers";
    cin>>num1>>num2>>num3;
    cout<<"n";
    checkEqual(num1,num2,num3);
    findSmallest(num1,num2,num3);
    findLargest(num1,num2,num3);
    return 0;
}

Ideone 链接:http://ideone.com/hz4keQ

希望对您有所帮助。 :)