mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: (OT) cygwin download

Ho provato più volte a scaricare il Cygwin dal sito
www.programmazione.it
 ma ottengo sempre lo stesso errore "Corrupted
cabinet file".
Sapete dirmi se è un mio problema oppure anche voi avete trovato le
stesse difficoltà?
Grazie

 
Potresti provare a scaricare da un altro sito (ad es. il sito ufficiale
cygnus)
Oppure usando un programma specifico che magari ti permetta di riprendere
il download in caso di disconnessione (ad es. getright)
Comunque il problema penso dipenda dalla dimensione eccessiva del file.
Newsgroup: it.comp.lang.c
Titolo: cc non compila con opzione "-ll"

Ciao,
non riesco a compilare un file C generato da Lex  perchè
non trova la libreria "-ll"
la riga di comando per la compilazione è
cc lex.yy.c -ll
l'opzione -ll serve per importare la libreria di lex.
Dato che cc e lex sono installati , probabilmente devo aggiungere un path ,
sapete come ?
grazie
cj

 non trova la libreria "-ll"
nel caso tu usi GNU flex (al 99% se lavori in ambiente linux), devi usare 
-lfl.
altrimenti prova a cercare libl.a e se lo trovi fai un symlink in /usr/lib
Ciao,
[Resnick]
-- 
No tv and no beer make Homer go crazy
Federico Miorelli < resnick at miorelli dot net >
http://www.miorelli.net/resnick

Newsgroup: it.comp.lang.c
Titolo: Clock()

E' possibile ottenere un valore in millisecondi?
Se io eseguo
j = clock();
printf("%d", j);
j = clock();
printf("%d", j);
mi scrive 0 e 0.
Come posso fare per ottenere tempi più brevi? Esiste una funzione che
calcoli gli effettivi cicli di clock del processore? Ho cercato sul manuale
ma mi dice solo che clock() restituisce il numero dei secondi.
Grazie
Marco

 Come posso fare per ottenere tempi più brevi? Esiste una funzione che
gettimeofday non puo' tornar utile? Restituisce anche i nanosecondi
-- 
No matter. Try again. Fail again. Fail better.

 > Come posso fare per ottenere tempi piů brevi? Esiste una funzione che


 si avvicino` a me, e solennemente disse: 

DESCRIPTION
       The clock() function returns an approximation of processor time used by
       the program.
RETURN VALUE
	The  value  returned  is the CPU time used so far as a clock_t; to
	get the number of seconds used, divide by
	CLOCKS_PER_SEC.  If the processor time used is not
	available or its value cannot be represented,  the  func-
	tion returns the value (clock_t)-1.
Adieu,
-- 
Lestat de Lioncourt                               |          Ciro Mattia Gonano
  JabberID: 
les...@jabber.students.cs.unibo.it
    |    Undergraduate Student in
  ICQ#: 52631406                                  |         Computer Science at
  URL: 
http://www.CS.UniBO.It/~gonano
             |       University of Bologna
            <powered by Linux Slackware 8.1 on Kernel 2.4.18-xfs>
Newsgroup: it.comp.lang.c
Titolo: allegro è superlativo

ho scaricato la libreria grafica allegro v.3.9 dal sito di sunsite. Devo dre
che è assolutamente fantastica, ho visto gli esempi e mi hanno
entusiasmato...
...il C è fantastico...
nn vedo l'ora di <<espertizzarmi>> (dal verbo espertizzare :-P )

Ciao Edi,
credevo che Allegro fosse in C++ nn č cosě? Che vantaggi ci sono a usare
Allegro rispetto a DirectX o OpenGL ?
Ciao,
Lo

 Allegro rispetto a DirectX o OpenGL ?
Allegro e' molto piu' portabile. Lo sarebbe anche OpenGL, ma non tutti i
target lo supportano via hardware.
-- 
"Windows 95 is a 32-bit shell for a 16-bit extension to an 8-bit
operating system designed for a 4-bit microprocessor by a 2-bit
company that can't stand one bit of competition."
La mia (penosa, per ora) homepage: 
http://digilander.iol.it/burton666


--
Webmaster della Pagina NON Ufficiale del SonyCRX100
SonyCRX120,  SonyCRX140E/S, SonyCRX100EX, HP8100
HP8200, HP9100 & HP9200
http://www.freeweb.org/computer/SonyCRX100/

Newsgroup: it.comp.lang.c
Titolo: Libreria Grafica

Sto' cercando una libreria grafica per manipolare immagini in formato TGA.
Devo riuscire a prendere vari pezzi da vari imaggini ed incollarlo su
un'unica immagine, ecc, ecc.
Purtroppo in rete dopo un'estenuante ricerca ho trovato gran poco, tranne
una OpenIL che pero' si basa sulle OpenGL che io non so ed ho tempo di
imparare!!!! Uso VisualC neturalmente sotto windozzz ed allo stato attuale
dei fatti sono moolto disperato.
P.S. Io le immagini non le devo neanche visualizzare...devo solo
elaborarle!!!

Sto' cercando una libreria grafica per manipolare immagini in formato TGA.
Sei OT... comunque secondo me per le TGA non vale la pena cercare
una libreria... il formato e' veramente molto molto semplice.
Cerca in 
www.wotsit.org
 una descrizione.
Se e' stato scelto il formato TGA probabilmente si tratta
addirittura di immagini non compresse. Una funzione che ne
legga il contenuto diventa veramente di poche righe C/C++
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff
Newsgroup: it.comp.lang.c
Titolo: 1-Problemi in C con Linux (Ruben)

Intanto ringrazio anticipatamente chiunque riesca a risolvere il/i mio/miei
problema/i.
1)Quando in Linux con emacs compilo un programma in linguaggio C e tutto va
a meraviglia, creo il mio file eseguibile a.out. E fin qua tutto ok. Quando
lo richiamo in emacs, invece di visualizzarne l'output appare una sequenza
confusa di caratteri che non c'entrano un beneamato. E' normale o c'è
qualcosa che non va?
2)Sempre in emacs ho provato a fare un programmino (in C) che utilizza la
funzione <conio.h> (una funzione che reputo indispensabile), ma nella
directory usr/include di Linux non è presente. Ciò vuol dire che emacs non
presenta tutte le librerie di C? Magari sulla rete c'è qualche aggiornamento
o roba simile?
3)Vorrei tanto iniziare a programmare un driver della mia scheda audio (ESS
Solo-1 PCI AudioDrive (WDM)) dato che non esiste il driver sotto linux.
Qualche esperto di buon cuore mi potrebbe dare qualche consiglio, tipo
qualche documento reperibile in rete o anche piccoli consigli per iniziare?
(nella programmazione dei driver sono ignorante in canna!)
Grazie ancora,
Ruben
--------------------------------
Inviato via 
http://usenet.libero.it

 in canna!)
sono un autodidatta della meccanica. ho comperato un bel set di chiavi 
inglesi. dove posso trovare le istruzioni per costruirmi una porsche 
carrera, che mi piace tanto? dove posso trovare un manuale per iniziare?
-- 
#include <stdio.h>/* (C) BW2K+2 This code is released under GPL 2+ */
int main(void){char c[]={98,108,97,107,119,111,108,102,64,116,105,
115,99,97,108,105,46,105,116,32,119,101,98,46,116,105,115,99,97,108,
105,46,105,116,47,98,108,97,107,119,111,108,102,0};printf("%s\n",c);}

 
Matic

 3 - emacs non e' un compilatore, ma un editor di testi,
Solo un editor di testi? Quasi, quasi mi offendo :-)
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 carrera, che mi piace tanto? dove posso trovare un manuale per iniziare?
In effetti prima ti consiglio di imparare bene il C (magari iniziando a 
comprarti un Kernigham&Ritchie). Poi passerai a programare i driver per 
linux.
 
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

 linux.
Lui dice di essere ignorante nella programmazione dei driver, non nella
programmazione C :)
Ciao !
-- 
Slackware 8.1 - 2.4.19 - GCC version 2.95.3

 C:\>iao Angelo
infatti! e' un sistema operativo ! :)

- Carlocci :

Uhm... dovrei quindi cambiare la signature in
GNU Emacs 21.2.2 (i386-slackware-linux-gnu, X toolkit, Xaw3d scroll bars)
:=)
Nicholas


 :=)
Non necessariamente in quella, con Emacs (ovviamente) hai una scelta
moooooolto ampia.
http://www.laughnet.net/archive/compute/emacs.htm
Per chi avesse emacs, gli acronimi fanno parte della documentazione,
e giustamente "Emacs Manuals Are Cryptic and Surreal" :-)

Newsgroup: it.comp.lang.c
Titolo: CGI con metodo "POST"

Sono riuscito a realizzare il passaggio di argomenti con il metodo get e la
query_string
ma con il metodo "POST"  ancora no, qualcuno puņ farmi un esempio per
favore?
come faccio a leggere dallo stdin le variabili? ho provato con scanf ma
niente da fare...
Grazie


I'm not prejudiced, I hate everyone equally.

Newsgroup: it.comp.lang.c
Titolo: Dichiarazione FILE

Salve a tutti,
se in un'applicazione devo aprire contemporaneamente un numero di file
non noto a priori, come devo scrivere la dichiarazione delle variabili
FILE ? Posso scrivere una cosa del tipo FILE *in[100] per poter aprire
100 file ?
Grazie in anticipo

100 file ?
In teoria e' corretto, ma in pratica e' poco portabile, in quanto non
so quanti sistemi riescano a mantenere aperti 100 file
contemporaneamente.
--
Andrea Laforgia
andrea_...@bigfoot.com

Newsgroup: it.comp.lang.c
Titolo: Restricting Pointer

Nel C99 si parla di "Restricting Pointer" ma cosa sono??
Sono forse dei puntatori che puntano sempre e solo a un oggetto ma 
possono modificarlo???
Ho beccato?? Se no dove trovo esempi???
Tnk
-- 
Kleidemos
Un computer a un altro quando si incontrano:
"Ciao, come ti boota oggi???"

 Ho beccato??
Direi di no.
        [#7] An object that is accessed through a restrict-qualified
        pointer  has  a special association with that pointer.  This
        association, defined in 6.7.3.1  below,  requires  that  all
        accesses  to  that  object  use, directly or indirectly, the
        value of that particular pointer.106)  The intended  use  of
        the  restrict qualifier (like the register storage class) is
        to promote optimization, and deleting all instances  of  the
        qualifier  from  a  conforming  program  does not change its
        meaning (i.e., observable behavior).
Cio` sta a significare che l'oggetto puntato *non* e` accessibile 
tramite altri puntatori. Questo permette al compilatore di ottimizzare 
maggiormente il codice, senza preoccuparsi di problemi di aliasing 
(esempio: strcpy di una stringa su se stessa).
 > Se no dove trovo esempi???
