Newsgroup: it.comp.lang.c++
Titolo: Un aiuto!

Certo che se cominci col cercare di farti fare i compiti difficilmente
diventerai mai "piu' attivo"...
Ciao,
Nicola

Ciao a tutti!
Come va? Scusate se alla lista non ho ancora dato un buon contributo,
dato che spesso chiedo aiuti e non sono in grado di darne, ma se mi
aiuterete prima o poi anch'io sarò più attivo.
Devo dunque fare il seguente esercizio in C++, ma volevo capire bene
cos'è una pila, una coda ecc. relativa alle liste. Potete per favore
spiegarmelo?
Grazie e a presto.
CIAO!
Talos.
.Costruire la classe 'lista bidirezionale'.
la classe dovrà includere i metodi di
1) inserimento in testa e in coda
2) visualizzazione della lista nei 2 sensi
3) cancellazione di un elemento



No, non intendevo cercare di farmi fare i compiti. Chiedevo solo
qualche spiegazione, ad esempio cos'č una pila?
Ciao!
Talos.

Una pila, o stack, e' una struttura dati nella quale gli elementi
vengono estratti in ordine inverso rispetto a quello in cui sono stati
inseriti; una coda e' invece una struttura dati in cui gli elementi
vengono estratti nello stesso ordine in cui sono inseriti.
Ciao,
Nicola



Ciao Nicola! Grazie mille per la spiegazione. Quando parli di
elementi, posso chiederti se ti riferisci agli oggetti, ossia le
classi? Se hai un esempietto semplice puoi mandarmelo per favore?
Grazie e ciao!
Talos!

 Grazie e ciao!
Quando parlo di elementi mi riferisco ai valori che inserisci nella
struttura dati, che possono essere sia di tipi predefiniti che di tipi
definiti da te.
Attento che classi e oggetti non sono la stessa cosa: le classi sono
tipi di dati, gli oggetti sono valori di tali tipi.
Mi spiace ma non ho un esempio da mandarti, e mi sa che piu' che un
esempio ti ci vuole un buon libro.
Ciao,
Nicola

Grazie e ciao!
#include <stack>
int main() {
	std::stack<int> s;
	s.push(1);
	s.push(2);
	s.push(3);
	s.pop(); // restituisce 3
	s.pop(); // restituisce 2
	s.pop(); // restituisce 1
}
gli elementi a cui si riferisce Nicola sono gli int che usi, quindi
1,2,3
Anto
--
Antonio Cuni, 18 anni, studente
Brainbench Certification: 
Master C++: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
http://www.brainbench.com/transcript.jsp?pid=1301688

 C Language: 3.32, higher than 79% of all previous test takers.
Adesso dovrebbe essere calato un pochettino :-)
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
The instructions said to use Windows 98 or better - so I installed FreeBSD.



Grazie ancora x la risposta. Che libro mi suggeristi? Basta che sia x
principianti.
Ciao!

 Ciao!
Dipende da vari aspetti: che cosa ti interessa di piu', piuttosto il C++
come linguaggio o invece uno strumento specifico che ti permetta
risultati concreti (GUI, ecc.), se sei un principiante solo rispetto al
C++ o hai poca esperienza di programmazione in generale. Se hai gia'
qualche esperienza di programmazione il libro piu' adatto tra quelli che
conosco e' "C++ Primer" di S.Lippman e J.Lajoie, che e' stato anche
tradotto in italiano. Non e' il libro piu' semplice, ma almeno sai di
studiare un libro molto ben fatto.
Purtroppo i libri per principianti sono il settore piu' infestato di
porcherie e non e' facile orientarsi.
Ciao,
Nicola

value_type &).
oops... 10 frustate vanno bene? (e dire che sono recidivo, avevo fatto
questo errore tale e quale durante la stesura di un programmino :-( )
--
Antonio Cuni, 18 anni, studente
Brainbench Certification: 
Master C++: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
http://www.brainbench.com/transcript.jsp?pid=1301688

 questo errore tale e quale durante la stesura di un programmino :-( )
E' capitato anche a me! Infatti stack (e in generale gli ADT FIFO e LIFO)
vengono spesso definiti in quel modo.
Lasciamo stare le frustate se rispondi a questa domanda (zitti gli altri):
perche', secondo te, nella STL hanno scelto di fare in questo modo? E perchè in
linguaggi quali Smalltalk (se lo conosci), Python o Java (che credo tu conosca
almeno un po) tale scelta non avrebbe senso?
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

almeno un po) tale scelta non avrebbe senso?
mi sembra di essere a scuola...
cmq penso che sia per questioni di flessibilità: in questo modo è
possibile controllare quale sia l'elemento di testa e valutare se è
"popparlo" o no, senza la necessità di eliminare e reinserire ogni
volta l'elemento da confrontare. 
Smalltalk e Python non li conosco. Java poco, e non mi viene in mente
nessun motivo valido (a parte il fatto che Java non predilige
l'efficienza, ma cmq non lo capirei lo stesso).
Ciao
Anto
PS
forse vi sembrerò vanitoso, ma ve lo voglio dire lo stesso: mi sono
classificato primo alle Olimpiadi nazionali di Informatica!!! Devo
ringraziarvi tutti quanti, ho imparato moltissimo da questo newsgroup.


 classificato primo alle Olimpiadi nazionali di Informatica!!!
Accidenti! Complimenti veramente!
EMG

 ringraziarvi tutti quanti, ho imparato moltissimo da questo newsgroup.
Servono a questo i NG, o sbaglio?


 all'oggetto eliminato. Ergo la scelta.
Penso che il vero motivo di questa scelta e' che e' stato dimostrato che
non e' possibile scrivere uno stack che soddisfi la garanzia forte di
sicurezza dalle eccezioni mantenendo la semantica originale
dell'operazione pop. Vedi ad esempio "Exceptional C++" di Herb Sutter.
Ciao,
Nicola