Ich kann sehen, dass Sie die Sprache neu sind, wie man ein gewisses Verständnis der grundlegenden Konzepte fehlen. Ich werde Ihnen zuerst einige Tipps und Erklärungen zu Ihren Fehlern geben, dann gebe ich Ihnen eine geeignetere Lösung.
Zunächst einmal versuchen, C-Stil-Arrays zu vermeiden verwenden, wie Sie mit w und x tun. Sie sind anfällig für Fehler, weil keine Grenzen zu überprüfen, schauen Sie stattdessen mit std :: vector oder std :: array.
== und = sind nicht gleich! == wird verwendet, wenn zwei Dinge verglichen werden und = wird verwendet, um die rechte Seite der linken Seite zuzuordnen.
Ihre Schleifen sind völlig falsch, wird
for (int i=0; i>s.size() ;i++)
mit nicht einmal die Schleife ein. Verwenden Sie i < s.size() natürlich. Ich empfehle auch, ++ i anstelle von i ++ zu verwenden, aber das ist nicht so wichtig.
Ihr „in Code“ denkt, ist manchmal zu seltsamen
for (int i=0; i>s.size() ;i++){
if (s.at(i) = '+')continue;
else s.at(i) == w[i];
}
(nicht der Betreuung> und = Fehler), warum nicht, wenn es statt continueing nicht ‚+‘ und dann, etwas zu tun?
sollte dieser Code logisch
for (int i=0; i>s.size() ;i++){
if (s.at(i) != '+') s.at(i) == w[i];
}
Last but not least werden, versuchen, konsequent zu sein. Zuerst verwendest du i als Schleifenvariable und das zweite Mal verwendest du y. Nicht, dass es darauf ankommt, aber Konsistenz ist immer gut beim Codieren.
machte ich eine schnelle Lösung für Ihr Problem:
#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;
}
Wahrscheinlich 'anderes s.at (i) == w [i];' 'sollte w [i] = s [i] sein ; '. – lisyarus
Hier 'für (int i = 0; i> s.size(); i ++) {' Ich denke du meinst: 'für (int i = 0; i s.größe(); y ++) {'. –
DimChtz
Auch hier 'if (s.at (i) =' + ') 'sollte es wohl sein:' if (s.at (i) ==' + ') '. – DimChtz