C99 aggiunge il qualificatore restrict ai parametri di molte funzioni 
C89. Trovi quindi qualcosa nello standard (e nelle bozze pubbliche).
Per il resto, io non mi porrei il problema di farne uso. Infatti questa 
caratteristica non e` compatibile con C89, percio` eviterei di 
sfruttarla fino a quando non sara` disponibile un buon numero di 
compilatori conformi a C99 (o almeno gcc, il quale da questo punto di 
vista e` fermo da diversi anni - mancano ancora alcune features).

 tramite altri puntatori.
Mi correggo: non e` accessibile tramite altri puntatori restrict.
Newsgroup: it.comp.lang.c
Titolo: Software embedded

Sapreste consigliarmi dei tutorial online e/o
dei buoni libri che trattino lo sviluppo
software in C per sistemi embedded ?
Grazie
Riccardo



Prova sul mio sito 
utenti.tripod.it/darth_fener
entra nei bookmark e cerca "embedded" nella pagina
dovrebbe essere un portale volto a tal senso.

 Riccardo
ciao
 Io conosco 2 libri, i riferimenti li trovi su Amazon.com
 pero' li puoi ordinare alla libreria Hoepli di Milano:
1. "An embedded software primer" e' il titolo, autore non lo ricordo
2. "uc/OS2" di Jean Labrosse, e' un RTOS freeware che sta diventando
     il Linux per i 16bit
ciao
Enrico

Newsgroup: it.comp.lang.c
Titolo: dico un'eresia ?

Premetto io di C non so nulla...
Se mi metto ad usare un ambiente di sviluppo tipo Visual C++, il codice è
compatibile anch X borland e su S.O. come linux o Unix ?
Ciao Simone

 compatibile anch X borland e su S.O. come linux o Unix ?
Il codice e' codice, puoi usare qualunque sistema per interpretarlo e
qualunque compilatore... assicurati solo che il codice che scrivi non usi
delle librerie specifiche per un dato sistema operativo, oppure header files
dislocati in altre posizioni rispetto a quella che magari hai specificato
nel programma, per esempio: uso <stdio.h> mentre nella mia cartella linux e'
sotto headers/stdio.h allora ti basta cambiare in codice il path del file



se non usi le API di windows e non tocchi le mfc dovrebbe essere
compatibile, io scrivo i programmi col vc++, modifico gli header e poi
me li trasporto su unix
ciao
cod

 wrote:

Solo se ti attieni strettamente allo standard, il che vuol dire che
non ha alcuna importanza quale sia il compilatore specifico che
utilizzi per scrivere i programmi.
Questa e' una caratteristica che vale in pochissimi casi.
--
Walkie...@Libero.It (ICQ# 8143647)

Newsgroup: it.comp.lang.c
Titolo: un aiutino!!

Ragazzi devo risolvere un problemino e chiedo aiuto a Voi:
Dato un file contenente un testo,mettere a punto un programma in linguaggio
C che produce un nuovo file nel quale sono indicate tutte le coppie di
vocali consecutive presenti ed il numero di volte in cui queste si
presentano.Il programma deve inoltre individuare anche la sequenza piu'
lunga di vocali consecutive presenti nel testo. Infine stampare una tabella
con tutte le indicazioni richieste.
Accetto aiuti di tutti i tipi anche magari solo l'algortmo certo un po' di
codice mi aiuterebbe di piu'!!!
Grazie in anticipo.
Piero

Secondo me dovresti usare delle liste dinamiche (vector delle STL andrebbe
bene) e sortarle in base alle esigenze.
Dome

 ha scritto nel messaggio
news:6Ehx8.1601$W9.2...@twister2.libero.it...


 Dome
Beh, i vector andrebbero bene, ma visto che siamo in iclc...;-)
Ciao,
Cecco
Newsgroup: it.comp.lang.c
Titolo: Aiuto C

Salve a tutti,sono un principiante di C, qualcuno potrebbe essere cosi'
gentile da mandarmi qualche riga di codice per generare casualmente numeri
compresi in un intervallo?
Grazie anticipatamente a chi mi risponderà
--
 Simone viganò
Per contattarmi --> 
simone...@mail.omnitel.it
                         --> 
seldo...@tiscalinet.it

 compresi in un intervallo?
in generale si usa ma funzione rand associata a randomizer.
mi sto riferendo al turboc++.
appena scovo i vecchi programmi fatti all'univ. ti mando un
esempio pratico.
cmq cerca queste funzioni sulla guida in linea.
ciao
Maurizio

perdonato ? ;-)

Newsgroup: it.comp.lang.c
Titolo: Loop array

Salve a tutti . Scusate ma cosa trovate di strano in queste righe di
codice ?
Invece di riempire ogni elemento dell'array con il quadrato di ogni
valore che assume i ( incrementando ) mi stampa solo una riga con
sequenza di numeri strani : 2293672
Ecco il codice :
...........................................................................................................
#include<stdio.h>
int main (void)
{
	int quadrato[11];
	int i;
	for (i=0; i<11; ++i)
	quadrato[i]= i*i;
	printf("%d\n",quadrato[i]);
	return(0);
}
...........................................................................................................
Grazie in anticipo per l'aiuto.

 ...........................................................................................................
Così funziona; senza le graffe l'array viene riempito correttamente ma 
quando vai a fare il printf hai che i=11 e quindi sbordi dall'array.
Ciao
  Andrea

 sequenza di numeri strani : 2293672
ha ragione: gli dici di stampare il contenuto della 
12.ma
 posizione (i 
== 11) dell'array "quadrato"
Ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com

Newsgroup: it.comp.lang.c
Titolo: [OT] ferie !!!

Da domani saro' in ferie !
Ci rivediamo a Settembre...
Buone vacanze a tutti ;) 
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
"I know every element of C" - Ioannis Vranos

 Buone vacanze a tutti ;) 
Buone vacanze anche a te.
--
 Ciao, Bianco.
 Reply to 
luca....@tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: Contare gli elementi di un albero.

Ciao a tutto il ng,
Qualcuno sa suggerirmi un algoritmo per contare gli elementi di un albero binario non bilanciato?

 Qualcuno sa suggerirmi un algoritmo per contare gli elementi di un albero binario non bilanciato?
qualcosa come 
int conta (Tree nodo) 
	 {
		return (nodo != NULL) ? 1+conta(nodo->left)+conta(nodo->right) : 0;
	 } 
 
?
 

 E' ottima. tnx

 albero binario non bilanciato?
Puoi fare  un attraversamento di qualunque  tipo ({pre,in,post}order) ed
incrementare una variabile ad ogni nodo visitato.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"New processes are created by other processes, just like new
 humans. New humans are created by other humans, of course,
 not by processes." -- Unix System Administration Handbook

e' vero che puoi navigare l'albero in qualunque ordine,
e' anche vero pero' che questo algoritmo
ha un certo costo, ogni volta che vuoi sapere
quanti elementi ci sono.
suggerirei, se il codice e' scritto in modo ordinato
(l'aggiunta di elementi e' circoscritta ad una funzione,
la rimozione pure)
di tenere un contatore intero
e incrementarlo ogni volta che crei un nodo.
E decrementarlo ogni volta che lo distruggi.

Newsgroup: it.comp.lang.c
Titolo: Rappresentazioni grafiche

Qualcuno di voi sa darmi suggerimenti per rappresentare graficamente
sugli assi cartesiani una coppia di valori utilizzando il C.
Non so se ci sono delle librerie freeware che permettono di tracciare
sugli assi dei punti, oppure qualcuno è a conoscenza se è possibile
farlo con librerie standard del Visual C Microsoft, o altri
compliatori.
Grazie....
______________________________________________________________________
DO YOU YAHOO!?
Il tuo indirizzo gratis e per sempre @
yahoo.it
 su 
http://mail.yahoo.it
--
Posted from 
web608.mail.yahoo.com
 [128.11.68.172]
via Mailgate.ORG Server - 
http://www.mailgate.org

 Grazie....
consiglierei il package plotutils della free software foundation
(anche nota come gnu).  e' il successore del vecchio gnuplot.
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it
Newsgroup: it.comp.lang.c
Titolo: domanda

Vorrei lanciare all'interno di un  programma c un altro programma, come
posso fare?


God, I ask for patience -- and I want it right now!

 
system("altro_programma");
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: Help!

Che cosa serve void.
Se mi potete aiutare.
Vi ringrazio
Fabio

Se mi potete aiutare.
void = vuoto (mancante)
E' un tipo di dato che si usa quando non si conosce o non si vuole
specificare alcun tipo di dato.
Ad esempio per il valore di ritorno di una funzione, quando essa non
restituisca alcun valore ( tranne per main() ) , o per dichiarare un
oggetto che non ha alcun tipo.
 


ICQ #34602650

 mailto:
gar...@usa.net
 <
- >ICQ UIN# 23780140 <-

 A cosa possono servire i puntatori di tipo VOID ?
Ne hai un esempio nella funzione della libreria standard malloc().
Questa restituisce un puntatore alla zona di memoria allocata ma non ha
modo di sapere di che tipo dovrà essere questo puntatore e quindi ne
restituisce uno generico, appunto void *, che poi sarà convertito
implicitamente nel tipo desiderato. Es.:
int *p = malloc( 10 * sizeof( int ) );
EMG

int *p = malloc( 10 * sizeof( int ) );
		^^^^^^^^^^^^^^^^
Grazie della spegazione,ma non mi e' molto chiara...cosa vuol dire esattamente li' ?


 Grazie della spegazione,ma non mi e' molto chiara...cosa vuol dire esattamente li' ?
Vuol dire che sto allocando 10 elementi con dimensione pari a quella di
un int.
EMG

Newsgroup: it.comp.lang.c
Titolo: [OT] PCBrain BugFix

Ho messo online la versione bugfixata di PCBrain
Fiuuu! Finalmente sono riuscito a mettere a posto quel Bug di PCBrain, e ho
inserito in corner un paio di bugfix e funzioni aggiuntivi. Trovate tutto a
http://digilander.iol.it/pcbrain
 (ho preferito togliere completamente la
versione vecchia perchč un bug la rendeva inutilizzabile! Se avevate
scaricato PCBrain V.1.2, effettuate nuovamente il download!),
Dome
PS: Parto domani e torno a Settembre! Ciao a tutti!!!
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PC Brain Official Web Site
http://digilander.iol.it/pcbrain
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Ho messo online la versione bugfixata di PCBrain
Posta, per cortesia, su un gruppo specifico (es.
it.comp.programmare.win32).
--
Naquern Yansbetevn
naquern.y...@africamail.com
Newsgroup: it.comp.lang.c
Titolo: puntatore a funzione

Ho dei dubbi su quanto riguarda la dichiarazione di un puntatore a funzione
che restituisce 
un puntatore a funzione,qualcuno sa darmi un esempio di tale dichiarazione? 
int (*FP) ( float ) = puntatore a funzione che accetta in input un float e
ritorna un int. 
Se invece dell'int avesse dovuto tornare un puntatore a (funzione che torna
un int)? 
Grazie a tutti Ivan. 
--
Posted from 
crux.tiscalinet.it
 [195.130.224.59]
via Mailgate.ORG Server - 
http://www.mailgate.org

 un puntatore a funzione,qualcuno sa darmi un esempio di tale dichiarazione?
Dalle FAQ tradotte:
1.21:   Come posso dichiarare un array di N puntatori a funzioni che
        restituiscono puntatori a funzioni che restituiscono a loro
volta
        puntatori a carattere?
R:      A questa domanda pu_ essere risposto in almeno tre modi:
        1.  char *(*(*a[N])())();
        2.  Costruendo la dichiarazione in modo incrementale,
utilizzando dei
            typedef:
                typedef char *pc;       /* puntatore a carattere */
                typedef pc fpc();       /* funzione che restituisce un
puntatore
                                           a carattere
                typedef fpc *pfpc;      /* puntatore a quanto sopra */
                typedef pfpc fpfpc();   /* funzione che restituisce...
*/
                typedef fpfpc *pfpfpc;  /* puntatore a... */
                pfpfpc a[N];            /* array di... */
        3.  Usando il programma cdecl che traduce dichiarazioni
dall'inglese al
            C e viceversa:
                cdecl> declare a as array of pointer to function
returning
                        pointer to function returning pointer to char
                char *(*(*a[])())()
            cdecl pu_ anche chiarire dichiarazioni complesse, aiutare
con i cast
            ed indicare in quali set di parentesi i parametri devono
essere
            messi (per funzioni complicate come quella appena vista).
Vedi anche
            18.1.
        Qualsiasi buon libro sul C dovrebbe spiegare come queste
dichiarazioni
        complicate vadano lette "dall'interno verso l'esterno" per
essere
        comprese ("la dichiarazione riflette l'uso").
        Le dichiarazioni di puntatore a funzione di cui sopra non
includono la
        specifica dei tipi dei parametri. Quando i parametri sono di
tipi
        complicati le dichiarazioni possono essere veramente difficili
da capire
        (ma le versioni pi• recenti di cdecl possono aiutare anche in
questi
        casi).
        Riferimenti: K&R2 Sez. 5.12 p. 122; ISO Sez. 6.5ff (esp.
        Sez. 6.5.4); H&S Sez. 4.5 pp. 85-92, Sez. 5.10.1 pp. 149-50.
EMG
Newsgroup: it.comp.lang.c
Titolo: Domanda da uno GNorante con la "GN" maiuscola!

Quale è la differenza fra C e C++ ?
Grazie
ant...@sorrento.argosid.it

Quale č la differenza fra C e C++ ?
C++ e` sostanzialmente un _vasto_ sovrainsieme del C; e`
un linguaggio "multi-paradigma", che permette cioe` di fare
programmi secondo impostazioni molto diverse -- le tre
principali essendo quella tradizionale e procedurale (l'unica
che il C supporta appieno), quella ad oggetti, e quella detta
"generica"; le varie impostazioni possono inoltre essere
liberamente mescolate fra loro.  I potenti meccanismi di OO
(classi) e generici (template) permettono inoltre di offrire
supporto molto buono per paradigmi ancora diversi, come
relazionale, funzionale, ecc, attraverso "framework" di
classi (non si avra` mai un supporto cosi` completo come
in un linguaggio specializzato per un dato paradigma, ma
i framework di classi, se ben scritti, si spingono molto piu`
avanti di una semplice libreria di funzioni, "alla C").
C++ comprende inoltre una discreta libreria standard, che
offre vari contenitori e funzionalita` algoritmiche, e molti
piccoli miglioramenti rispetto al C; vari compilatori C non
rispettano oggi pienamente lo standard del linguaggio,
bensi` vi aggiungono come estensioni non-standard alcuni
dei piccoli miglioramenti in questione, che in C++ fanno
invece parte dello standard ufficiale approvato da ISO.
Alex

Newsgroup: it.comp.lang.c
Titolo: Aiuto, Elevere potenza

Ciao, sto cercando di elevare a potenza un numero, ma come si fŕ ? in basic
era: x^y cioč X elevato a Y, ma in C ????
Grazie e Ciao
Max

 era: x^y cioè X elevato a Y, ma in C ????
usa la funzione
pow()
ciao
M.
--
Marco Coppo
University Of Sheffield
FAQ di it.comp.lang.c:
http://www.programmazione.it/linguaggi/c/itcomplangc.htm


#include<math.h>
......
..pow(base,esponente);
....

era: x^y cioè X elevato a Y, ma in C ????
che tipo vuoi ottenere? che tipo sono x e y?
int x,y,r;
for(r=1;y;y--) r*=x;
return(r);
-- 
"Qualcuno mi spieghi perche' 144 e' l'unico
quadrato perfetto della serie di Fibonacci"

 era: x^y cioè X elevato a Y, ma in C ????
Prova con pow().
EMG

..pow(base,esponente);
questo e' quello che in effetti dovrebbe essere (e che e' nel computer
di casa mia). Ma purtroppo all'universita' vedo che il pow mi
restituisce sempre 1, usando dati di questo tipo:
int a=2, b=3, c=0;
c = pow(a,b);
Aranar
e-mail: 
ro...@geocities.com
http://www.nettaxi.com/citizens/Aranar/
   (above all VgaPlanets)
http://www.tempolibero.com/user/aranar
    (sopratutto VgaPlanets)
Newsgroup: it.comp.lang.c
Titolo: Esercizio D&D

Salve,
ho un problema con un esercizio del Deitel&Deitel, il 6.21.
Ho un vettore di 10 elementi inizialmente settati a 0. In base ad una scelta
iniziale che si ripeterà per 10 volte (scelta 1 o scelta 2), devo portare a
1 il valore degli elementi tra 1 e 5 se la scelta è 1, mentre incremento a 1
gli elementi tra 6 e 10 se la scelta è 2. Io avevo pensato ad un for, solo
che l'incremento deve essere fatto solo una volta, poi mi si deve
ripresentare il menù di scelta ed in base all'input, incrementare l'elemento
successivo del vettore, quindi non mi sembra che con un
for (i = 0; i <= 4; i++)
vett[i]++;
ci si possa fare molto...
Come faccio a dirgli di incrementare di 1 il primo elemento del vettore,
ritornare al menù di scelta ed, eventualmente, incrementare di 1 l'elemento
successivo al precedente?
Grazie a tutti
Daniele

 
Inviato da 
www.mynewsgate.net

 E la sesta volta?? Si ritorna su vett[0] ?
Alla fine mi deve stampare un msg che mi avverte che gli elementi sono tutti
pieni.
Poi c'era anche una cosa un pò più "fine". Se riempio a 1 prima gli elementi
0--4 che 5--9 (o viceversa), e ridigito per la sesta volta l'opzione 1,
allora mi deve chiedere se si vuole riempire un elemento della scelta 2
(cioè 5--9), ammesso ce ne sia uno libero.
In pratica il vettore da dieci elementi rappresenta 10 posti su un aereo, la
scelta 1 indica la prenotazione di un posto per fumatori (da 0 a 4) e la
scelta 2 indica la scelta per un posto non fumatori (da 5 a 9). Se i posti
0--4 sono pieni, allora mi deve proporre di scegliere un posto tra 5 e 9.
Ciao e grazie
Daniele

 
Inviato da 
www.mynewsgate.net

 richiesto un valore e tu agisci di conseguenza...
Ok, innanzitutto grazie per l'aiuto. Scrivendo normalmente il codice come da
te postato, funziona (non avevo dubbi...). Ho modificato il case1 dello
switch in modo da farmi comparire un'opzione di scelta nel caso in cui i
posti FUMATORI fossero occupati. Solo che durante l'esecuzione del prog,
anche usando un scelta2 = getchar(); al posto di scanf ("%c", &scelta2);  il
sistema non attende il mio input, ma mi mostra solo il printf e subito dopo
il menů di scelta iniziale tra FUMATORI e NON FUMATORI. Come posso fare per
fermarlo ed aspettare una mia scelta? Ti posto il codice del case1 (tanto il
case2 sostanzialmente č uguale):
  case 1:
      if (cont2 == 5) {
      /****/printf ("Posti FUMATORI non disponibili. Vuoi un posto NON
FUMATORI? (s-n): ");
      /****/scanf ("%c", &scelta2);
         if (scelta2 == 's')
         ++posti[(cont3++) + 5];
         if (scelta2 == 'n')
         printf ("Peggio per te!");
         break;  }
   ++posti[cont2++];
   break;
Ciao e grazie ancora
Daniele

> alla seconda scanf (quella in cui prendi il carattere) scrivi nella stringa 
di formato "%1s" anziche` "%c" in questo modo leggerai il carattere successivo 
non spazio;
prova e vedrai....
Ale
Inviato da 
www.mynewsgate.net

Grazie infinite per l'aiuto, ora il prog funziona!!! Qualche altro es sui
vettori e poi mi aspetta il cap 7 sui puntatori, per cui tra un pò ritornerò
sicuramente con altre 1000 domande.
Grazie ancora!
Daniele
Newsgroup: it.comp.lang.c
Titolo: Distribuire i programmi scritti in C

Salve a tutti, sto facendo alcune prove con CodeBlocks e Labwindow di 
National Instruments.
I programmini di esempio che scrivo, una volta fatto il "build" diventano 
degli eseguibili: mioprogramma.exe
Se volessi eseguirli su un altro computer, basta solo copiare il file e 
lanciarlo?
(uso solo la libreria stdio facendo #include <stdio.h>)
Se fosse così, significa che l'eseguibile incorpora al suo interno TUTTA la 
stdio o solo la parte che usa?
Grazie
P.S. sto provando anche LabWindow, qualcuno sa dirmi se in questo caso devo 
fare dei pacchetti di installazione invece? 

 stdio o solo la parte che usa?
Di solito la libreria standard (solo le funzioni che usi, ovviamente) 
viene inclusa nell'eseguibile. Quindi il tuo programma è del tutto 
autosufficiente, e basta copiarne l'eseguibile.
Per librerie molto grosse si preferisce invece caricare le librerie 
dinamicamente (DLL), proprio per risparmiare spazio nell'eseguibile e 
nella RAM. In questi casi il tuo eseguibile necessita anche della DLL, 
che può essere distribuita insieme all'eseguibile oppure scaricata da 
internet.
E.

 stdio o solo la parte che usa?
...
Dal punto di vista pratico la risposta di  ?manu*  e'  ok.
Attenzione pero' a non incorrere in un errore concettuale molto frequente.
stdio.h NON contiene nessuna libreria.  La sua inclusione rende 
disponibili al compilatore solo costanti e prototipi delle funzioni di 
libreria.
L'  "aggancio" della libreria (intesa come codice che implementa 
p.es
. 
printf etc.) alle istruzioni macchina generate a partire dal tuo codice 
C lo fa lo stadio di linking, in genere eseguito dal compilatore o dall' 
  IDE  che stai utilizzando,  se si tratta di librerie statiche, o dal 
loader al momento dell'  esecuzione se lavori con librerie dinamiche.
Giorgio

stdio o solo la parte che usa?
No, c'è una fase di scrematura operata dal compilatore, nella
produzione del codice oggetto: vengono tradotti solo i riferimenti a
funzioni della libreria standard effettivamente utilizzate. Quindi il
linker attingerà dalle liberie solo il codice di quelle funzioni, che
confluirà nell'eseguibile finale.

 autosufficiente, e basta copiarne l'eseguibile.
Non sarei così secco con sto "di solito". A partire da casi estremi (in
OS X la libc è *sempre* linkata dinamicamente, a meno di non fare cose
piuttosto esoteriche), in generale non vedrei infrequente il linking
dinamico anche su Windows o altre piattaforme. 
Anzi. 
-- 
-riko
Newsgroup: it.comp.lang.c
Titolo: Problemi con i record

Salve a tutti,
sono alle prime armi con il C e sto cercando di fare qualche passetto
avanti.
Ho il seguente problema:
Devo creare un archivio di record su file. Ogni record contiene, tra gli
altri campi, un campo data che č una stringa del tipo
MMMGGAAAA, dove MMM sono le prime tre lettere del mese, GG e AAAA sono
valori numerici a 2 e 4 cifre rispettivamente. Questo archivio deve
essere trascritto in memoria utilizzando un albero binario di ricerca.
Fin qui tutto bene: il problema sorge al momento dell'ordinamento dei
record che deve essere fatto in base alla data. Infatti la procedura
di riordino deve prima confrontare l'anno e in caso di uguaglianza
passare al mese ed eventualmente al giorno...non so da che parte
cominciare...
Chiedo aiuto a chi ne sa + di me.
Un ringraziamento anticipato

 Un ringraziamento anticipato
Ti dò un aiuto per cominciare...
Per semplicità crea una funzione che trasforma la tua stringa in un record
compesto da tre interi (giorno, mese, anno).
Poi fai un altra funzione che dati due record del tipo sopra restituisce
+1,0,-1 a seconda che il primo sia minore,uguale,maggiore del secondo.
A questo punto con le funzioni che ti sei fatto puoi usare i normali
algoritmi di ordinamento.
--
______________________________
Per rispondere Brain(a)
infinito.it
La mia homepage 
www.infinito.it/utenti/brain
....work in progress....
bye Brain

 --
Grazie x l'attenzione

cominciare...
Io userei qualcosa del tipo:
char *mnames[]={"JAN","FEB","MAR","APR","MAY","JUN",
                "JUL","AUG","SEP","OCT","NOV","DEC"};
int date_compare(char *date1,char *date2)
{
  int test,m1,m2;
  /* Confronta l'anno */
  /* NOTA: date+5 punta al primo carattere dell'anno */
  test=strncmp(date1+5,date2+5,4);
  if (test!=0) return test;
  /* L'anno e' uguale, confronta il mese */
  for (m1=0; m1<12 && strncmp(date1,mnames[m1],3)!=0; m1++)
    ;
  for (m2=0; m2<12 && strncmp(date2,mnames[m2],3)!=0; m2++)
    ;
  test=m1-m2;
  if (test!=0) return test;
  /* Il mese e' uguale, confronta il giorno */
  /* NOTA: date+3 punta al primo carattere del giorno */
  test=strncmp(date1+3,date2+3,2);
  return test;
}
La funzione torna un numero negativo se date1 precede date2,
positivo se date1 segue date2 e zero se le date sono uguali.
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

 Un ringraziamento anticipato
La soluzione più semplice è scrivere la data come  AAAAMMGG formattata
con 
"%04d%02d%02d" tutti in formato numerico, (dato che i mesi in ordine
cronologico NON sono in ordine alfabetico).
Questo ti consente di ordinare i dati con un solo confronto e, se vuoi
il mese
alfabetico in stampa, puoi costruire una tabellina di stringhe:
char Mesi[13][] = { "", "Gen","Feb",............."Dic" };
(la dimensione è 13 con il primo valore nullo perche gli array C partono
da
zero e ho voluto mantenere l'abituale corrispondenza '01 - Gen ...... 12
- Dic)
Spero ti sia di aiuto.
gfb
Newsgroup: it.comp.lang.c
Titolo: Problem with Linux->SUN/Solaris

Salve a tutti,
il mio problema riguarda il porting da Linux a SUN/Solaris di un
traduttore realizzato mediante flex e bison.
Sotto Linux tutto OK, quando vado a compilare sotto SUN pur essendo la
stessa versione di bison (1.25) ricevo il messaggio seguente:
Undefined                       first referenced
 symbol                             in file
yyrestart                           /var/tmp/ccMdTKo_1.o
ld: fatal: Symbol referencing errors. No output written to c2bsp
dal comando:
gcc c2bsp.tab.c -o c2bsp -lm
dove yyrestart() e' una funzione utilizzata da bison per riprendere la
compilazione dall'inizio.
Penso si debba includere manualmente qualche libreria come per -lm 
ma quale??????
Grazie per eventuali risposte,
Cordiali Saluti
Emilio Merlino.
Potete rispondere anche all'indirizzo:
mer...@univaq.it
--
Posted from 
mailhost.univaq.it
 [192.150.195.13]
via Mailgate.ORG Server - 
http://www.mailgate.org

-lfl (flex richiede libfl.a) .
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

 
Prova con -ll per linkare libl.a (lex.a) o -lfl per libfl.a (flex)

Newsgroup: it.comp.lang.c
Titolo: Help DJGPP

Non ho esperienza. Devo compilare un breve programma in C che
certamente funziona perche' e' gia' stato compilato da altri su altre
installazioni. 
Ho fatto il download dalla rete di:
djdev201.zip
gcc2721b.zip
bnu27b.zip
Seguendo le istruzioni nel readme.1st dovrebbero bastare queste cose
per compilare in C. Ho unzippato nella directory C:\DJGPP e ho
modificato l'auotexec.bat come da istruzioni. Ho avuto i seguenti
problemi:
1) Il compilatore gcc.exe partiva ma si lamentava di non riuscire a
trovare un altro .exe (non ricordo quale). Ho guardato il file
djgpp.env e ho visto che tutte le directory erano precedute da /
invece che da \. Mi sono lanciato nella modifica in tutto il file
indicato (sconsideratamente?) e ho ottenuto come risultato che la
lamentela e' cambiata. Sembra che adesso trovi il .exe mancante ma il
compilatore si ferma lamentandosi di non trovare 3 files del tipo .h
Questi files pero' esistono perche' io li vedo nella sottodir
C:\DJGPP\INCLUDE.
Qualcuno ha un'idea o un suggerimento?
Grazie a tutti e cordiali saluti.
-------------------------------
Maurizio Vianello                    
Dipartimento di Matematica         
Politecnico di Milano              
Piazza Leonardo da Vinci 32
20133 Milano, Italy   
E-mail: 
mau...@mate.polimi.it
fax: (39) 2 23994568


