Newsgroup: it.comp.lang.c
Titolo: lista semplice concatenata creata dinamicamente

Salve a tutti. Sono qui di nuovo a rompervi le scatole,
ma L'ESAME E' TRA UNA SETTIMANA!!!!!!!!!!!!!!!
Detto questo, qui sotto riporto un tema d'esame che non
riesco a fare perche' non so come creare quell'"oggetto" di
cui si parla al punto (2).
-------------------------------------------------------
Tema d'esame: (1 ora)
Si scriva un programma che
1) riceve in input dall'utente
una sequenza di interi positivi maggiori di zero.
La lunghezza della sequenza in input **non e' nota a priori**.
L'input termina quando l'utente inserisce 0.
2) inserisce gli interi letti in una **lista semplice concatenata creata
dinamicamente**.   <----(??????)
3) somma tutti gli elementi pari della lista e stampa il valore della somma
calcolata oppure un opportuno messaggio nel caso
in cui la lista e' vuota o e' composta da soli elementi dispari.
-----------------------------------------------------
Allora!? Come faccio questa lista benedetta?
Grazie a chi vorra' rispondermi.
Bye!
©Scaccomatto

 creare quell'"oggetto" di cui si parla al punto (2).
  Una delle regole non scritte ma estremamente efficienti di Usenet e`
"non fare mai i compiti a casa ('homeworks') degli altri". Questo
perche`, se si sparge la voce che nel dato gruppo implementano i tuoi
problemini scolastici, si rischia che quel gruppo rimanga ingolfato di
richieste non strettamente pertinenti al /topic/. Tra l'altro, non so
che esame tu debba sostenere ma il concetto di "lista semplice
concatenata" dovrebbe risultarti noto ad una settimana dalla prova,
volendoti ritenere in grado di essere promosso...
  Una lista semplice concatenata e` un insieme di oggetti costituiti da
un "carico pagante" e da un riferimento ad un altro oggetto dell'insieme
ottenendo, in questo modo, una "catena" di record. Il vantaggio di un
approccio di questo tipo e` che non e` necessario conoscere a priori
quanti elementi dovra` contenere l'insieme, dato che ogni oggetto puo`
essere allocato a richiesta. 
  Sul K&R c'e` un esempio di implementazione di un albero come lista di
record e puntatori: e` un sovrainsieme del tuo problema, potrai
certamente trarne vantaggio. Alternativamente, ogni buon libro di
fondamenti di informatica potra` esserti di aiuto. Naturalmente,
inoltre, sulla Rete trovi decine di librerie in C per l'occorrenza.
	Alla prossima,
		Marco

Grazie a chi vorra' rispondermi.
#include <stdio.h>
#include <stdlib.h>
typedef struct tagNodoLista {
               int numero ;
               struct tagNodoLista * prossimo ;
               } NodoLista ;
typedef NodoLista *PNodoLista ;
void inserisciInLista( PNodoLista *p, int valore )
{
     if ( *p == NULL )
     {
        *p = (PNodoLista) malloc( sizeof **p ) ;
        (*p)->numero = valore ;
        (*p)->prossimo = NULL ;
     }
     else inserisciInLista( &(*p)->prossimo, valore ) ;
}
void distruggiLista( PNodoLista *p )
{
     if ( *p != NULL )
     {
        if ( (*p)->prossimo == NULL )
        {
           free( *p ) ;
           *p = NULL ;
        }
        else
           distruggiLista( &(*p)->prossimo ) ;
     }
}
int sommaValoriLista( PNodoLista p )
{
    return ( ( p->numero % 2 ) ? 0 : p->numero ) +
           ( p->prossimo ? sommaValoriLista( p->prossimo ) : 0) ;
}
int main()
{
        int i, n = -1, somma = 0 ;
        PNodoLista TestaLista = NULL ;
        puts( "Inserire una sequenza di numeri (0 per terminare):" ) ;
        for ( i = 1 ; n != 0 ; i++ )
        {
            printf( "sequenza[%d] = ", i ) ;
            scanf( "%d", &n ) ;
            if ( n != 0 )
               inserisciInLista( &TestaLista, n ) ;
        }
        if ( TestaLista != NULL )
        {
           somma = sommaValoriLista( TestaLista ) ;
           if ( somma == 0 )
              puts( "La lista e' formata da soli numeri dispari" ) ;
           else
              printf( "La somma dei valori e' %d\n", somma ) ;
        }
        else puts( "La lista e' vuota" ) ;
        distruggiLista( &TestaLista ) ;
}
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------
#exclude <windows.h>

 volta!
  Non ti inserisco nel mio killfile perche`, confidando nell'universita`
italiana, ritengo abbastanza probabile che gli infiniti tentativi di
superare l'esame riusciranno a toglierti il tempo di scrivere idiozie
qui dentro. In bocca al lupo!
	Alla prossima,
		Marco

