Newsgroup: it.comp.lang.c++
Titolo: x Alex Martelli

Ciao, anzi buonasera, visti gli orari! Allora, io il programmino l'ho
scritto con l'edit del DOS. Nel libro avevo già trovato l'avvertenza conto i
vari programmi per scrivere (word ecc.) quindi il testo dovrebbe essere ok,
inoltre per alcuni caratteri, ({}) tipo le parentesi graffe, ho dovuto
scoprire il codice ASCII (mi ci sono voluti altri due giorni, praticamente è
più di un mese che ho questo libro!! Se non avessi scoperto questo news
credo che non l'avrei finito prima di un secolo). Il file l'ho chiamato
"peso",   .c ce lo ho messo perchè mi sembrava di aver capito dalle
istruzioni in readme che bisognava mettercelo. Poi, come ti ho già detto ho
provato anche senza ma i risultati cambiavano di poco. Il file l'ho salvato
nell'HD c: (ho due HD), che è lo stesso HD dove ho messo DJGPP.  Parlando
con te ho avuto un'illuminazione, non sarà che quel  c  che ho visto nelle
istruzioni si riferiva alla directory  in cui il mio file stà? Adesso vado a
vedere......No, l'illuminazione era sbagliata. Non va. Però ho controllato
il mio file quando lo apro con l'edit del DOS, in alto, in mezzo, Dove si
trova quello che credo si chiami "percorso", c'è scritto c:\peso, ciò sta ha
significare chei il file è in   c. Non dovrò mica salvarlo dentro la
cartella di gcc? Ok, aspetto domani sera. Ultima cosa, quando compilo,
controllo anche "staticamente "gli errori, o li vedrò solo quando cercherò
di far funzionare il programma?  Non era l'ultima, era la penultima: devo
chiederti se è proprio gravissimo che io non riesca a fare neanche un
piccolo conto con i numeri esadecimali. Ho capito cosa significa che sono a
base 16, ho capito che aiutano a rendere le istruzioni più corte, ma per il
resto non riesco proprio neanche a sommarli. Ciò mi impedirà di imparare a
programmare bene?  O.K. anche questa sera ti ho lasciato un papiro da
leggere, grazie per l'aiuto.
Andrea



programmare bene?
Certamente no, anche perche`, quando ti servissero (che non e`
spessissimo), ci sono ottime calcolatrici che servono appunto per
fare i conti per te, mica devi farli a mano.  Ad esempio la
calcolatrice che e` inclusa in Windows (almeno dal 95 in avanti,
non so le versioni antiche) fa un ottimo lavoro anche, volendo,
con gli esadecimali.
Alex

 Alex
Nooooooooooooooooooooooooooooooo!!!!!!!!!!!!!!!!Non posso credere che tu non
abbia mai usato windoze prima della 95!
Ma allora sei giovanissimo: beato te :)
Saluti e scusate ancora
+----------------------------------------------------------------------+
|              www                                                     |
|     wwwwwww     w   ww                 Vittorio Luigi Bertocci       |
|    wwwwwwwwwwwww     ww  www                                         |
|   / wwwwwwwwwwwwwwwwww  ww  ww        
bert...@educ.disi.unige.it
    |
|   7   wwwwwwwwwwwwwwwwwww    w                                       |
|  /    @wwwwwwwwwwwwwwwwwwww           
bert...@indy.disi.unige.it
    |
|  7      wwwwwwwwwwwwwwwwww                                           |
|  |_/     \wwwwwwwwwwwwww  www        
bert...@indigo.disi.unige.it
   |
|  |__/\    \wwwwwwwwwwwwwwwwwwww    w                                 |
|           w  wwww  ww  ww  w   w  w  
bert...@asterix.disi.unige.it
  |
|            ww   www  w  www     ww                                   |
|                                           
bert...@pegaso-ip.it
      |
+----------------------------------------------------------------------+

Ma allora sei giovanissimo: beato te :)
Eh, magari (essere giovanissimo) -- no, e` che prima ho sempre
usato Unix (a casa, Linux dalla 0.98 in poi; prima, Interactive), e
prima ancora DOS nudo (oltre a VMS, tanti OS IBM, ecc); magari
_sviluppavo_ anche per Windows (infatti l'API/SDK nudo e crudo
a 16 bit lo ricordo ancora bene:-), ma sempre facendo il massimo
possibile del lavoro su Unix (anche i calcoli esadecimali, magari
con perl...).  Solo da un paio d'anni ho dovuto migrare del tutto su
sistemi Microsoft, per cui come _utente_ Windows sono partito
in pratica da W95...
Alex

Ciao,
ho rinominato il file peso PESO.CC, ho poi dato il comando gcc peso.cc. La
risposta è stata:  peso.cc:1:  '#include' expects "FILENAMES" or  <FILNAME>
e torna a segnarmi c:\>.  Che cosa significa? Ciao e grazie.

e torna a segnarmi c:\>.  Che cosa significa? Ciao e grazie.
Beh, significa che hai fatto un bel passo avanti... finalmente
il compilatore STA effettivamente girando sul tuo programma,
e comincia a diagnosticare i tuoi errori.
Questo primo errore e` relativo ad una istruzione #include
che non e` seguita da una delle due forme ammesse, cioe`
un nome di file incluso fra virgolette o parentesi triangolari.
Il compilatore ti sta inoltre dicendo che l'errore si verifica
alla linea 1, la prima linea del tuo file di testo/programma.
Guarda quindi la linea in questione e vedi un po' cosa hai
scritto esattamente... e correggilo in quello che avresti
dovuto scrivere (il libro che stai seguendo sicuramente
ti dara` delle indicazioni in merito).  Sara` probabilmente
qualcosa come
#include <pippo.h>
oppure forse
#include "pippo.h"
dove naturalmente al posto di pippo ci sara` il vero nome
del file (di header) che stai chiedendo di includere.
Alex

