2

私は MATLAB が初めてで (プログラミングは初めてではありません)、私のエンジニアリング クラスでは、if/elseif/else とループの基本を教えているだけです。さて、宿題がありますが、それを理解できないのが恥ずかしいです。どこかでシンプルさが欠けているに違いありません。

購入したボルト、ナット、ワッシャーの数をユーザーに尋ね、合計を計算して出力するプログラムを作成します。これで問題ありません。この部分は完了しました。

ここがちょっとややこしいところ…

追加機能として、プログラムは順序をチェックします。正しい注文には、少なくともボルトと同じ数のナットと、少なくともボルトの 2 倍のワッシャーが必要です。そうでない場合、注文はエラーになります。これらは、プログラムがチェックする唯一の 2 つのエラーです: ナットが少なすぎることとワッシャーが少なすぎることです。エラーの場合、プログラムは「順序を確認してください: ナットが少なすぎます」または「順序を確認してください: ワッシャーが少なすぎます」を適切に出力します。注文に両方のエラーがある場合は、両方のエラー メッセージが出力されます。エラーがない場合、プログラムは「Order is OK.」と出力します。紛らわしい部分 ---> if -elseif-elseステートメントの 1 つのセットだけでこれを実現できます。

両方が true の場合、このプログラムで 1 つの if-elseif-else ステートメントで両方を出力するにはどうすればよいですか?

これが私のコードです:

% Get the amount each part
bolts = input('Enter the number of bolts: ');
nuts = input('Enter the number of nuts: ');
washers = input('Enter the number of washers: ');

% Check for the correct amount of nuts, bolts, and washers
if bolts ~= nuts
    disp('Check order: too few nuts');
elseif bolts * 2 ~= washers
    disp('Check order: too few washers');
else
    disp('Order is OK.');
end

% Calculate the cost of each of the parts
costOfBolts = bolts * .05;
costOfNuts = nuts * .03;
costOfWashers = washers * .01;

% Calculate the total cost of all parts
totalCost = costOfBolts + costOfNuts + costOfWashers;

% Print the total cost of all the parts
fprintf('Total cost: %.2f\n', totalCost);
4

3 に答える 3

7

考えるためのヒント: 「if-elseif-else のセット」ステートメントには、複数のelseifを含めることができます。

于 2013-10-30T00:17:27.247 に答える
4

これは少し不器用なアプローチのように思えますが、単一の if-elseif-else ステートメントでそれを行う必要がある場合は、これを実現する 1 つの方法があります。

% Check for the correct amount of nuts, bolts, and washers
if (nuts < bolts) && (washers < 2*bolts)
    disp('Check order: too few washers');
    disp('Check order: too few nuts');
elseif washers < 2*bolts
    disp('Check order: too few washers');
elseif nuts < bolts
    disp('Check order: too few nuts');
else
    disp('Order is OK.');
end
于 2013-10-30T00:18:35.060 に答える
0

上記の問題を解決するための多くのオプションがあります。if 内で if を使用して条件を確認するか、@nispio が述べたようにプログラムを作成できます。@nispio がすでに解決策の 1 つを述べているので、別のことを述べます。複数の if else ステートメントを使用しているため、これは適切な答えではない可能性があります。

bolts = input('Enter the number of bolts: ');
nuts = input('Enter the number of nuts: ');
washers = input('Enter the number of washers: ');

if bolts > nuts
    fprintf('Check order: Too few nuts\n');
    if 2*washers < bolts
        fprintf('Check order: Too few washers\n');
    end
elseif 2*washers < bolts
    fprintf('Check order: Too few washers\n');
else
    fprintf('Order is OK.');
end
于 2016-01-07T16:22:37.950 に答える