2016-07-19 10 views
-2

こんにちは私は1 + 2 + 3 + 2 + 2 + 1と言うことができるように合計を取ると1 + 1として合計を並べ替える必要があるプログラムを作ろうとしている+ + 2 2 + 2 + 3私の空白の出力を与えるC++での並べ替え

これはコード

#include <iostream> 
#include <algorithm> 
#include <string.h> 
using namespace std; 

int main() { 
    string s; 
    char w[100]; 
    char x[100]; 
    cin>>s; 
//moving string s to array w to remove the '+' charachter for sorting 
for (int i=0; i>s.size() ;i++){ 
    if (s.at(i) = '+')continue; 
    else s.at(i) == w[i]; 
} 
//sorting array w 
sort(w,w+100); 
//moving array w to array x and re-adding the '+' after sorting 
for (int y=0; y > s.size();y++){ 
    w[y]==x[y]; 
    x[y+1]=='+'; 
} 
cout<<x; 

return 0; 

}

ですが、私はそれを実行したとき、それは私に空白の出力 を与えるこれは、C++プログラムで私の最初の時間ですまだまだ初心者です。

tあらかじめ助けを借りてハンクス!

+1

おそらく '他s.at(I)== [i]のwは、[i]は' [I] = sでwは 'でなければなりません; '。 – lisyarus

+2

ここで 'for(int i = 0; i> s; size); {' for(int i = 0; i s.size(); y ++){'と同じです。 – DimChtz

+1

また、if(s.at(i)= '+') 'おそらく:if(s.at(i)== '+')'であるべきです。 – DimChtz

答えて

0

基本的な概念の理解が不足しているので、あなたはその言語を初めて知っていることがわかります。 私は最初にあなたの間違いについてのヒントと説明をして、より適切な解決策を提供します。

まず、wとxのようにCスタイルの配列を使用しないようにしてください。境界チェックがないためにエラーが発生しやすく、代わりにstd :: vectorまたはstd :: arrayを使用します。

==と=は同じではありません! ==は2つのものを比較するときに使用され、=は右側を左側に割り当てるために使用されます。

あなたのループでもループに入ることはありません

for (int i=0; i>s.size() ;i++) 

を使用して、完全に間違っています。もちろん、s.size()を使用してください。私は+++の代わりに++を使用することをお勧めしますが、あまり重要ではありません。

は、あなたの「コードで考える」ことではありません「+」の代わりcontinueingの、次に何かをやっている場合、なぜチェックしていない、あまりにも

for (int i=0; i>s.size() ;i++){ 
    if (s.at(i) = '+')continue; 
    else s.at(i) == w[i]; 
} 

(>および=ミスを気にしない)時には奇妙なのですか?

このコードは、論理的に

for (int i=0; i>s.size() ;i++){ 
    if (s.at(i) != '+') s.at(i) == w[i]; 
} 

なく、少なくとも最後には、矛盾しないようにしようとする必要があります。最初にループ変数としてiを使用し、2回目にyを使用します。それは重要ではありませんが、コーディングの際に一貫性は常に良いです。

私はあなたの問題の迅速な解決をした:

#include <iostream> 
#include <string> 
#include <vector> 
#include <algorithm> 

using namespace std;  
int main() 
{ 
    string input; 
    cin >> input; 

    vector<int> nrs = vector<int>(); //initialising this is not really needed 
    for (char c : input) //range based for loop, prevents mistakes with indices 
    { 
     if (c != '+') 
     { 
      nrs.push_back(c - '0'); // a char minus '0' gives the numerical value 
     } 
    } 

    sort(nrs.begin(), nrs.end()); 

    string answer; 
    for (int nr : nrs) //range based for loop again 
    { 
     answer += to_string(nr); //use to_string to convert an int to a string 

     if (nr != nrs.back()) //to avoid adding the '+' after the last character 
     { 
      answer += '+'; 
     } 
    } 
    cout << answer << endl; 

    return 0; 
} 
関連する問題