J'ai un problème à résoudre. Je dois créer une fonction qui recive 2 paramètres, l'un est de type chaîne et l'autre est int. Je dois entrer une phrase, puis un numéro. Mon programme doit supprimer le mot qui est égal à ce nombre. J'ai écrit beaucoup de mon code, mais j'ai un problème, par exemple si je saisis le numéro un, ou si ma phrase contient beaucoup d'espaces vides entre les mots, cela ne les supprime pas. Je ne dois pas utiliser d'itérateurs. Ceci est mon code.Suppression de la sous-chaîne de votre chaîne
#include <iostream>
#include <string>
#include <algorithm>
int Numberofwords(std::string s)
{
int trigg (0),suff(0);
int x(0),y(s.length()-1);
while(s[x] == ' ')
x++;
for(int x(y);x>=0;x--)
{
if(s[x]==' ') suff++;
if(s[x] != ' ') break;
}
for(;x<s.length()-suff;x++)
{
if(s[x] == ' ') trigg++;
if((s[x] == s[x+1]) && s[x] == ' ') trigg--;
if((s[x] == ' ' && s[x+1]==' \n')) trigg--;
}
trigg++;
return trigg;
}
std::string Funkcija(std::string recenica, int n)
{
int br(Numberofwords(recenica)),x(0),y(recenica.length()-1),suff(0),counter(0),trig(0);
std::string s;
if(n<1 || n>br) throw "Inputed number must be bigger than 0 and smaller then number of words in sentence.";
while(recenica[x] == ' ')
x++;
for(int i(y);i>=0;i--)
{
if(recenica[i] == ' ') suff++;
if(recenica[i] != ' ') break;
}
int a(x);
for(;a<recenica.length()-suff;a++)
{
if(recenica[a] == ' ') trig++;
if(trig == (n-1))
{
int e(a);
while(recenica[e+1] != ' ')
{
counter++;
e++;
}
recenica.erase(a+1,counter);
}
}
return recenica;
}
grâce un beaucoup d'homme ... (y), ça m'a vraiment aidé ... – Ahmo