-1

いくつかの数値 (整数) を取得し、それらを 100 サイズの配列に入れ、ユーザーが指定した後に、指定された負の数 (指定された正の数の負) の検索を開始する C++ プログラムのコードを作成しようとしています。センチネル番号 (101) を入力します。例えば; 整数 1、45、12、-32、103、2015、および 32 をプログラムに与えると、整数 32 が与えられるはずです (その否定形が存在するため)。の場合、何も出力されません。以下のようなものを書きました。しかし、残りの方法がわかりません...助けや提案をいただければ幸いです。

CodeBlocks 13.12 を使用していることを忘れていました。

#include <iostream>

using namespace std;

int number = 0, nCounter = 0, sentinel = 101, i;
int myArray[100];

int main (){

cout << "Please enter your numbers: " << endl;

while ( number != 101 ){

  cin >> number;
  myArray[0]= number;
  nCounter += 1;

}

for ( i = 0; i <= nCounter; i++ ){
  if (myArray[i] > 0) // I'm stuck at here!
}

return 0;
}

ありがとうございます。英語の間違いについてお詫び申し上げます。

4

6 に答える 6

2

コードのいくつかの間違いを次に示します。

  1. まず、すべての入力要素を配列の 0 番目のインデックス要素に割り当てます。

  2. ユーザーは 101 を入力せずに 200 要素を与えることができます。その場合、配列サイズをオーバーランします。

単純なアルゴリズムは次のようになります。

  1. i 番目の正の要素を選択し、その負の配列を検索します。

  2. 配列内の可能な正の要素ごとに 1 を繰り返します。

これが実際の例です。

入力は次のようになります。

while ( (nCounter < 100) && (number != sentinel) ) {
    std::cin >> number;
    myArray[nCounter]= number;
    nCounter += 1;
}

そしてチェック条件:

for ( i = 0; i < nCounter; i++ ){
    if (myArray[i] > 0) {
        for( j = 0; j < nCounter; j++) {
            if(myArray[i] + myArray[j] == 0) // positive and negative add up to 0
                std::cout << myArray[i] << std::endl ;
        }
    }
}
于 2015-03-07T16:04:52.873 に答える
0
#include<iostream>

using namespace std;


int main()
{
    //initialize size and empty array
    int size = 10, x;
    int myArray[10] = {};

    //enter integers into array
    for (int i = 0; i < size; i++)
    {
        cin >> myArray[i];
    }

    //search array for negative numbers
    for (int i = 0; i < size; i++)
    {
        if (myArray[i] < 0)
        {
            x = (myArray[i] * (-1));        //multiply by -1 to get (+)
            cout << x << ' ';
        }
    } 
    return 0;       
}
于 2015-03-07T16:47:21.697 に答える
0

私がこれを正しく理解していれば、負のものを正符号で印刷したいと考えています。この簡単なコードでそれを行うことができます!

#include <iostream>

using namespace std;

int number = 0, nCounter = 0, sentinel = 101;
int myArray[100];

int main (){

    cout << "Please enter your numbers: " << endl;

    while ( (nCounter < 100) && (number != sentinel) ) {
        std::cin >> number;
        myArray[nCounter]= number;
        nCounter += 1;
    }

    for (int i = 0; i < nCounter; i++ ){
        if (myArray[i] < 0) {
            std::cout << (myArray[i] * -1) << std::endl ;
        }
    }

    return 0;
}

計算コストを削減する簡単な変更は次のとおりです。読み取り時に指定された数値から情報を取得しようとすることができます。

#include <iostream>
#include <vector>

using namespace std;

int number = 0, sentinel = 101;

int main (){

    cout << "Please enter your numbers: " << endl;

    vector<int> array;

    while (number != sentinel) {
        std::cin >> number;
        if(number < 0)
            array.push_back(number);
    }

    for (int i = 0; i < array.size(); i++ )
        std::cout << (array[i] * -1) << std::endl ;

    return 0;
}
于 2015-03-07T16:30:46.570 に答える