2016-10-27 10 views
1

私は学校のラボの割り当てに関する質問があり、私は誰かが私に少しこれを明確にすることができたと思っていました。私は答えを探しているわけではなく、ただのアプローチです。私は本の説明を完全に理解することができませんでした。配列機能。

質問:プログラムで、三つの引数受け付ける機能書く:アレイ、アレイのサイズ、および数nを。 配列に整数が含まれているとします。この関数は、数値nより大きい配列内のすべての数値を と表示する必要があります。

これは私が今持っているものである:C++側面から別に

/* 
Programmer: Reilly Parker 
Program Name: Lab14_LargerThanN.cpp 
Date: 10/28/2016 
Description: Displays values of a static array that are greater than a user inputted value. 
Version: 1.0 
*/ 

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

void arrayFunction(int[], int, int); // Prototype for arrayFunction. int[] = array, int = size, int = n 

int main() 
{ 
    int n; // Initialize user inputted value "n" 
    cout << "Enter Value:" << endl; 
    cin >> n; 

    const int size = 20; // Constant array size of 20 integers. 
    int arrayNumbers[size] = {5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24}; // 20 assigned values for the array 

    arrayFunction(arrayNumbers, size, n); // Call function 
    return 0; 
}  

/* Description of code below: 

The For statement scans each variable, if the array values are greater than the 
variable "n" inputted by the user the output is only those values greater than "n." 
*/ 

void arrayFunction(int arrayN[], int arrayS, int number) // Function Definiton 
{ 
    for (int i=0; i<arrayS; i++) 
    {  
     if (arrayN[i] > number) 
     { 

     cout << arrayN[i] << " "; 
     cout << endl; 

     } 
    }  
} 
+0

あまりにも多くのことをあきらめることなしに手助けするのは少し難しいです:)。あなたの課題の全体的な話題の上の斜体の質問ですか? – Lehu

+2

*この関数は、配列中の数字のうち「n」より大きい数字をすべて表示する必要があります。*これは、関数内で 'cin'からの読み込みが必須ではないことを意味します。 –

+1

ループカウントを20にしないでください。ループカウントを 'size'にしてください。渡された配列のスロット数が20未満の場合は、配列を超えて書き込みが行われ、*未定義の動作*が発生します。 –

答えて

1

私はこのことを前提としています

が質問:配列、配列のサイズ、および番号n:プログラムでは、3つの引数を受け取る関数を記述します。配列に整数が含まれているとします。この関数は、配列内の数値nより大きいすべての数値を表示する必要があります。

は、割り当て全体です。

  1. void arrayFunction(int[], int, int);おそらく唯一のものです。ただし、int[]は実際にはint*です。

  2. 他の人が入力を受け付けて気にしないと指摘したように。この行に沿って何かを使用してください:int numbers[] = {2,4,8,5,7,45,8,26,5,94,6,5,8};。それはあなたのための静的な配列を作成します。

  3. パラメータint nがありますが、決して使用しないでください。

  4. arrayFunctionvariableを送信しようとしていますが、この変数の定義が表示されません。

  5. ラバーダックのデバッグ(google for it :))を使用してください)。それは本当にあなたを助けるでしょう。

もっと正確な質問がある場合は、質問してください。

注:関数に配列を送信するにはより良い方法がありますが、代入によってこの古い方法とそれほど良いことはありません。

if else文を使用しますか?私は、更新されたコードでオリジナルの投稿を編集しました。

あなたは質問を更新してから、私の回答を更新します。

まず第一に、コードを正しくインデントしてください。
これを行うと、コードがはるかに洗練され、読みやすくなり、わかりやすくわかりやすくなります。

次のもの:いくつかの文脈では必須ではなくても、中カッコを省略しないでください。経験豊富なプログラマでさえ、それらを省略することはほとんどありませんので、初心者としては絶対にしないでください(たとえば、forループの場合)。

if-elseステートメントに関して、簡単な答えは次のとおりです。
場合によってはifを使用します(注:お客様のケースではelseは役に立たない)。しかし、私は三項演算子を使用する他の時間:condition ? value_if_true : value_if_false;またはラムダ式。
この場合、ifの方がより簡単で直感的になるはずです。

+0

ポインタをありがとう。私はほとんどそれを持っていると思う!私は、ユーザーが入力したn値よりも大きい配列値を出力する方法を混乱させるだけです。 if else文を使用しますか?私は、更新されたコードでオリジナルの投稿を編集しました。 –

+0

@ReillyParker今はるかに良いです。私は私の答えを更新します。 – Lehu

+1

コードが正しく機能しています。助けてくれてありがとう!最後のポインタを与えたい場合は、コードを更新します。 ;)あなたが取った時間は本当にありがたいです。コードを見れば、それはとても基本的なように見え、私はそれがそれよりも大きな試練のように見えるように自分自身を笑っている。 –

0

、あなたは数が一定値以上であるかどうかを把握するために必要な手順を考えます。次に、配列内のすべての数値に対してそれを行い、nより大きい場合は数値を出力します。あなたは 'for'ループを持っているので、C++でループを行い、数値を比較する方法をすでに知っているように見えます。

また、arrayFunctionのように値を入力しようとしていますか?あなたが試しているように、配列全体の値を1つの文で入力することはできません(また、 'values'はarrayFunctionの変数の名前ではないため、コンパイルしようとすると認識されません) 。私の全体の答えを