Also habe ich ein Programm erstellt, um zwei "Big Integers" (größer als eine normale lange lang) mit Strings zu summieren. Das Problem ist, dass, wenn ich das Programm ausführe, ich die zwei Zeichenfolgen eingeben, es gibt sogar das korrekte Ergebnis aus, aber öffnet dann das Fenster "BigIntegers.exe funktioniert nicht mehr". Wenn ich es am Ende der Konsole schließe, heißt es "Process returned 0xC0000005".C++ Absturz bei der Verwendung von Strings
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
string a, b;
string c;
int save=0;
cin>>a>>b;
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
int minS=min(a.size(), b.size());
int maxS=max(a.size(), b.size());
int i;
bool flag=true;
for(i=0; i<=maxS; i++){
if(i<minS){
c[i]=(a[i]+b[i]-2*int('0')+save)%10;
save=int(a[i]+b[i]-2*int('0')+save)/10;
}else if(i>=minS&&i<maxS){
if(a.size()>b.size()){
c[i]=(a[i]+save-int('0'))%10;
save=int(a[i]+save-int('0'))/10;
}
else{
c[i]=(b[i]+save-int('0'))%10;
save=int(b[i]+save-int('0'))/10;
}
}else{
if(save==0) flag=false;
else {c[i]=0; c[i]+=save;}
}
}
if(flag == false){
for(int i=maxS-1; i>=0; i--){
cout<<int(c[i]);
}
}else{
for(int i=maxS; i>=0; i--){
cout<<int(c[i]);
}
}
return 0;
}
Das richtige Werkzeug, um solche Probleme zu lösen, ist Ihr Debugger. Sie sollten Schritt für Schritt durch Ihren Code * gehen, bevor Sie auf Stack Overflow nachfragen. Für weitere Hilfe lesen Sie bitte [Wie kleine Programme zu debuggen (von Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Zumindest sollten Sie Ihre Frage bearbeiten, um ein [minimales, vollständiges und verifizierbares] (http://stackoverflow.com/help/mcve) Beispiel einzufügen, das Ihr Problem zusammen mit den Beobachtungen, die Sie in der Debugger. –
Sie können (und werden!) Außerhalb der Grenzen in Ihren Strings gehen. Denken Sie daran, dass Array-, Vektor- und String-Indizes nullbasiert sind, da der oberste Index "size-1" ist. Deine Schleife respektiert das nicht. –
Sorry für die Frage dann. –