salve a tutti.
ho fatto (sudando
) questo script per eliminare da una stringa, tutti i caratteri uguali al carattere dato. Il programma funzione bene ma al momento di "Un altro giro?" quando scelgo di si, il programma va in tilt!Mi da "INSERISCI UNA STRINGA" ed "INSERISCI UN CARATTERE" insieme, e se provo a digitare qualcosa impazzisce completamente!!(come se creasse dei cicli infiniti)
codice:
#include <iostream>
#include <stdlib.h>
using namespace std;
int elimina_carattere(char[], const char);
const int DIM = 100;
int elimina_carattere(char S[], const char X) {
int el=0, i=0;
int cont=0;
while(S[i]!='\0') {
if(S[i]==X) {
int j = i;
while(S[j]!='\0') {
S[j] = S[j+1];
j++;
}
cont ++; i--;
} i++;
} return cont;
}
int main() {
int esci = 1;
do{
char X;
char S[DIM];
cout << "INSERISCI UNA STRINGA" << endl;
cin.getline(S,DIM-1);
cout << "INSERISCI UN CARATTERE" << endl;
cin >> X;
char ris;
ris=elimina_carattere(S, X);
if(!ris) { cout << "NESSUN CARATTERE ELIMINATO" << endl; }
else { cout << ris << " CARATTERI ELIMINATI" << endl;
cout << "LA STRINGA RESTANTE E': " << S << endl; }
cout << "\n UN ALTRO GIRO? (Y=1,N=2)" << endl;
cin >> esci;
system("cls");
}
while(esci);
system("PAUSE");
return 0;
}
dov'è l'errore??
thx