Eliminare elementi da un array

di il
4 risposte

Eliminare elementi da un array

Salve, devo scrivere un programma che, inserita una stringa, la stampi privandola delle sillabe 'si' e 'no'.
In poche parole inserisco il numero massimo di caratteri e la stringa, questa la copio in un altro array dove andrò ad eliminare le sillabe.
Questa è la funzione dove elimino e stampo:

void StampaEliminazione(char array1[], char array2[], int z){
	int i;
	int j;
	i=1;
	j=0;
	while(i<z){
		if( (array1[i]=='i') && (array1[i-1]=='s') ){
			i++;
			array2[j]=' ';
			array2[j+1]=' ';
			j++;
		}
		else if( (array1[i]=='o') && (array1[i-1]=='n') ){
			i++;
			array2[j]=' ';
			array2[j+1]=' ';
			j++;
		}
		i++;
		j++;
	}
	printf("\nStringa con i caratteri 'si' e 'no' rimossi: ");
	for(j=0;j<z;j++){
		if(array2[j]!=' '){
			printf("%c", array2[j]);
		}
	}
}
Gli passo l'array inserito e quello in cui eliminare le sillabe e il numero massimo di caratteri.
Il programma compila e funziona, elimina ciò che deve eliminare e stampa i caratteri da non eliminare.
Il problema è che se inserisco la dimensione massima e poi inserisco un numero di caratteri inferiore, alla fine della stringa vengono stampati altri caratteri speciali che non dovrebbero esserci.
Il problema si presenta in maniera del tutto casuale, a volte si e a volte no.
Non so dove sia l'errore

4 Risposte

  • Re: Eliminare elementi da un array

    Mostri il main con cui usi la funzione? Comunque quella funzione non fa quello che dici.
  • Re: Eliminare elementi da un array

    Sì, posto il main e la funzione dove inserisco il primo array:
    
    
    void Inserimento(char array[], int z){
    	printf("Inserire una stringa di massimo %d caratteri \n", z);
    	scanf("%s", array);
    }
    
    main(){
    	int n;
    	
    	printf("Inserisci il numero massimo di lettere \n");
    	scanf("%d", &n);
    	fflush(stdin);
    	
    	char arrayInserito[n];
    	char arrayFinale[n];
    	
    	Inserimento(arrayInserito, n);
    	
    	strcpy(arrayFinale, arrayInserito);
    	
    	StampaEliminazione(arrayInserito, arrayFinale, n);
    	
    	system("pause");
    	return(0);
    }
  • Re: Eliminare elementi da un array

    Beh, ovviamente devi visualizzare solamente i caratteri della stringa se questi sono in numero minore di quelli massimi

    for (j = 0; j<strlen(array2); j++) {
  • Re: Eliminare elementi da un array

    Non conoscevo la funzione strlen, ne deduco che posso inserirla anche nel while e non richiamare più la dimensione massima.
    Grazie mille
Devi accedere o registrarti per scrivere nel forum
4 risposte