>volendoti ritenere in grado di essere promosso...
Mah!
Non e' che per caso "Natoni" e' il mio Professore di InformaticaI sotto
mentite spoglie?
Bye,
©Scaccomatto
----------------------------------------------------------------------------
---------
Un giorno troverete una dama, una spada, un cavaliere e una scacchiera
©Scaccomatto
----------------------------------------------------------------------------
----------

se scrive che:
Spezzo una lancia a favore del *sapientone* :), anche perche' mi sento
un po' colpevole delle critiche che gli vengono mosse.
Io non credo proprio che Marco abbia tutti i torti, ne' che abbia del
tempo da perdere e condivido pienamente cio' che egli afferma.
Non credere che quando ti abbia chiesto se di studiare non se ne
parlava neanche, stessi scherzando. Anche se c'era una faccina
sorridente, la mia era una domanda seria.
Sinceramente, uno degli aspetti che mi fa pensare che l'universita'
italiana non progredira' mai rispetto a quella di altri paesi e' che
ci sono persone che, evidentemente, non hanno tempo da *perdere* nello
studiare sui libri e che non impareranno mai cio' che invece
*dovrebbero* sapere.
Io spero sinceramente che, arrivato al tuo ultimo anno di universita',
tu sappia scrivere un programma in C di questo tipo (che e', tra
l'altro, di una semplicita' mostruosa!), altrimenti saro' costretto a
credere che la mia paura e la mia sfiducia nei confronti dei laureati
in informatica e materie affini siano davvero motivate.
Forse lo sbaglio e' stato mio nel darti la pappa pronta, ma tutto il
ng sa che io non resisto alla tentazione di scrivere i programmi
interi.
Scusate lo sfogo, ma non mi va di avallare con il mio comportamento le
critiche nei confronti di una persona, della quale condivido il
parere.


qui dentro. In bocca al lupo!
Mentre mi tocco i coglioni per il tuo in bocca al lupo,
ti pregherei di uccidermi subito con il tuo killfile
(non lo sto dicendo con ironia, credimi!).
Se tu credi e confidi nell'universita' italiana, hai poco
di che sperare.
Ciao (anzi addio, giaccche' non esistero' piu', almeno per te,
e questo in fondo un po' mi dispiace)
----------------------------------------
Scacco di regina e matto di cavallo
©Scaccomatto
----------------------------------------

 wrote in message
tlucks0i7aeol34mc...@4ax.com...


e neppure ad esercitazione (se vuoi ti dico corso e nome del professore!).
[...]
forse ti sei iscritto a giurisprudenza?
in ogni caso, non vedo cosa interessi al gruppo quanto
tu scrivi. prova su IRC!
Oha
-- 
#include <disclaimer.h>

(ed anche perche' l'universita' italiana fa schifo).
Non e' stata una rottura (suggerirei caldamente di ponderare le
parole, comunque) ed eviterei di definire quelli che hai citato come
dei "comandamenti". Qui nessuno e' soggetto a nessun comandamento, se
non quelli della buona educazione e del rispetto reciproco.
Se qualcuno ti suggerisce di non chiedere la risoluzione dei compiti
per casa, dovresti avere l'umilta' di rileggere il tuo messaggio e
verificare se, effettivamente, esso dava un'idea del genere.
Evita, comunque, di avere un atteggiamento cosi' scontroso.
Non e' una bella cosa.


 dubbi che aleggiano nella propria zucca.
Hmmm...ne sei davvero sicuro ? ;)
Forse il buon Laforgia è in realtà assai astuto e perfido. 8)
Infatti nel programma che ha postato c'è un errore, una delle
funzioni non fa quel che deve, ma tu non te accorgerai finché
non capirai come funziona la ricorsione...
Che diavoletto ! 8-P
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

 Andrea Laforgia (
andrea_...@bigfoot.com
)
©Scaccomatto
----------------------------------------------
Volete giocare a scacchi con la Morte?
©Scaccomatto
----------------------------------------------

 Che diavoletto ! 8-P
La funzione in realta' fa quello che deve fare..............ma lo fa poche
volte........ :):):)
Io fossi in lui farei un bell' arocco......su questo programmino prima di
portarlo all' esamuccio di "C" uccio.........
Ivan Molella

 Ivan Molella
Ignorante, arrocco e NON *arocco*.
-------------------------------------------
Arrocco
 ©Scaccomatto®
-------------------------------------------

 Ignorante, arrocco e NON *arocco*.
Vedi, noi a roma dimo tera invece di terra,magnà invece di mangiare arocco
invece di arrocco e "A STRONZOOOOO!!!" a chi come te frequenta l' universita'
sperando di laurearsi grazie agli sforzi di altre persone...... :):):)
Ps: dimo pure ".....VA A ZAPPA' LA TERA PARASSITA........."
Ivan Molella

 sperando di laurearsi grazie agli sforzi di altre persone...... :):):)
La tua ignoranza si evince dalla volgarita' con la quale ti esprimi.
P.S.: *terun*, come si dice al Nord (Milano)