Newsgroup: it.comp.lang.c++
Titolo: funzione

Ragazzi mca sapete cosa fa questa funzione?
#define k 1000
bool boh(bool s[],bool t[]){
  int i;
for(i=0; i<k; i++){
   if(t[i] > s[i]) return(false);
   return(true);
 }
}
Grazie


(A parte che bool se non ricordo male non e' standard c++ ma viene definito
in compilatori
tipo VC++)
Mi sa che e' scritta un po' male... Il confronto lo fa cmq solo sul primo
elemento,
torna false se t[i] > s[i] altrimenti torna vero.
(In ogni caso si sarebbero da fare appunti su ogni linea di codice circa
:) )

 wrote in message
QwTZ5.99098$hk4.3...@news.infostrada.it...


 tipo VC++)
Penso che tu ricordi male: in realta' bool e' una keyword dello
standard.
Saluti,
Alberto Griggio

>
Sono d´accordo con Mario Rossi:
questa funzione e´scritta maluccio perche´ confronta solo t[0] con s[0] e
poi decide se tornare true o false, allora non si capisce cosa ci sta a fare
quel ciclo for.
Per me puo´ averla scritta pure Norton o Bill Gates....e´ scritta maluccio!
Mauro

 implementarla è stato un prof universitario
Premettendo che ciò non significa assolutamente nulla (non sarà il caso tuo,
forse nella funzione 'boh' si trattava solo di una "svista", ma ci sono
prof. universitari che scrivono coi piedi), la funzione effettivamente
verifica *solo* che il primo elemento di s sia maggiore o uguale al primo
elemento di t (visto che si tratta di bool, verifica che se t[0]==true =>
s[0]==true, se t[0]==false => s[0] *dovrebbe*(vedi dopo) poter assumere
entrambi i valori).
In caso affermativo, restituisce true, altrimenti false.
Da notare che il confronto viene effettuato su tipi bool, quindi si fa
l'assunzione che 'false==0', e 'true>0'. In genere true corrisponde ad 1, ma
mi sembra che lo standard specifichi solo 'non-zero' come valore di true.
Quindi probabilmente il codice è poco portabile (sebbene, ripeto, tutti i
compilatori che conosco lo definiscono come 1).
Credo che per l'effetto probabilmente voluto (confronto dell'intero array
fino al primo elemento di t[x]==true, con s[x]==false) ti convenga eliminare
le parentesi graffe del for.
Example:
const int k = 1000; //cos'era quel brutto "#define?"
bool boh(bool *s,bool *t)
{
   // int i può essere dichiarato nel for...
   for(int i=0; i<k; ++i)
     if(t[i] > s[i]) return false;
   return true;
}
Ciao
Domenico Barra

elemento,
infatti...

