Cancellazione di un elemento da una lista

edc96
Salve a tutti, sto lavorando ad un programma che, dopo aver trasferito da un file i dati delle prestazioni effettuate in un centro benessere, li gestisca di volta in volta e, ad un certo punto dell'esercizio, mi viene chiesto di creare una funzione che, chiesto il numero di prestazione che si vuole cancellare, cancelli tale prestazione assegnando all'indice della prestazione il valore 0. Mi date una mano?

Risposte
Dante.utopia
ci sono $\infty^n$ modi di implementare un programma del genere. Tu come inizieresti?

edc96
 int cerca(prestazione ElencoPrestazioni[], int n){
    int k;
    while(k<n){
        if(k==n) return k;
        else
            k++;
        return -1;
    }

}

void cancellaPrestazione(prestazione ElencoPrestazioni[], int n){
int n_prestazione;
int cancellate=0;
do{
    printf("Inserire un numero di prestazione: \n");
    scanf("%d", &n_prestazione);
}while((n_prestazione<=0)||(n_prestazione>n));
int i;
int c=cerca(ElencoPrestazioni,n);
for(i=0; i<n; i++){
    if(c>=0){
        i=0; 
        cancellate++;
    }
}
    printf("Sono state cancellate %d prestazioni: \n", cancellate);
    printf("Prestazione n.%d \n", n_prestazione);
}


Dante.utopia
Non si capisce nulla, puoi racchiudere tra i code tags?

edc96
Mi scuso, sono nuova nel forum e non so farlo.. come devo fare?

Dante.utopia
Premi il bottone, MODIFICA nel terzo messaggio della discussione e racchiudi il codice tra
[code]
[/code].

edc96
Fatto!

Dante.utopia
Non ho capito che senso ha la funzione cerca, tuttavia, secondo te in che caso, "cerca" restituisce un valore diverso da -1?

edc96
Infatti mi sono accorta che non ha molto senso. La mia idea era quella di ricercare la prestazione desiderata scorrendo il vettore e, in caso positivo, restituire un valore positivo, altrimenti -1

Dante.utopia
Ok, tralasciando un attimo l'utilità della funzione, riesci a capire perché essa restituisce sempre -1?

edc96
Sinceramente no..

Dante.utopia
Riesci a descrivere a parole il comportamento della funzione?

edc96
Probabilmente per la condizione imposta nel while

Dante.utopia
Non è ciò che ti ho chiesto. Comunque se non sai rispondere, ti consiglio di iniziare con esercizi più semplici.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.