Problema risolto. Ho solo sbagliato nel seguire *troppo* alla lettera
le istruzioni del readme sulle modifiche da apportare al mio
autoexec.bat....
Saluti,
Maurizio
Newsgroup: it.comp.lang.c
Titolo: Permutazione in un array

Ciao a tutti...
Il mio problema è questo: avendo un array char  di 5 cifre(nel mio caso
56789) come faccio a stampare tutte le possibili 120 permutazioni? Scusate
la banalità del problema ma non so proprio come fare...

 tutte le possibili 120 permutazioni?
public class Permutazioni {
   static void swap(char[] a, int i, int j) {
      if (i == j)
         return;
      char t = a[i];
      a[i] = a[j];
      a[j] = t;
   }
   static void permutazioni(char[] a, int n) {
      if (n >= a.length) {
         stampa(++x, a);
         return;
      }
      for (int i = n; i < a.length; i++) {
         swap(a, n, i);
         permutazioni(a, n + 1);
         swap(a, n, i);
      }
   }
   static void stampa(int x, char[] a) {
      System.out.print(x + " - ");
      for (int i = 0; i < a.length; i++) {
         System.out.print(a[i]);
      }
      System.out.println();
   }
   static int x = 0;
   public static void main(String[] args) {
      char[] v = {'5', '6', '7', '8', '9'};
      permutazioni(v, 0);
   }
}
Maurizio.

