Salve, dovrei scrivere un programma che determini quante volte una parola, inserita dall'utente, sia presente in un array preinizializzato. Se la parola è presente, una o più volte deve essere cancellata rendendo NULL il rispettivo puntatore. E alla fine dovrei stampare per ogni parola presente l'indirizzo della parola, l'indirizzo del puntatore alla parola e la parola stessa. Se invece la parola è stata cancellata devo stampare solo l'indirizzo del puntatore alla parola cancellata.
Procedo così
//prototipi::
void legge(char []); //per leggere la parola che l'utente vuole cercare
void cerca(char *[], char [], int [], int *[]); //per cercare la parola immessa nell'array
void cancella(char *[], int [], int);
main()
{
//inizializzo un array di parole
char *data[8]= {"tazza","chiodo","luce","sedia","luce","tappo","p enna","luce"};
char word[20];
int address[8]={0} //array che contiene gli indirizzi delle parole
int num_parole;
leggi(word]);
cerca(data,word,address,&num_parole);
cancella(data,address);
stampa(data,address,num_parole);
}
//FUNZIONE LEGGO
void legge(char parola[])
{
printf("inserisci una parola: ");
scanf("%s", parola);
}
//FUNZIONE CERCA E qua so cavoli (almeno per me)
void cerca( char *data[], char parola[], int address[], int *num)
{
int i;
for(i=0, i<8; i++)
{
//domanda 1: come si confrontano gli array??
if( *data[i] = parola)
address[i]= 1;
//domanda 2: A che serve quel puntatore ad int??
}
//FUNZIONE CANCELLA
void cancella(char *data[], int address[])
{
int a;
for(a=0, a<8; a++)
{
if (address[a]==1)
*data[a]= NULL;
}
}
//FUNZIONE STAMPA
void (char *data[], int address[], int num)
{
printf("%s%-13s\n\n", "INDICE", "PAROLA");
int i;
num=0;
for(i=0; i<8; i++)
{
if(address[i]==0)
printf("%d%-13s\n", address[i], *data[i]);
else
if(address[i]==1)
{
printf("%d"%-13s%-6d\n", address[i], "-----",num);
++num;
}
}
}
E' evidente che ho implementato le funzioni nella maniera sbagliata, se qualche anima paziente può darmi una mano nel sanare le lacune, gliene sarei immensamente grato.
Il programma in questione dovrebbe agire così: Se inserisco per esempio luce, num_parole è 3 mentre address[0]=0, address[1]=0, address[2]=1,address[0] etc.