0

こんにちは私はいくつかの助けが必要です。私はプログラミングクラスの紹介をしていて、C++を使用しています。昨日予定されていた課題を誰かが手伝ってくれることを願っています(奇跡の反応を期待しないことは理解していますが、女の子はいつでも試すことができます)。

私が知っている2つの問題があります。1つ目は、最小値に関するものです。大きな問題は、3回の要件でループさせようとしていることですが、私の総数を失うことはありません。配列など、まだ学んでいないものは使えないので、投稿しました。私は同様の問題や質問を見てきましたが、それらはクラスの現在の進歩には複雑すぎる答えになってしまいました。だからここに問題の指示があります:

手順1)キーボードからの入力として提供される一連の数値の平均値、最大値、および最小値を見つけるプログラムを作成します。データセット内の値の数は、0から20までの範囲である必要があります。ユーザーは最初にデータセットの値の数を入力します(変数int Numberを使用)。指定された範囲で数値を入力する3回の試行をユーザーに与えます。入力した数値の値がこの範囲外の場合は、エラーメッセージを書き込みますが、続行します。ユーザーが3回の試行内にNumberに有効な値を入力しなかった場合、エラーメッセージを出力し、プログラムを終了します。

2)平均値の出力のみを印刷時に小数点以下3桁にフォーマットします。

3)入力として入力されたデータセットの値は、正、負、またはゼロの任意の値にすることができます。

4)プログラム出力を読み取り可能にします(以下の例を参照)。(注:通常必要なように、このプログラムに入力された入力値を印刷しないことに注意してください。これは、調査で必要な「ツール」をまだカバーしていないためです)。

以下は、プログラムの実行からの出力です:(データセットの順序でこれらの値を使用-> 19.0 53.4 704.0 -15.2 0 100.0

The largest number:  704
The smallest number:  -15.2
The average of the 6 numbers entered: 143.533
yourName L4p2XX.cpp
Lab#4 prob 2 XX-XX-12

これが解決策での私の貧弱な言い訳です:

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    double Number = 0, minValue, maxValue, average, total = 0;
    int ct = 0, numCount;
    cout << "How many numbers would you like to enter? ";
    cin >> numCount;

    for(ct = 1; ct <= numCount; ct += 1)
    {    
        cout << "Enter Value from 0 to 20, inclusive: ";
        cin >> Number;

        if(Number > 20|| Number < 0)
            for(int errorCt = 1; errorCt <= 4; errorCt += 1)
            { 
                if(errorCt == 4)
                {  
                    cout << "You have had 3 attempts to enter a valid" <<
                            "number. \nPlease try this program again when you" <<
                            "are able to follow directions.";
                    cout <<"\nLBn\n"<<"L4P2LB.cpp\n"<<"11-05-12\n";
                    return 0;
                }
                cout << Number << "is not within range.\n" << 
                        "Please enter a number from 0 to 20: ";
                cin >> Number;
            } //end for loop

        total += Number;
        if(maxValue <= Number)
            maxValue = Number;
        if(Number <= minValue)
            minValue = Number;
    } //end for loop

    cout << "The smallest number entered was " << minValue << endl;
    cout << "The largest number you entered was " << maxValue << endl;
    average = total/numCount;
    cout << setprecision(3) << fixed << showpoint << "You entered " <<
            numCount << " numbers. The average of these is " << average;

    //Program ID
    cout <<"\n" << "L4P2LB.cpp\n" << "11-05-12\n";
    system ("pause");
    return 0;
} // End main

私を正しい方向に導くことができる人に事前に感謝します。私の仕事をしてくれる人を探していないので、他に何もしなければならないか、何をすべきかについての提案があれば、方向性の助けが必要です。再度、感謝します。リンダ

また、3回目以降は一時停止して、適切に終了する必要があります。2番目の一時停止を入れても機能しないので、そこにも明らかな何かが欠けていますか?

4

1 に答える 1

0

私が最初に目にする問題は、いくつかの変数を初期化していないことです。

現在の値に関係なく、最初のループですべての場合に上書きされるもの(通常は「正/負の無限大」 )で両方minValueと変数を初期化するか、最初の反復で両方を設定する必要があります。だから私はこれを置き換えることによって修正することをお勧めしますmaxValue<limits>Number

    if(maxValue <= Number)
        maxValue = Number;
    if(Number <= minValue)
        minValue = Number;

    if(maxValue <= Number || ct == 1)
        maxValue = Number;
    if(Number <= minValue || ct == 1)
        minValue = Number;

ct == 1最初の反復で当てはまるように。

そうは言っ0..20ても、間違った変数の範囲条件をチェックします。変数でチェックしますが、変数Numberをチェックする必要がありnumCountます。しかし、「数値の数」を格納する変数がである必要があるという要件も尊重しなかったためNumber、正しい変数をチェックしましたが、入力を読み込むために間違った方法を使用しました。これでこの問題が修正されるはずです(行の変数名を変更し、チェックをメインループの外に移動しました):cin >>...

cout << "How many numbers would you like to enter? ";
cin >> Number;
if(Number > 20|| Number < 0)
{
    for(int errorCt = 1; errorCt <= 4; errorCt += 1)
    ...
        if(errorCt == 4)
        {  
            cout << "You have had 3 attempts to enter a valid" <<
                    "number. \nPlease try this program again when you" <<
                    "are able to follow directions.";
            cout <<"\nLBn\n"<<"L4P2LB.cpp\n"<<"11-05-12\n";
            return 0;
        }
        cout << Number << "is not within range.\n" << 
                "Please enter a number from 0 to 20: ";
        cin >> Number;
    } //end for loop
}

for(ct = 1; ct <= Number; ct += 1)
{    
    ...
}
...
于 2012-11-06T23:22:08.160 に答える