Scusate, ho sbagliato linguaggio.
Maurizio.

Questo è il programma in C.
   #include <stdio.h>
   int x = 0;
   void swap(char *a, char *b) {
      char t = *a;
      if (a == b)
         return;
      *a = *b;
      *b = t;
   }
   void stampa(int x, char *a, int len) {
      int i;
      printf("%3d - ", x);
      for (i = 0; i < len; i++) {
         printf("%c", a[i]);
      }
      printf("\n");
   }
   void permutazioni(char *a, int n, int len) {
      int i;
      if (n >= len) {
         stampa(++x, a, len);
         return;
      }
      for (i = n; i < len; i++) {
         swap(a + n, a + i);
         permutazioni(a, n + 1, len);
         swap(a + n, a + i);
      }
   }
   int main(void) {
      char v[] = {'5', '6', '7', '8', '9'};
      permutazioni(v, 0, sizeof(v));
      return 0;
   }
Maurizio.
Newsgroup: it.comp.lang.c
Titolo: FAQ 3 - versione definitiva - stringa -> numero

3c - Come faccio a convertire una stringa in una variabile numerica?
Si usano le funzioni della libreria stdlib.h, precisamente:
int atoi(const char *s)             converte una stringa in un intero.
Es: intnum = atoi(stringa1);
double atof(const char *s)       converte una stringa in un float.
Es. floatnum = atof(stringa2);
long int atol(const char *s)   converte una stringa in un long
Es. longnum = atol(stringa3);
Queste funzioni sono perň piuttosto spartane, nel senso che interrompono la
lettura della stringa al primo errore incontrato senza nessuna segnalazione.
Nella stessa libreria ci sono funzioni piů sofisticate quali:
double strtod(const char * nptr, char ** endptr);
long int strtol(const char * nptr, char ** endptr,int base);
unsigned long int strtoul(const char * nptr, char ** endptr,int base);
Esse ritornano un puntatore all'elemento dell' array in cui la funzione ha
interrotto l'acquisizione dati, utile per controllarne il contenuto e capire
l'errore. Altro vantaggio di queste ultime č che possono interpretare la
stringa secondo le convenzioni del C, per esempio 10, 0xA e 012 vengono
tradotte nello stesso numero.
Per uso e dettagli vedere la documentazione del proprio compilatore.
Se invece lo scopo č acquisire dati numerici diversi contenuti nella stessa
stringa in un formato predefinito si puň utilizzare:
int sscanf(const char *s, char *format, ...)  definita in stdio.h   Esempio:
char stringa[DIM]="1.55566 3 96.82";     /* un float un intero un float
separati da spazio */
sscanf(stringa, "%f%d%f", &primofloat, &intero, &secondofloat);
--
Marco Coppo
University Of Sheffield

 unsigned long int strtoul(const char * nptr, char ** endptr,int base);
