PDA

View Full Version : [C] Può andar bene?


D4rkAng3l
12-06-2005, 18:57
L'esame è il 15...può andar bene questa soluzione:


/* La funzione Agg(), modifica i valori del campo val degli elementi della lista
L in modo tale che il valore del campo val di un elemento m sia pari alla
somma dei (vecchi) valori dei campi val dell'elemento m e degli elementi
successivi che sono interi dispari.
Esempio: se la sequenza dei valori dei campi val della lista era:2,5,8,3,2,4
allora l funzione la modifica così: 10,8,11,3,2,4. */

#include <stdio.h>
#include <stdlib.h>

typedef struct Elem{
long val;
struct Elem *next;
} Elem, *List;

void Agg(List L){

/* Dichiaro il puntatore al nodo corrente e lo setto al primo nodo */
List corrente = L;

while(corrente != NULL){ // Finchè non raggiunge la fine della lista
L->val += Som(L->next);
L = L->next; // Passa al prossimo nodo
}
}


/* La funzione Som() riceve l'indirizzo del nodo successivo al nodo corrente e
calcola la somma di tutti gli elementi aventi campo val dispari per poi
restituire il risultato alla funzione Agg() */

long Som(List L){

long somma = 0;

if(L == 0) return 0; // Se non ci sono altri elementi la somma è 0

else{
while(L->next != NULL){
if(L->val%2==1) // Se il campo val del nodo puntato da L è dispari
somma += L->val;

L = L->next; // Passa al prossimo nodo
}
return somma; // Ritorna ad Agg il valore della somma
}
}


Grazie
Andrea

Fenomeno85
12-06-2005, 19:16
while (L!=NULL)


~§~ Sempre E Solo Lei ~§~

D4rkAng3l
12-06-2005, 19:29
dove? dove ho messo corrente? ma corrente l'ho precedentemente impsotato a L

Fenomeno85
12-06-2005, 19:34
nella funzione som :D


~§~ Sempre E Solo Lei ~§~

D4rkAng3l
12-06-2005, 19:37
nella funzione som :D


~§~ Sempre E Solo Lei ~§~
ah ok che rincoglionito

Fenomeno85
12-06-2005, 19:42
ah ok che rincoglionito

;) lo sapevo dopo che mi hai fatto prendere quel colpo :D

~§~ Sempre E Solo Lei ~§~