2017-02-05 21 views
0

私はその後、新しい配列が[1,2,3,4,5,9,8,7,6]または[1,2,3,4,5,6,7,8,9]2つの配列要素を結合するか、または1つの配列要素を別の配列要素に分配しますか?

でなければなりません

ints entered:- [1,2,3,4,5,-6,-7,-8,-9, 0(to quit)] 
posi[i] = [1,2,3,4,5] 
av[i] = [9,8,7,6] since I've reversed them 

[I](絶対値+正)[i]をPOSIする配列abの要素を配布するには、ここで私は「何ですこれまでにやった:

#include <iostream> 
using namespace std; 
const int sentinel=0; 
const int arraysize=20; 
int main() 
{ 
    int numbers[arraysize]; 
    int neg[arraysize]; 
    int posi[arraysize]; 
    int ab[arraysize]; 
    int count=0; 
    int negcount=0; 
    int posicount=0; 
    int absolutecount=0; 
    int absolute; 
    int num; 

    cout << "Enter ints -0 to quit: "; 
    cin >> num; 
    while (num != sentinel && count < arraysize) 
    { 

     numbers[count] = num; 
     cin >> num; 
    } 

    // Negative 
    for (int i=0; i < count; i++) 
    if (numbers[i] < 0) 
    { 
     neg[negcount]=numbers[i]; 
     negcount++; 
    } 
    cout << "Absolute value: "; 
    for (int i= negcount-1; i >= 0;i--) 
    { 
     absolute = neg[i]*-1; 
     ab[i] =absolute; 
     cout << ab[i] << ' '; 
    } 
    cout << endl; 
    // Negative 

    for (int i=0; i < count; i++) 
    if (numbers[i] > 0) 
    { 
     posi[posicount] = numbers[i]; 
     posicount++; 
    } 
    cout << "Positive Number: "; 
    for (int i=0; i<posicount; i++) 
     cout << posi[i] << ' '; 
    cout << endl; 
    return 0; 
} 
+1

'numbers [count] = num;'カウントを増やさない:数字[count ++] = num; ' –

+0

これは正しい答えですか?それは '[1,2,3,4,5,6,7,8,9]'や '[1,2,3,4,5,9,8,7,6]'ですか? – PaulMcKenzie

+0

は同期されていれば問題ありません –

答えて

0

私はDを再配置の問題を解決するために、negの必要性を参照してくださいpos、およびab配列はありませんあなたが説明した形でata。

これはC++であるので、のは、いくつかのSTLのアルゴリズム関数を使用してみましょう:使用

#include <iostream> 
#include <algorithm> 

int main() 
{ 
    int numbers[] = {1,2,3,4,5,-6,-7,-8,-9}; 

    // partition negatives from positive numbers 
    auto iter = std::stable_partition(std::begin(numbers), 
             std::end(numbers), [](int n) 
            { return n >= 0; }); 

    // reverse the negative numbers 
    std::reverse(iter, std::end(numbers)); 

    // make the negative numbers positive 
    std::for_each(iter, std::end(numbers), [](int& n){ n *= -1; }); 

    // output results 
    for (auto& i : numbers) 
     std::cout << i << " "; 
} 

機能:

std::stable_partition

std::reverse

std::for_each

Live Example

問題を解決するための補助配列は必要ないことに注意してください。配列numbersは再配列され、変更されます。

関連する問題