Aggiungere qualche esempio anche per queste ?
Qualcosa tipo (da completare):
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main(void)
{
        int valore;
        char **corr, *el[] = { "
2147483647
", "4294967296", NULL };
        for (corr = el; *corr; corr++) {
                errno = 0;
                valore = strtol(*corr, NULL, 0);
                printf("%s: %s\n", *corr, (errno) ? "Overflow" : "OK");
        }
        return 0;
}
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)
Newsgroup: it.comp.lang.c
Titolo: Static WIndow Background

Sto utilizzando   MC VC++ 5.0 per scrivere delle semplici DLL.
Ora debbo creare una static window per graficizzare delle situazioni di
magazzino in una form.
char szMyClass[] = "STATIC";
hwndRet =
 ( szMyClass,
     "",
      WS_BORDER | WS_THICKFRAME | WS_CHILD  ,
                        x,
                        y,
                        w,
                        h,
                        hwndParent,
                        NULL,
                        h
      Inst,
      NULL);
In questa maniera creo la mia window ma come posso fare a dargli un colore
ben definito senza doverla ridipingere ogni volta ?
Saluti e grazie da peppe.

magazzino in una form.
Su it.comp.programmare.win32 trovi la risposta.
Andrea Laforgia
---------------

Newsgroup: it.comp.lang.c
Titolo: niubbo agli agli inizi con C

