-2

以下は私のコードです。アルゴリズムに問題があります。最大値と最小値の両方について、入力ファイルからの整数の最後の値が表示されます。値。誰かが見て、私が間違っていることを教えてください。

#include "cstdlib"
#include "iostream"
#include "fstream"

using namespace std;

int main()
{
    fstream instream;
    ofstream outstream;
    instream.open("num.txt");
    if(instream.fail())
    {
        cout<<"The input file failed to open\n";
        exit(1);
    }
    outstream.open("output.txt");
    if(outstream.fail())
    {
        cout<<"The output file failed to open";
        exit(1);
    }

    int next, largest, smallest;
    largest = 0;
    smallest = 0;

    while(instream>>next)
    {
        largest = next;
        smallest = next;
        if(largest<next)
        {
            largest = next;
        }
        if(smallest>next)
        {
            smallest = next;
        }
    }

    outstream<<"The largest number is: "<<largest<<endl;
    outstream<<"The smallest number is: "<<smallest<<endl;
    instream.close();
    outstream.close();
    return 0;
}
4

4 に答える 4

2

プログラムは、指示されたことを実行する傾向があります。これはあなたがするように言ったことです:

while(instream>>next) {
        largest = next;
        smallest = next;

これは、常に最新に設定する場所です。たぶん、これらの3行を次のように変更します。

largest = 0;
smallest = –0;
while(instream>>next) {
于 2012-06-12T09:28:30.597 に答える
1

問題はこのループにありますか?

    while(instream>>next)

    {

    largest = next;

    smallest = next;

    if(largest<next)

    {

    largest = next;

    }

    if(smallest>next)

    {

      smallest = next;

    }

    }

最大と最小の両方が次と等しいため、2 つの if ステートメントに到達できないでしょうか? while 内の 2 つの if ステートメントが実行されない場合、反復のたびに最大値と最小値が常に next に設定されます。

于 2012-06-12T09:25:56.820 に答える
0
#include<cstdlib>
#include<iostream>
#include<fstream>

using namespace std;

int main()
{
    fstream instream;
    ofstream outstream;
    instream.open("joy.txt");
    if(instream.fail())
    {
        cout<<"The input file failed to open\n";
        exit(1);
    }
    outstream.open("output.txt");
    if(outstream.fail())
    {
        cout<<"The output file failed to open";
        exit(1);
    }

    int next, largest, smallest;
    largest = 0;
    smallest = 0;


    while(instream>>next)
    {

        if(largest<next)
        {
            largest = next;
        }else{
                  smallest = next;
        }
    }

    outstream<<"The largest  number is: "<<largest<<endl;
    outstream<<"The smallest number is: "<<smallest<<endl;
    instream.close();
    outstream.close();

    system("pause");
    return 0;
}
于 2013-02-28T19:54:25.860 に答える