1

私はC ++でプログラムを作成しようとしていました.3つの乱数を注文し(ユーザーがそれらを記述します)、どちらが大きいか小さいかを出力しますが、2つ以上の数値が等しい場合はそれを出力する必要があります。

新しいコード:

#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 文に入れるという制限はありますか? または、または..の場合、他に2つ書くことはできませんか..?ありがとう。

4

2 に答える 2

5
#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 には、含まれているオブジェクトの単一のコピーのみを含めることができます。したがって、ユーザーが番号を複数回入力すると、insert の呼び出しは失敗します。

于 2013-09-25T04:32:41.777 に答える
0

次のコードは目的を解決します。と の 3 つの機能findLargestfindSmallestありcheckEqualます。これは非常に基本的なプログラムであり、表示方法や何を返すかなどの必要に応じて変更できます。

#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

それが役に立てば幸い。:)

于 2013-09-25T05:16:58.480 に答える