buongiorno a tutti,
   e sono nuovo di questo newsgroup e di C.
Dopo aver letto in giro, acquistato il Deitel ho cominciato a giocherellare:
ho un sistema basato su winXp in cui ho installato Icc-Win32 poi dopo 
qualche esperimento riuscito ho letto qualche news e lě ho notato che 
nessuno o quasi usa Icc ma altri programmi:
la mia domanda č: "faccio bene ad usare questo sistema oppure sarebbe 
consigliato altro? (NB: sono vincolato a winXP e non posso introdurre altri 
sistemi operativi, inoltre non posso usare macchine virtuali.) se si quali e 
sopratutto cosa non 'apprendo' usando Icc-win32?
grazie a tutti coloro che mi risponderanno.
Mandi Marzio 

 grazie a tutti coloro che mi risponderanno.
Dipende anche da cosa vuoi fare: se vuoi imparare il C standard e 
scrivere applicazioni che funzionano in console va piu' che bene.
Altri compilatori che mi sento di consigliare sono: il gcc, nella sua 
incarnazione windows, il mingw. Anche questo va benone per applicazioni 
console.
Se intendi cominciare a sviluppare applicazioni con interfaccia grafica 
puo' essere un po' limitante usare questi due compilatori e potresti 
passare ad altri piu' orientati a windows. In questo caso ti consiglio 
di provare il "Turbo c++ explorer" o il "visual c++ express", entrambi 
gratuiti.
ciao
Giacomo