implementarla è stato un prof universitario
E` scritta molto male...
Il for e` inutile poiche` alla prima iterazione viene comunque
eseguita una return... a questo punto o e` sbagliata
l'implementazione (probabile al 99%) o si voleva fare il
solo confronto sui primi elementi ed in tal caso era meglio:
return t[0]<=s[0];
ma ci sarebbe comunque da fare appunti su pressocche` ogni riga
di codice (almeno se parliamo di C++, ma credo anche di C)
Paolo

 in compilatori tipo VC++)
No, è standard.
EMG

 implementarla è stato un prof universitario
No comment...
EMG

 standard.
Strano, l' ho sparata li' senza controllare perche' qualche tempo fa ho
ricompilato
un progetto sotto watcom 11.0 e gli unici errori di portabilita' riscontrati
nel codice
erano quelli di alcune variabili bool che lui non trovava.
Forse mi ricordo male io, o forse il watcom 11.0 non definisce bool...

}
Hai chiesto che fa questa funzione? Schifo, rispondo io...eh,eh,eh.
A parte scherzi, pare che questa funzione parte con l'idea di
confrontare i primi 1000 elementi di due array di bool restituendo
true se sono identici e false se sono diversi, però si ferma comunque
dopo il primo confronto rendendo peraltro l'uso del for completamente
inutile. Inoltre la dichiarazione di quella variabile i all'inizio del
blocco mi fa sospettare che ci troviamo di fronte al classico
individuo che conosce un pochino il C(molto male, comunque) e
crede(sbagliando)che in C++ si programmi alla stessa maniera.
Ad ogni modo questa sottospecie di funzione si potrebbe semplicare
cosi':
bool boh(bool s[],bool t[]){return s[0]==t[0];}
Se invece lo scopo era quello di confrontare tutti i primi 1000
elementi dell'array:
const k=1000;
bool boh(bool s[],bool t[])
    {
    for(int i=0; i<k; i++)if(t[i] > s[i]) return false;
    return true;
    }
Il Ghenio
-----
E'più oscuro del crepuscolo, é più rosso del sangue,
in nome della pace e della giustizia faccio appello a
tutti i poteri più remoti dell'oscurità, perché mi
aiutino a distruggere i miei nemici e tutti coloro
che saranno tanto sciocchi da ostacolarmi. FULMINE ROSSO!!
(Slayers)
-----

 true se sono identici e false se sono diversi,
... Non proprio esatto :-)
Per il resto, pienamente d'accordo.
Domenico Barra

Mario Rossi wrote in message

Se e' standard lo deve essere da "poco" (dopo il 1994) in quanto anche la
versione Metaware che ho utilizzato io non lo capiva.
saluti
Stefano C.

 Se e' standard lo deve essere da "poco" (dopo il 1994)
_Lo_ Standard C++ (il primo ed il solo) e' del 1998.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
A C++ exception is when the code gets in trouble and says:
"Beam me up, Scotty!".


Grazie per l'informazione. Non avevo mai visitato il sito ANSI.
Io pero' ho sempre programmato per sistemi embedded (hw proprietario non
compatibile PC od altro) e quindi ho sempre utilizzato i compilatori Watcom
e Metaware dal 1993. Inoltre nei loro manuali le librerie delle classi di
base le chiamavano "standard".
Chissa' perche' la definizione "standard" dei signori ANSI e' uscita con
cosi' tanti anni di ritardo.
Scusate e grazie
Stefano C.


I signori ANSI l'avranno anche definito nel 1998 ma penso che per i
programmatori professionsisti lo "standard" era gia' indicato dal Sig Bjarne
Stroustrup, suo inventore, molti anni addietro.
ciao
Stefano C.

 wrote in message
gcSZ5.98206$hk4.3...@news.infostrada.it...


 Stroustrup, suo inventore, molti anni addietro.
Vedi, il sig. BS ha continuato a cambiare il suo "standard" nel corso
degli anni; puoi confrontare le tre edizioni del suo libro e l'ARM
scritto con la Ellis, e leggere "Design and Evolution of C++".
Ad un certo punto e' stato necessario standardizzare a livello
internazionale (non "personale"): insomma definire esattamente cosa un
programmatore puo' aspettarsi di trovare in un compilatore ed in una
Standard Library.  Non credo che un "programmatore professionista"
possa scrivere a BS (nonostante sia molto disponibile, e compaia ogni
tanto su c.l.c++) e chiedergli: ma 'sto bool, l'hai messo nel
linguaggio o no, dopo il '91?  e, visto che ci sei, con quanti e quali
parametri devo chiamare un ostream_iterator?


Maurizio Loreti  wrote in message
Forse non mi sono spiegato bene. Per "professionista" intendevo che per
lavoro sono obbligato ad utilizzare quelle versioni di compilatori e,
essendo nati molti anni fa, per "standard" si rifacevano ai libri del suo
inventore BS.
Comunque sono d'accordo con te a riguardo che la legge e' quella ANSI e ti
ringrazio per le delucidazioni.
Stefano C.

cosi' tanti anni di ritardo.
ISO, non ANSI.
--
Andrea Laforgia (ICQ 87230455)
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."

> ISO, non ANSI.
ISO sono le leggi, ANSI sono i signori che hanno scritto le leggi. O no!.
ciao
Stefano C.

ringrazio per le delucidazioni.
La legge e' quella ISO, non ANSI !


ISO sono le leggi, ANSI sono i signori che hanno scritto le leggi. O no!.
Si parla di standard ISO, non di standard ANSI.


 Stroustrup, suo inventore, molti anni addietro.
Direi invece che i programmatori piů accorti non hanno considerato il
C++ uno strumento maturo fino all'uscita dello standard ufficiale.
EMG

 Comunque sono d'accordo con te a riguardo che la legge e' quella ANSI
Comunque è l'ISO, non l'ANSI.
EMG

 ISO sono le leggi, ANSI sono i signori che hanno scritto le leggi. O no!.
No, ANSI è il comitato standardizzante americano, ISO quello
internazionale.
EMG


Beh, va già meglio :-)
Domenico Barra

 ISO sono le leggi, ANSI sono i signori che hanno scritto le leggi. O no!.
In effetti ISO e' l'ente di standardizzazione internazionale, mentre
ANSI e' un ente di standardizzazione americano in ambito informatico. Il
comitato di standardizzazione e' effettivamente un'emanazione dell'ANSI,
il cui risultato e' sottoposto all'ISO per la votazione e la ratifica.
Ciao,
Nicola

 C++ uno strumento maturo fino all'uscita dello standard ufficiale.
E forse nemmeno allora, visto che non esiste ancora un compilatore
completamente conforme (tralasciando poi ambiguita' e correzioni) :-)
Ciao,
Nicola