Ciao, ho sistemato la prima riga del mio programmino ed ora credo, che
almeno per la compilazione, sia tutto  o.k. La risposta che ricevo dopo aver
dato il comando gcc peso.h è: gcc.exe: Compilation of hearder file
requested.
L'unica cosa che ho dovuto fare è stata cambiare anche il nome del file:
l'ho chiamato peso.h. Se non chiamavo il file come sta scritto vicino ad
#include non riuscivo a fare nulla.
Ora però dove è andato a finire il programma compilato? per farlo funzionare
devo istallarlo come si installa un qualsiasi altro programma? (Io neanche,
purtroppo, sono giovanissima, ma uso il computer da poco, quindi tutto
quello che so di una installazione è che si deve trovare un file che si
chiama SETUP e cliccarci sopra, se si è in dos bisogna cercare INSTALL). Mi
rendo conto che le domande che ti faccio sono a dir poco primitive, spero di
non essere troppo noiosa. Grazie per la pazienza.
P.s. Forse è meglio che nell'oggetto scrivo qualche altra cosa per non far
sembrare agli altri utenti che la conversazione è privata? Io scrivevo così
per farti trovare subito il messaggio; non era mia intenzione escludere
nessuno.  Ciao.
Andrea

nessuno.  Ciao.
Suggerire "dilettante allo sbaraglio" -- detto con simpatia, nota
bene, perche` ricordo ancora benissimo i _miei_ primi scontri
con la programmazione (un quarto di secolo fa, e con le schede
perforate, che allora quelle si usavano...).  Ma al giorno d'oggi
ti consiglierei decisamente di fare un "salto tecnologico" verso,
appunto, la programmazione "di oggi" (grafica, visuale, piu`
semplice e produttiva) -- non c'e` bisogno che tu ti passi la
stessa gavetta che si sono passati i dinosauri come me!-)
Comunque sul trovare i tuoi messaggi non temere, il traffico
su it.comp.lang.c++ e` cosi` scarso di questi tempi che non
c'e` proprio rischio che vadano persi...!
Alex

Gent. Alex,
Ti sarei molto grato se mi aiutassi a cercare l'errore nel programma
che riporto sotto, da me scritto per apprendere la Standard Template
Library.
Il messaggio di errore del mio ambiente di sviluppo:
Error   : declaration syntax error
(instantiating: 'iterator_trait<MyClass*>')
MSLHeaders++.h line 19   #include "MSLHeaders.PPC"
Error   : 'value_type' is not a struct/union/class member
MSLHeaders++.h line 19   #include "MSLHeaders.PPC"
Ritengo che nella funzione "relations" da me copiata da
http://www.sgi.com/Technology/STL/operators.html
 vi sia un errore, nei punti
indicati.
E'  necessario l'overloading di tutti gli operatori relazionali perchè gli
oggetti di una classe, inseriti in un container, possano ordinarsi
attraverso la funzione della libreria ANSI/ISO sort?
Il mio ambiente di sviluppo è Metrowerks Professional 2. Il mio computer è
un Power Macintosh con Mac(tm) OS 8.0.
Ti prego, se non è faticoso per Te, rispondimi.
Saluti
Sergio Piccioni
do...@insinet.it
/*
 *  Hello World for the CodeWarrior
 *  © 1997 Metrowerks Corp.
 *
 *  Questions and comments to:
 *       
sup...@metrowerks.com
 *       
http://www.metrowerks.com
 */
#include <iostream>
template <class T> void relations(T x, T y){
 if (x == y) assert(!(x != y));
  else assert(x != y);
 if (x < y) {
  assert(x <= y);
  assert(y > x);
  assert(y >= x);
 }
 else if (y < x) {
   assert(y <= x);
   assert(x < y); // qui assert( x > y ) ?
   assert(x <= y);// qui assert( x >= y ) ?
   }
   else {
     assert(x <= y);
     assert(x >= y);
   }
}
class MyClass {
     friend bool operator == ( const MyClass &a, const MyClass &b ) throw()
{ return a.a == b.a; }
     friend bool operator != ( const MyClass &a, const MyClass &b ) throw()
{ return ! ( a == b ); }
     friend bool operator < ( const MyClass &a, const MyClass &b ) throw() {
return a.a < b.a; }
     friend bool operator > ( const MyClass &a, const MyClass &b ) throw() {
return ! ( a < b ); }
     friend bool operator <= ( const MyClass &a, const MyClass &b ) throw()
{ return a == b || a < b ; }
     friend bool operator >= ( const MyClass &a, const MyClass &b ) throw()
{ return a == b || a > b; }
     int a, b;
    public:
     MyClass( int z = 0, int w = 0 ) throw() : a( z ), b( w ) { }
   };
void main( void )
{
 MyClass x( 10 ), y( 12 );
 ::relations( x, y );
 vector< MyClass, allocator< MyClass > > mc;
 mc.push_back( y );
 mc.push_back( x );
 ::sort( mc.begin(), mc.end() );
}

 attraverso la funzione della libreria ANSI/ISO sort?
No, basta il < (non mi pare che serva anche l'==).  Questo, almeno, a
rigor di standard.
Alex