Newsgroup: it.comp.lang.c
Titolo: YACC (yet another compiler CONFLICT!)

Salve a tutti,
ho il seguente problema da risolvere:
devo indirizzare l'analizzatore sintattico ai file inclusi con la
direttiva:
#include "nomefile.h".
Questo deve essere fatto all'interno del file sorgente yacc (*.y) dentro
una azione relativa ad una precisa produzione.
Qualcuno mi ha parlato di una variabile di sistema propria di Yacc, ma
non l'ho ancora trovata. 
Qualcuno ne sa' qualcosa? Oppure ha qualche idea?
Vi ringrazio in anticipo per l'attenzione.
Ciao a tutti.
--
Posted from 
mailhost.univaq.it
 [192.150.195.13]
via Mailgate.ORG Server - 
http://www.mailgate.org
Newsgroup: it.comp.lang.c
Titolo: byte associati ai tipi di dato

salve,
ho scoperto che la libreria stdint.h contiene i molteplici tipi di intero.
ora ho scritto questo programma per testare quanti byte occupoino le varie
tipologia di intero
***********************************************************
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <math.h>
#include <stdint.h>
main()
{
int i;
i=sizeof(unsigned char);
printf("il tipo unsigned char occupa %d byte\n",i);
i=sizeof(char);
printf("il tipo char occupa %d byte\n",i);
i=sizeof(float);
printf("il tipo float occupa %d byte\n",i);
i=sizeof(double);
printf("il tipo double occupa %d byte\n",i);
i=sizeof(int8_t);
printf("il tipo int8_t occupa %d byte\n",i);
i=sizeof(int16_t);
printf("il tipo int16_t occupa %d byte\n",i);
i=sizeof(int32_t);
printf("il tipo int32_t occupa %d byte\n",i);
i=sizeof(int64_t);
printf("il tipo int64_t occupa %d byte\n",i);
i=sizeof(intmax_t);
printf("il tipo intmax_t occupa %d byte\n",i);
i=sizeof(uintmax_t);
printf("il tipo uintmax_t occupa %d byte\n",i);
i=sizeof(size_t);
printf("il tipo size_t occupa %d byte\n",i);
i=sizeof(short int);
printf("il tipo short int occupa %d byte\n",i);
i=i=sizeof(long int);
printf("il tipo long int occupa %d byte\n",i);
getchar();
}
***********************************************************
con la mia sorpresa ho osservato che, nel mio computer, vale:
unsigned char=1 byte
char=1 byte
int=4 byte;
long=4 byte
size_t=4 byte
uintmax_t=8 byte
intmax_t=8 byte
float=4 byte
double=8 byte
int8_t=1 byte
int16_t=2 byte
int32_t=4 byte
int64_t=8 byte
ora io chiedo:
a)ma long non dovrebbe in teoria essere più esteso di int?
b)su ogni computer al mondo unsigned char=1 byte e char=1 byte? Mi posso
fidare di ciò?

 fidare di ciò?
