Le code que j'ai posté ci-dessous est censé fonctionner en récursivité (la fonction Sort()) jusqu'à 1kk fois. Le problème est le suivant: lorsque la fonction Sort() entre dans le numéro de boucle 43385, la console cesse de fonctionner et alerte: "Le programme a cessé de fonctionner". Est-ce un problème de mémoire? Si oui, où est la mauvaise partie du code? Salutations.C++ - le programme a cessé de fonctionner
#include <iostream>
#include <string>
using namespace std;
string a, b;
int n=0,i=0,counter=0;
int Sort(int i)
{
int x=0,y=0,tmp0=0;
char tmp1;
for(x=i;x<n;x++) {
if(a[x]==b[i]){
tmp0=x;
tmp1=a[x];
break;
}
else
continue;
}
for(y=tmp0;y>=i;y--)
y==i ? a[i]=tmp1 : a[y]=a[y-1];
counter+=tmp0-i;
if(i==n-1)
return counter;
else
Sort(i+1);
}
int main()
{
cin >> n >> a >> b;
Sort(0);
return 0;
}
sur quelle ligne se plante-t-il? – tenfour
juste avant le tri (i + 1) [en fait juste avant ou juste après, je ne peux pas le vérifier) – jwitos
Quelques remarques: l'autre continue dans la première boucle n'est pas nécessaire, la boucle continue à l'itération suivante de toute façon. tmp0, tmp1 ne sont pas des noms utiles. de meilleurs noms par exemple seraient index pour tmp0 et valeur pour tmp1 ou quelque chose de similaire. Il est difficile de comprendre la signification de ces paramètres avec ces noms. –