Salve ragazzi sono nuovo del forum, è da molto che vi seguo e vedo che siete molto preparati, il mio problema consiste nell' eliminare in un array di caratteri tutti quei caratteri che nn sono alfabetici, potreste aiutarmi? Adesso vi posto il mio pezzo di codice su come avevo incominciato:
codice:
#include <cstdlib>
#include <iostream>
using namespace std;
typedef char tvettchar[100];
bool assegna(char C){
return ((C >= '!')&&(C <= '/')||(C >= ':')&&(C <= '@')||(C >= '{')&&(C <= '~'));
}
void acquisiscivett(tvettchar &vc, int &N){
do{
cout<<"Inserisci quanti caratteri inserire ";
cin>>N;
}while((N<1)||(N>100));
for(int I=0;I<N;I++){
cout<<"Inserisci il "<<I+1<<char(248)<<" carattere: ";
cin>>vc[I];
}
}
int ricerca(tvettchar vc, int inf, int sup, char canc){
if(inf > sup)
return -1;
else{
int centro = (inf + sup)/2;
if(assegna(canc) == assegna(vc[centro])){
return centro;
}
else{
if(assegna(canc) < assegna(vc[centro])){
return ricerca(vc,inf,centro-1,canc);
}
else{
return ricerca(vc,centro+1,sup,canc);
}
}
}
}
void scambia(char &A,char &B){
char aiuto;
aiuto = A;
A = B;
B = aiuto;
}
void ordinavett(tvettchar &vc, int N){
int I, sup, u_s;
sup = N - 1;
while(sup > -1){
u_s = -1;
for(I=0;I<sup;I++){
if(vc[I]>vc[I+1]){
scambia(vc[I],vc[I+1]);
u_s = I;
}
}
sup = u_s;
}
}
void sposta(tvettchar &vc, int N){
char canc;
int posiz = ricerca(vc,0,N-1,canc);
for(int I=posiz;I<N-1;I++)
vc[I] = vc[I+1];
}
void cancella(tvettchar &vc, int &N){
int I;
for(I=0;I<N;I++){
if((vc[I] <= 'A')&&(vc[I] >= 'Z')||(vc[I] <= 'a')&&(vc[I] >= 'z')){
sposta(vc,N);
N--;
}
}
}
void visualizzavett(tvettchar vc, int N){
int I;
for(I=0;I<N;I++){
cout<<I+1<<char(248)<<" carattere: "<<vc[I]<<endl;
}
}
int main()
{
tvettchar vc;
int N;
acquisiscivett(vc,N);
ordinavett(vc,N);
cancella(vc,N);
visualizzavett(vc,N);
system("PAUSE");
return EXIT_SUCCESS;
}