Si. Lo standard dice esplicitamente che sizeof(char)=1 su qualunque 
piattaforma.
In realta' lo standard C gira il discorso nell'altro verso: un byte e' 
definito come la quantita' di memoria necessaria per memorizzare un 
char! :-)
ciao
Giacomo
Newsgroup: it.comp.lang.c
Titolo: Double

Ciao a tutti.
Sto facendo un programma in C che gira su un sistema linux.
Ho un catalogo da cui leggere dei dati. Questi dati sono molto precisi, fino
a 16 cifre dopo la virgola.
Esempio 2.1054983745832395
Quindi uso le double, tuttavia se metto un printf per verificare che legga
correttamente tutti i dati, il computer mi restituisce solo valori con 6
cifre dopo la virgola, con una perdita di dati che io non posso permettermi
per quello che devo fare (devo necessaramente avere almeno 14 o piu' cifre
dopo la virgola per la precisione richiestami)
Qualcuno saprebbe dirmi come faccio a leggere tutte le cifre?
Io per leggere il file di dati (sotto forma di matrice) ho messo
etc, etc ....
fscanf(fp, "%le\n", &a[i]);
Mentre per verificare che abbia preso i valori giusti metto un
printf("%f\n", a[i])
In input anziche' %le ho provato anche con %lf oppure %lg, ma non riesco
comunque ad aumentare la precisione.
In output ho provato con altro anziche' %f (per esempio ho provato %e, %lf)
Il problema e' che non riesco a leggere correttamente i dati con tutte le
cifre dopo la virgola, oppure non riesco a printarli con tutte le cifre? Dai
risultati che ottengo nel seguito del programma penso che il problema sia
che non riesco a leggere i dati con tutte le cifre necessarie, ma non sono
sicuro ...
Qualcuno ha qualche suggerimento su come leggere tutte le cifre dopo la
virgola?
Grazie mille,
Marco
--------------------------------
Inviato via 
http://usenet.libero.it

 Esempio 2.1054983745832395
I double se non erro hanno una mantissa con 15 cifre significative, ho la 
sensazione che al di la di tutto non basterebbero. Probabilmente devi 
adottare dei long double.
Per il resto, il problema specifico è che nella printf la precisione di 
default è 6 cifre. 
long double ldvar = 2.1054983745832395;
printf("%0.16lg\n", ldvar);
-- 
---
In silenzio anche un idiota sembra intelligente. Ma non c'è problema,
l'idiota vuol sempre dire la sua.

On Wed, 16 Oct 2002 15:48:52 GMT, ma...@non.mi.spammi (Marco) wrote:
[cut]
Oltre al suggerimento di Marco, ti consiglio di controllare i limiti
della scanf() del tuo compilatore.  Spesso infatti capita che la
precisione sia limitata al double; in pratica scanf(), o meglio la
funzione che effettua la conversione ascii -> FP (di solito gcvt()),
usa un double (64bit) che successivamente viene esteso in long double
(64bit).
ciao, acc.   
a...@libero.it