mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: errore two or mode data types

Hola,
scusate per la banalità (I'm learning C just now) - vengo dal Perl -, ma
in questo frammento di codice (© HTML.it) dove sta l'errore?
---start code
#include <stdio.h>
#include <malloc.h>
/* struttura elementi della lista */
struct elemento {
  int inf;
  struct elemento *pun;
 }
/* prototipi delle funzioni */
struct elemento *crea_lista();
void visualizza_lista(struct elemento *);
int main()
{
  struct elemento *lista; // puntatore della lista
  lista = crea_lista(); // crea la lista
  visualizza_lista(lista); //stampa la lista
}
struct elemento *crea_lista()
{
  struct elemento *p, *punt;
...
}
...
---end code
Se lo compilo gcc mi dà errore:
lista.c:11: error: two or more data types in declaration of `crea_lista'
grazie mille,
ciao
salvo
-- 
#!/usr/bin/perl
print "NeXT tip => /me == (~§alvomi©~ @ddress) - (Alfa kai Omega) \n";

 
Manca un ';' dopo '}'.
Max

 Manca un ';' dopo '}'.
giŕ, vero :)
mille grazie
salvo
Newsgroup: it.comp.lang.c
Titolo: dichiarazione extern una domanda

se dichiaro una variabile extern int c; nel file definizioni.h
sara' sufficiente dichiarare #define "definizioni.h" nel .c per poter
utilizzare questa variabile?
la variabile e' globlale? cioe' e' vista come in tutti i .c dove viene
dichiarato il file "definizioni.h" ?
se dichiaro in un .c che fa parte di un progetto di + .c definizioni.h
rischio che cisiano delle dichiarazioni multiple e quindi errori?
come faccio a far si che una variabile dichiarata in un file .h sia
vista da tutti i sorgenti che fanno parte di un progetto? 
(intendo dire tutti i .c che compongono l'eseguibile generato dalla
compilazione)
enrico grazie
Come avrete notato non ho le idee molto chiare sull'argomento..

vista da tutti i sorgenti che fanno parte di un progetto? 
Se quei sorgenti includono il file header, puoi dichiararla
in modo normale.  L'uso di "extern" ha senso quando si ha a
che fare con diverse unita' di traduzione (leggi .c), che
quindi non vedono le une le variabili delle altre, se non
mediante questo specificatore.
-- 
Andrea Laforgia - walkietalkie(at)
libero.it
"Meglio cieco che negro" (Stevie Wonder)


anche questo mi sa di fesseria...
extern in C vuol dire che lo spazio fisico di memoria per quella variabile
e' allocato in un altro modulo e non in quello che stai compilando.
ciao
donCiccio

e' allocato in un altro modulo e non in quello che stai compilando.
E' esattamente cio' che ho detto.



veramente tu hai detto:
"Non ha senso dichiarare una variabile "extern" in un file
header. Quando il file header viene incluso nel .c, la
dichiarazione della variabile finisce comunque nel .c, sia
essa "extern" o meno."
e poi:
"Se quei sorgenti includono il file header, puoi dichiararla
in modo normale.  L'uso di "extern" ha senso quando si ha a
che fare con diverse unita' di traduzione (leggi .c), che
quindi non vedono le une le variabili delle altre, se non
mediante questo specificatore."
per me il consiglio giusto e' il seguente:
nel  .H le variabili DEVONO avere lo specificatore extern davanti.
in UN SOLO .C la variabile va allocata cioe' la stessa dichiarazione del .H
ma senza extern davanti.
ciao
donCiccio
PS
non ti arrabbiare :-)

ma senza extern davanti.
mica è sempre cosi...!
-- 
Lawrence "Rhymes" Oluyede (
rhy...@myself.com
)
"Per cambiare, per diventare un'altra
cosa dobbiamo prima sapere cosa siamo"
(Bruce Lee)


Ma allora a che serve "static"??


sempre, sempre...
dimmi quando non e' cosi'.
ciao
donCiccio

 ha scritto nel messaggio
news:b1n08.10153$sW5.4...@news2.tin.it...

a rendere una variabile globale visibile solo nel modulo C dove la
dichiari, ma non si sta parlando di questo.
ciao
donCiccio

dimmi quando non e' cosi'.
Sinceramente cosi al volo non saprei...ma ci penserò

Newsgroup: it.comp.lang.c
Titolo: Correggetemi se sbaglio

int send (int socket, void *buffer, size_t size, int flags)
se al posto di *buffer decidessi di passare il puntatore ad un file aperto,
es:
fd= fopen(path, "r");
send(sd, fd, sizeof(?), 0);
la send funzionerebbe? Grazie

Nuke wrote:

La send accetta 2 parametri per l'output: un puntatore e una dimensione.
Prende il puntatore 'buffer' e copia byte per byte l'oggetto puntato, fino a
'size' byte.
In pratica l'oggetto da copiare con una SINGOLA chiamata deve trovarsi in
memoria e in posizioni contigue per almeno 'size' byte.
Questo per ovvi motivi non puo' funzionare con un FILE *: si limiterebbe a
copiare la struttura FILE puntata, non i dati del file.
Per copiare i dati del file, devi prima caricarlo in memoria.
-- 
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."

In che modo lo carico in memoria? Intendi copiandolo in un vettore(buffer)?

 vettore(buffer)?
Si, con una read (e tutte le sue varianti), mappandolo in memoria (ad
esempio con la chiamata Posix mmap)... come ti pare, pero' devi prima
averlo in un buffer di memoria contiguo, di ampiezza >= 1 :)


Newsgroup: it.comp.lang.c
Titolo: Lcc Win32

Salve
Sapreste spiegarmi la corretta procedura per usare con Lcc Win32 la
libreria di console conio.h?
Se infatti provo a usare una delle sue funzioni, anche includendo lo
header, il linker dà molti errori (ad esempio "undefined reference to
_clrscr").
Grazie

 wrote in message
news:3b89f9d...@news.libero.it...

non conosco la sintassi del LCC (ho una versione per programmare il Gameboy)
cmq. la libreria statica della Microsoft e' la LIBC.LIB. mi sa che basti di
dire al tuo lcc -lLIBC.LIB nella riga di commando...
clrscr, comunque non fa parte delle librerie Miscrosoft (ma la conio.h e in
LIBC.LIB).
Se non hai trovato la libreria potresti cercare la libreria giusta con un
grep: grep _clrscr *.lib, ti dira le librerire con la funzione richiesta (se
esiste).
J.

Newsgroup: it.comp.lang.c
Titolo: saluti

saluti a tutti del ng, e' la prima volta che posto e spero di seguire e 
contribuire a discussioni interessanti in futuro.
 
bye
 
-- 
mettiamo in funsione la Tunze

 interessanti in futuro.
 
 
ti sei dato alla programmazione in C? Beh, ti piacerà, lo
so ^_^
 
 

 so ^_^
 
abbi pieta' di un niubbo! ;-)



 
solo se implementerai la TUNZE nel tuo primo programma in
C ahahahah ^_^

Archaeopteryx ha scritto:

ci provai gia' qualche tempo fa:
 
http://www.youtube.com/watch?v=2r_7gIkO_w0
 
 
vuoi vedere il sorgente? ;-p


 vuoi vedere il sorgente? ;-p
 
chiedo grazia, ma non per te quanto perché meno mi ricordo
in qualsiasi modo e forma di quel rompiscatole meno peggio
mi sento :D
 
 


 
Saluti :-)
Ciao!
Newsgroup: it.comp.lang.c
Titolo: Ctrl + C + Break + Alt + Del ....

Vorrei che le combinazioni di tasti Ctrl+break, ctrl+C e ctrl+alt+del non
abbiano alcun effetto quando la mia applicazione è in esecuzione.
Per neutralizzare le Ctrl+break e la ctrl+C ho intercettato l'interrupt 23
ma ho comunque l'uscita a video del carattere "^C" che invece vorrei
evitare....
Per quanto riguarda il ctrl+alt+del invece...non so dove andare a sbattere
la testa  :-(
Aspetto fiducioso le vostre indicazioni ;-)
ciao Andrea
P.S. il sistema operativo e' MS-DOS 5.0 e il compilatore e' il Borland 3.1

 la testa  :-(
Potresti invece intercettare l'int 15/4F, dedicato a questo, oppure
direttamente l'int 8.
Esiste una lista degli interrupt DOS, documentati e non, su
http://lrbcg.softseek.com/Programming/Tutorials_and_Reference/D_3009_index.h
tml
--
Alessandro Monti

P.S. il sistema operativo e' MS-DOS 5.0 e il compilatore e' il Borland 3.1
Una domanda: ma lavori SOLO con l'MS-DOS?
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
ICQ: 42227764
---------------------------------------------------------------------------

Newsgroup: it.comp.lang.c
Titolo: Sicurezza ANSI

salve a tutti
sto cercando delle librerie di sicurezza che implementino gli hash digest,
la cifratura a chiave pubblica, etc,.. (insomma le solite cose) che però
siano scritte in ANSI C in modo che siano trasportabili. Qualcuno sa
indicarmi qualche link dove trovarle?
Grazie
Mauro

 ha scritto:

Prova con i sorgenti di GnuPG (
www.gnupg.org
). Sebbene l'interfaccia
possa contenere elementi POSIX gli algoritmi dovrebbero essere portabili
(anche perche` sono solo operazioni matematiche).
Luca
-- 
Home: 
http://kronoz.cjb.net
This message will self distruct in 5 seconds.

 ha scritto nel messaggio
news:cd8tnf$9e4$2...@dreamland.darkstar.lan...

Grazie
Mauro

 This message will self distruct in 5 seconds.
"self-dEstruct"
Max

 Max
LOL!
Si sarà destratto...

Newsgroup: it.comp.lang.c
Titolo: a proposito del costrutto   switch - case

Ciao, leggo su internet:
[...] L’istruzione switch è seguita da un’espressione racchiusa tra
parentesi tonde, il cui risultato sarà di tipo char (nel caso di un
carattere, come nell’esempio) o di tipo int (nel caso di un numero
intero). [...]
La mia domanda è: l'espressione racchiusa tra parentesi tonde che
segue la keyword switch può essere di tipo float o comunque di un tipo
diverso da int o char?
Grazie

 diverso da int o char?
No.
Solo tipi interi e classi con un conversion operator verso tipi interi.

 classi 
Che in effetti in C non esistono, percui...
Pardon :)

:

funziona anche con char.

diverso da int o char?
Provare, no eh?

funziona anche con char.
I "char" vengono contemplati negli "integral types".

 I "char" vengono contemplati negli "integral types".
cosa sono gli integral types?
Avevo provato ma dava errore, mi era perciò venuto il dubbio che
stessi facendo qualche errore semantico non correlato al costrutto
switch-case, pertanto mi ero rivolto a voi.
Newsgroup: it.comp.lang.c
Titolo: Risoluzione di sistemi algebrici

Ciao a tutti, devo risolvere un sistema di 6 o più equazioni, volevo
sapere se esiste qualche fuznione / libreria che si accolli l'operazione
-- 
Ciao & Grazie
Fabio

 sapere se esiste qualche fuznione / libreria che si accolli l'operazione
Buonasera,
le consiglio il seguente sito
http://www.library.cornell.edu/nr/bookcpdf.html
Se non ha bisogno di particolare efficienza il metodo di Gauss
dovrebbe essere sufficiente.
Stefano B.

 Stefano B.
Grazie 1k per l'aiuto per altro in passato ero gią stato su questo sito
ma mi era uscito di mente, di nuovo grazie
-- 
Ciao
Fabio

Newsgroup: it.comp.lang.c
Titolo: wait in c sotto linux

 
          Salve,
vorrei fare programma in c sotto linux che ogni 5 secondi mi stampi il
carattere 'O'.
Non voglio eseguire l'attesa con una funzione fatta con dei for...
esiste qualche funzione standard tipo Sleep o wait che posso usare ?
Grazie
xoooox
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 esiste qualche funzione standard tipo Sleep o wait che posso usare ?
sleep(5);

 esiste qualche funzione standard tipo Sleep o wait che posso usare ?
google?
cmq, select, nanosleep, sleep, usleep...
-- 
none
Newsgroup: it.comp.lang.c
Titolo: Scienze\informatica o ingegneria informatica?

Voglio imparare a fare videogiochi, voglio vivere per crearli e vivere
creandoli, che indirizzo mi conviene intraprendere?
grazie per il temo perduto.
--
 ____________________
 ·§§§§·RicDisaster·§§§§·
 ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
E-Mail:
rick...@tin.it
ICQ:#48897454


Credo che nel tuo caso sia più indicata la facoltà di Informatica piuttosto
che Ingegneria informatica. Quest'ultima è infatti di stampo ingegneristico
soprattutto relativamente al biennio (quindi materie quali fisica, calcolo
numerico ecc.) e credo che il tipo di informatica studiata sia indirizzata
alle applicazioni ingegneristiche (per esempio simulazioni di sistemi)
mentre il corso di Informatica (non sono sicuro se sia una facoltà o se
appartenga alla facoltà di Scienze MM.NN.FF.) prevede anche delle materie
legate alle elaborazioni di immaggini ecc.
Ciao, Salvo.

Newsgroup: it.comp.lang.c
Titolo: Programma per Win

Se volessi creare un programmino per
Windows, utilizzando il linguaggio C, cosa debbo fare per completarlo con
finestre, menu, ecc.?
Grazie, Giuseppe


ICQ #34602650

 finestre, menu, ecc.?
Devi prendere un compilatore fatto apposta per produrre applicazioni
Windows. In realtà qualunque compilatore C può produrre OBJ adatti a
Windows (provato di persona con il vetusto TurboC++ 1.01) ma il problema
è, essenzialmente, il codice di start-up che è molto diverso.
EMG

Ovvero il modulo principale(quello con main) dovrebbe essere compilato per
win mentre gli altri possono anche non esserlo?
--
Marco Iannaccone
ICQ: 18748121
IRC: Tolkien
e-mail: 
captai...@ussvoyager.com

 win mentre gli altri possono anche non esserlo?
Già, in effetti potrebbe essere. Ma bisognerebbe provare per esserne
sicuri.
EMG

 sicuri.
  L'importante e` specificare il tipo di passaggio di parametri per le
funzioni (PASCAL). Almeno... ;)
	Alla prossima,
		Marco

Newsgroup: it.comp.lang.c
Titolo: reversing di codice

salve a tutti.
avrei necessita' di fare reverse engineering di un sorgente abbastanza 
complesso.
L'idea e' quella di mettere dei meta-tag come commenti e poi realizzare 
la documentazione via software (tipo javadoc, per intenderci).
Il problema e' che lavoro sotto "uindovs" enon posso montare neanche un 
piccolo pinguino (aarrgh!)
Any suggest?!
bye2all

 Any suggest?!
Della serie:
- Non so cosa fare;
- Non so come farlo;
e non so nemmeno su cosa fare le due cose precedenti, ma intanto spalo
un po' di cacca su Windows storpiandone il nome (tanto fa sempre bene)
poi vediamo cosa viene suggerito.
Come post e' il massimo della chiarezza che uno puo' chiedere.
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

 piccolo pinguino (aarrgh!)
ok ma..se non si capsice cosa vuoi fare, che c'èentra il OS?1
Newsgroup: it.comp.lang.c
Titolo: terminare un make recursivo in caso di errore

Ciao,
il titolo piu o meno dice tutto,
ho un progetto in piu directory
il Makefile nella dir principale chiama gli altri,
i.e.
<snip>
all:
    @cd dir1; make
    @cd dir2; make
...
</snip>
al momento se il primo make nella dir1 fallisce, l'esecuzione continua
e cerca di compilare la dir2
suppongo che sia possibile risolvere questo problema tramite
dipendenze
i.e. Makefile in dir2:
<snip>
all: ../dir1/somelib.a
    ...
</snip>
pero non mi garba molto e probabilmente esiste il modo di farlo
automaticamente con qualche flag
qualche idea?
Ciao
Marco

 qualche idea?
Non è il comportamento corretto di make.  Dopo un errore dovrebbe 
interrompere l'esecuzione.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 interrompere l'esecuzione.
ho trovato la riga responsabile:
	@cd frontend; make $(DEFAULT_FRONTEND); cd ..;
l'ultimo "cd .." oltre ad essere superfluo non da mai errore quindi
l'esecuzione continua
grazie del chiarimento
Marco


Non specifichi quale OS stai usando, ma per evitare di dover mettere 
'cd ..' per tornare alla directory di partenza si usa eseguire la 
direttiva in una subshell.  Per Unix:
	@(cd frontend; make $(DEFAULT_FRONTEND))



Il progetto in questione è questo 
http://tuxguardian.sf.net
quindi Linux only (al momento..)
le rules
    @(cd frontend; make $(DEFAULT_FRONTEND))
e
    @cd frontend; make $(DEFAULT_FRONTEND)
mi pare funzionino allo stesso modo, la prima decisamente piu chiara
c'e in effetti qualche differenza o è solo una questione di stile?


La prima è sicuramente più portabile.  In alcuni ambienti ho avuto 
qualche problema perché la seconda forma faceva cambiare directory in 
modo permanente e quindi al termine del comando non proseguiva non 
trovandosi più nella directory giusta.  Ma credo che col make di Linux 
questo non succeda.


Newsgroup: it.comp.lang.c
Titolo: Installshield

Qualcuno sa come posso decomprimere i file .cab dei programmi di
installazione fatti in INSTALLSHIELD 5.
N.B.: non sono Microsoft CAB, quindi non si aprono con winzip 7 o
extract.exe.
--
DANINET
(
dan...@iname.com
)
(
http://surf.to/daninet
)

 wrote:
Un paio di mesi fa ho trovato solo un documento ufficiale in cui si
dice chiaramente che il .CAB di installshield non è compatibile con
quello m$ e non esistono programmi LEGALI per potervi accedere.

Newsgroup: it.comp.lang.c
Titolo: OT: Compilazione della readline

Salve,
   ho fatto un programma che utilizza la gets, tale programma funziona
sulle macchine AIX dell'universita'. Ho tentato di compilare lo stesso
programma sulle macchine Linux, ma programa non viene compilato; il
compilatore segnala che la funzione gets (e getc) non puo' essere
utilizzata per motivi di sicurezza. Ho sostituito la gets con la
write, ma vorrei utilizzare la funzione readline. L'utilizzo e' simile al
seguente:
#include <stdio.h> 
#include <readline/readline.h>
#include <readline/history.h>
int main() {
   char *msg; 
   msg = readline(); 
   printf("Linea: %s\n",msg); 
}
Il precedente programma mi da il seguente errore:
/tmp/ccaj2mY7.o: In function `main':  
/tmp/ccaj2mY7.o(.text+0x7): undefined reference to `readline'
collect2: ld returned 1 exit status   
La linea di comando che utilizzo per compilare:
 gcc -lreadline.a prova_readline.c
Ho provato con : 
 
  -llibreadline.a
  -lreadline.so 
  -llibreadline.so                
Sul sistema sono presenti i file /usr/include/readline/*, 
/usr/lib/libreadline.a, /usr/lib/libreadline.so.3.0 e i link soft
/usr/lib/libreadline.so.3, /usr/lib/libreadline.so  
Quale'e' la linea esatta per compilare?
                                                      Daniele


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

Daniele Mazzanti wrote:

Be' facendo conto che la libreria readline sia correttamente installata nel 
sistema in cui vuoi compilare il programma :
gcc prova_readline.c -o prova_readline -lreadline
Questo dovrebbe andare.
Ciao,
G.Gabriele

 -lreadline
[root@fokhouse /tmp]# ./readline
pippo
Linea: pippo
[root@fokhouse /tmp]#
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: Come prendo i tempi in in programma?

Salve,
sto cercando di implementare un sempluice programma che fa un Ping.
Sia il cklient che il server sono sulla mia "macchina" ed ho pensato di 
mettere una spece di cronometro che prenda il tempo prima della funzione 
connect() e subito dopo la funzione recv().
Ma come faccio?
Ho pensato di usare la funzione time(0) presente nella libreria time.h
Ovvero:
float start_timer=time(0);
connect();
recv();
float stop_timer=time(0);
printf("Tempo di Ping = %f", stop_timer-start_timer);
Il mio discorso è corretto?
Come mai il risultato è sempre zero???
Grazie 

 Come mai il risultato è sempre zero???
Perche' hai usato time() senza andare a vedere che cosa fa!
Il numero che viene ritornato e' il numero di secondi trascorsi dal 1 
gennaio 1970 o qualcosa di simile.
In ogni caso e' un numero intero di secondi. Quindi va bene per misurare 
cose che durano parecchio, non certo il ping (si spera!).
Vai a leggerti la documentazione di clock() sempre in time.h
che restituisce un valore piu' preciso, ma attenzione, perche'
devi dividere la differenza tra due letture consecutive per una
costante, mi sembra CLOCKS_PER_SEC, per ottenere il tempo trascorso
in secondi.
Inoltre clock() non misura esattamente il tempo trascorso, ma il tempo
di CPU e in alcuni casi le cose potrebbero essere parecchio diverse.
Non sono molto ferrato in questioni di misura del tempo.
Comunque sicuramente esistera' una alternativa parecchio precisa ma non
portabile che si appoggia a chiamate al s.o.. In tal caso ti devi 
rivolgere al gruppo che si occupa del tuo s.o.
ciao,
g.

 Ma come faccio?
Come ha detto Giovanni, time() non va bene per misurare la durata di
eventi cosě rapidi.  Devi rifarti a delle funzioni specifiche del sistema
operativo (ad. es., in Windows esiste la QueryPerformanceCounter()).
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 -- Come funziona QueryPerformanceCounter()?
      Avete la pazienza di spiegarmi il suo funzionamento?
   O per favore un link chiaro (possibilmente in italiano)
GRAZIE


    O per favore un link chiaro (possibilmente in italiano)
Ma, dico io, ci vuole tanto ?
http://www.google.it/search?hl=it&q=QueryPerformanceCounter&btnG=Cerca&meta=lr%3Dlang_it
-- 

Newsgroup: it.comp.lang.c
Titolo: stupido quesito

Ciao 
devo parsare una riga di questo 
tipo: 
VmSize:    32104 kB
sono interessato a portare il numero in un long.
Mi vengono in mente solo cose macchinose tipo scorrerla fino
al primo numero poi fino al successivo spazio e 
poi fare atoi.
Qualcuno ha un suggerimento? o un modo piu' elegante?
La riga in questione e' presa da un file scritto dal kernel 
linux che lo modifica.
Se io voglio fare polling (letura continua per vedere modifiche) ogni
volta che leggo il file devo anche riaprirlo o vedo anche le modifiche? 
(con fopen e fread) 
Scusate mi sono un po' ammuffito :)
Tnx 

 Qualcuno ha un suggerimento? o un modo piu' elegante?
volendo puoi usare la sscanf() (se la riga l'hai gia' in memoria)
o la fscanf() se leggi da un file.
ciao,
g.

 (con fopen e fread)
<CREDO> se non effettui l'fopen -fclose ogni volta, la lettura successiva 
viene fatta partendo dalla prima locazione di memoria non ancora letta.. non 
so se esista un modo per evitare ciň senza chiudere e riaprire... ma a 
livello hardware, apertura e chiusura corrispondono a scrivere un memoria 
una 20ina di byte , considerando che bisogna solo reinizializzare un 
FILE....<\CREDO>
Newsgroup: it.comp.lang.c
Titolo: sulle conversioni di formato: un esempio concreto (float) (2.0f *  (...

Ciao, ho letto questo codice C:
void matrix (double vec[3], float mat[2][2])
{
    mat[0][0] = (float) (2.0f * (vec[1] + vec[2]) );
}
Osservo innanzitutto che: 2.0f è la conversione a float di 2, immagino
che sarebbe stato equivalente scrivere 2f (dubbio_1).
Osservo inoltre che, poichè vec è un vettore di double, la somma
(vec[1] + vec[2]) è un double e quindi poichè 2.0f è un operando del
prodotto 2.0f * (vec[1] + vec[2]), prima di effettuare la
moltiplicazione 2.0f è convertito a double (dubbio_2).
Quindi è del tutto inutile scrivere 2.0f * (vec[1] + vec[2]),
bastava infatti scrivere 2 * (vec[1] + vec[2]),
infatti anche in questo caso, prima di effettuare il prodotto, 2
sarebbe stato convertito a double (dubbio_3).
Infine il risultato double del prodotto siffatto è convertito a float.
Concordate con me per quanto riguarda dubbio_1?
Concordate con me per quanto riguarda dubbio_2?
Concordate con me per quanto riguarda dubbio_3?
Grazie

andrew ha scritto:

Sì per tutti e tre. Io avrei scritto
	mat[0][0] = 2.0 * (vec[1] + vec[2]);
Preferisco scrivere 2.0 invece che 2, per rendere chiaro (in caso di 
future modifiche) che si sta lavorando con float.
E.

 - Mostra testo citato -
il fatto è che vec è un double e mat è un float
ah, ok, perché se metto un double dentro un float diventa float.
Tutto ok come dici te, grazie

> il fatto è che vec è un double e mat è un float
Come mai questa cosa? Io francamente i float non li userei mai per fare calcoli, troppa poca precisione. A meno che non ci sia qualche ragione precisa per usare dei float, ti consiglio di andare sempre di double.
Pleg

Pleg ha scritto:

Sostanzialmente l'unico motivo per usare i float è che occupano meno 
spazio. Se hai molti dati sui quali non ti interessa una grande 
precisione, può essere molto sensato memorizzarli come float. Le 
operazioni poi vengono comunque sempre fatte convertendo i float in double.
E.


I float sono forse tipi il cui formato è quello degli IEEE a 32 bit
mentre i double sono float a 64 bit?
Grazie
Newsgroup: it.comp.lang.c
Titolo: Accedere a elementi di strutture attraverso variabili

Ciao a tutti,
Qualcuno conosce un metodo per accedere agli elementi di una struttura 
attraverso variabili? mi spego meglio:
struct s {
	char e[10];
	char b[10];
};
struct s pippo;
se faccio
printf("%s",pippo.e); tutto ok
a me interessa invece rendere l'elemento 'e' di pippo una variabile
in modo tale da avere
pippo.variabile
oppure
(*pippo).variabile qualora usassi un puntatore alla struttura s
Spero di essere statoo chiaro.
Grazie a tutti

 wrote

Non, mi sembra che tu sia stato chiaro per nulla. Non capisco cosa tu stia 
dicendo/chiedendo...
Tommy 

 in modo tale da avere
Non so se ho ben capito quello che vuoi fare.
Non è possibile creare una variabile che sia "alias" per l'elemento di una
struttura, ma è possibile creare una #define:
#define E pippo.e
...
printf("%d\n", E);
...
E = 3;
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 attraverso variabili? mi spego meglio:
<cut>
Se ho capito il tuo problema, per me un modo di ottenere cio' che vuoi 
e' lavorare con un puntatore alla struttura. Poi definisci lo 
spiazzamento di ogni variabile interna e utilizzi questo spiazzamento 
per accedere.
Pero' non e' sicuramente portabile, in quanto ogni compilatore e sistema 
utilizza un suo modo per allineare le variabili all'interno di una 
struttura.
-- 
---
Ciao
Giuseppe
-----------------------------------
http://digilander.libero.it/nokappa

 struttura.
Sicuramente, lo devo utilizzare solo sotto linunx x86
Saluti Bogo :-)

 
Scusa ma se hai una struttuta che contiene tutti elementi omogenei, non 
potresti piu' semplicemente utilizzare un array?

Newsgroup: it.comp.lang.c
Titolo: Array bidimensionale(matrice)

Ho questo esercizio che non riesco a risolvere serve il Vs. aiuto
Scrivere un programma in C che consenta di creare una matrice 12 x 5 (12 
righe per 5 colonne)
contenente i dati relativi all'attività di un esercizio commerciale distinti 
per i 12 mesi dell'anno.
Il programma deve consentire di inserire da tastiera:
. nel primo elemento di ogni riga il numero di giorni di apertura per quel 
mese;
. nel secondo elemento di ogni riga il numero di articoli venduti in quel 
mese;
. nel terzo elemento di ogni riga l'incasso del mese.
Il programma deve poi calcolare, per ogni mese:
o la media (intera per difetto) del costo di un articolo venduto in quel 
mese e assegnare il
valore così calcolato al quarto elemento della corrispondente riga;
o la media (intera per difetto) dei soldi incassati in un giorno del mese e 
assegnare il valore
così calcolato al quinto elemento della corrispondente riga.
Il programma deve infine stampare a video, per le sole righe della matrice 
in cui la media del costo
di un articolo venduto è minore di 50? (<50), i seguenti elementi:
. il numero del mese (dove 1 sta per 'gennaio', 2 sta per 'febbraio', e così 
via);
. la media del costo di un articolo venduto;
. la media dei soldi incassati in un giorno di apertura.
Grazie
-- 
Ciao a tutti 

 
Prego.

 Scrivere un programma in C che consenta di creare una matrice 12 x 5 (12
[CUT]
bello l'esercizio.
Cmq, qual'e' il problema?
Ciao Jack

 righe per 5 colonne)
[...]
ciao.
Naturalmente non ti aspetti che risolviamo l'esercizio
al posto tuo, ma che ti diamo solo una mano a risolvere
i tuoi dubbi! ;)
Hai cominciato a scrivere una soluzione? Dove ti sei fermata?
In quale punto hai dei dubbi? Comincia a postare quello
che hai fatto e chiedici cose piu' specifiche.
ciao
Giacomo

Newsgroup: it.comp.lang.c
Titolo: memoria dinamica

Scusate la domanda forse troppo facile per vo,
non so come si alloca  in memeoria una matrice n*m
dinamicamente :
int **matrice;
....
Grazie!
AL


"Outside of a dog, a book is man's best friend.
Inside of a dog, it's too dark to read."
			-- Groucho Marx --

		 *(matrice + x) = malloc (m * sizeof (int));
Non potresti piu' semplicemente fare
	matrice = malloc (n * m * sizeof(int))
?
Paolo

	matrice = malloc (n * m * sizeof(int))
no, perche' int **matrice e' un puntatore di un puntatore,
quindi non puoi farlo puntare direttamente ad una matrice di
int, come faresti con matrice[n][m] ......
devi creare n puntatori ad int che a loro volta puntano ad
m int ...

Newsgroup: it.comp.lang.c
Titolo: Primo passo

Non e' uno scherzo, come si fanno le graffe sulla tastiera del portatile che
non ha ne' il tasto opportuno e nemmeno il tastierino numerico?
Grazie
Rz
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto nel messaggio
news:151Z26Z135Z76Y1...@usenet.libero.it...

se usi windows prova con AltGr + shift + [
comunque avrai di certo un tasto second function che ti abilita il
tastierino numerico...
prova a guardare i tasti 7, 8,9, u, i, o, j, k, l  nel mio, in piccolo, ci
sono segnati i numeri del tastierino in colore giallo (penso che il colore
vari da pc a pc).
vicino al tato CTRL ho il tasto (di colore giallo) Fn.
Se schiaccio questo si accende una lucina che mi permette di usare tutti i
tasti gialli (è come il caps lock).
Prova...
Ciao, Cendo

Se sei sotto GNU/Linux usa ALTGR+7 ALTGR+0
-- 
-=Riccardo Galli=-
 _,e.
s~  ``
 ~@.   ideralis Programs
.   ol 
 `**~  
http://www.sideralis.net

Newsgroup: it.comp.lang.c
Titolo: Libro

Sapreste consigliarmi un buon libro per imparare il C?
--
-=GicK=-
gi...@gick.cjb.net

Il Wed, 22 Jan 2003 14:16:52 +0100, GicK disse queste oscure parole:

Cerca nei vecchi post. 
groups.google.it
Saluti
-- 
Rionda
GPG key at: 
http://www.riondabsd.net/riondagpg.asc
Sent from: 
kaiser.sig11.org
 running FreeBSD-4.7-STABLE

> Sapreste consigliarmi un buon libro per imparare il C?
Il corso di Enrico Colomibini su
http://www.cityline.it/personal/erix/opere.html#corsodic
 oppure  il Kelley &
Pohl "C didattica e programmazione"Addison-Wesley

 ha scritto nel messaggio
news:8RwX9.33593$YG2.9...@twister1.libero.it...


 è ottimo, lo usiamo all'univ
Noi a Roma usiamo "C: Corso completo di programmazione" di Deitel & Deitel,
Apogeo editore
Ciao,
Sbrecche

Newsgroup: it.comp.lang.c
Titolo: forse [OT]:Esiste libreria grafica per DJGPP (utilizzabile magari anche soto Linux?)

Come da soggetto, dovrei disegnare qualcosina, niente di
impegnativo..., e mi scoccia ricorrere alle gdi di windows (e poi in
DJGPP di può? altrimenti dovrei riinstallare il VC++)
Avevo sentito anche di librerie multipiattaforma (Windows.. Linux..
etc..) per scrivere programmi con la gui dotate dei controlli +
comuni...
Scusate se (spero di no) sono OT, ma non saprei dove altro
chiedere....
Grazie e Buon Anno
santo giuseppe

DJGPP di puň? altrimenti dovrei riinstallare il VC++)
Sei OT.
Cmq prova a vedere Allegro, l'indirizzo lo trovi sul sito di djgpp (scarica
la versione wip, l'altra č paleolitica).
Lanugo

 comuni...
Dunque, libreria Allegro per la grafica "seria" e (n)curses per la versione
testo. Entrambe esistono per linux e win.
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it

testo. Entrambe esistono per linux e win.
Grazie a entrambi per la risposta anche se sono ot...
santo giuseppe
Newsgroup: it.comp.lang.c
Titolo: Problema con le window

Devo inserire delle windows in un programma C sotto Linux, dalle Linux
programmer's guide, leggo che basta fare così:
#include <ncurses.h>
main void()
{
    WINDOWS *win;
    win = newwin(righe, colonne, xpos, ypos);
}
Ma quando lo mando in esecuzione mi dice che non trova in pratica la
funzione newwin, dove sbaglio????
Un'altra domanda, come posso utilizzare i colori sempre in modalità
testuale???
Grazie
--
-----------------------------------------------
Andrea Sistarelli - Terni - Italy
si...@freemail.it
si...@softhome.net
 - Solo per gli attachment
ICQ: 11598516
-----------------------------------------------

 newwin, dove sbaglio????
  Posso farti una domanda stupida? La colleghi la libreria curses?
	Alla prossima,
		Marco
Newsgroup: it.comp.lang.c
Titolo: Errore stringa

ciao a tutti
ho il seguente problema, devo realizzare un elenco telefonico client
server con le code di messaggi, quando mando una stringa dal client con
la msgsnd viene ricevuta correttamente dal processo server con la
msgrcv, quando stampo la stringa a video, per vederne il contenuto, mi
viene stampato questo errore:
Invalid or incomplete multibyte or wide character
Non so proprio cosa sia ... all ' inizio ho pensato a dei parametri
sbagliati della msgrcv ma è solo una supposizione.
Grazie per la gentile risposta.

 ho il seguente problema[...]
Per la trattazione del tuo problema è più indicato un gruppo in cui si
discuta di programmazione Unix/Linux.  Rivolgiti a
it.comp.os.linux.development.
Qui dentro si preferisce parlare, il più possibile, di aspetti che
astraggano dalla piattaforma specifica e riguardino il linguaggio nudo e
crudo.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Andrea Laforgia ha scritto:

ok grazie mille ... lo posterò subito li

Newsgroup: it.comp.lang.c
Titolo: Informatica/Matematica-Lezioni,sviluppo programmi Fortran,C,C++

Sono laureata in matematica/informatica,
residente a Roma. Offro ripetizioni e
sviluppo programmi in Fortran,
C,C++, anche via Internet.
e-mail: 
mio...@yahoo.com
--
Posted from 
IDENT:ro...@scorpion.primeur.com
 [195.120.87.226] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 residente a Roma.
E io sono alto, bello, occhi azzurri, e abito a Monaco.
Ma questo non e' un giornale di annunci.

Newsgroup: it.comp.lang.c
Titolo: Problemi con gcc!!!!

Il compilatore gcc mi genera il file a.out* senza dare problemi di
compilazione ma a.out* non è eseguibile,i sorgenti sono corretti,in più
dando il comando gcc nomefile nomefile.c il compilatore segnala che nomefile
è inesistente.
Grazie per le eventuali risposte.


Per compilare specificando il nome dell'eseguibile devi fare
gcc -o nome_file_eseguibile nome_file.c
per eseguire il file eseguibile (appunto) devi scrivere
./nome_file_eseguibile
Ciao

 Grazie per le eventuali risposte.
Per la compilazione:
gcc nomefile.c
poi rendi eseguibile a.out con
chmod +x a.out
HTH

 > è inesistente.

Newsgroup: it.comp.lang.c
Titolo: doppio underscore in header

in un header di sistema (in questo caso socket.h) ho questa dichiarazione:
extern int getsockname (int __fd, __SOCKADDR_ARG __addr, socklen_t
*__restrict __len) __THROW;
domande:
1) qual è il significato esatto del doppio underscore? ho letto da qualche
parte che identifica parole riservate, ma vorrei capire un po' meglio
2) la parola __THROW, dovrebbe essere sostituita dal preprocessore C++ con
l'opportuna clausola throw (per generare un eccezione). Nel caso del C essa
viene ignorata, senza dare errore. Tuttavia, se io la sostituisco con
__MYTHROW, perchè ho un errore? Cioè, perchè il preprocessore non si limita
ad ignorarla come nel primo caso?
grazie
paolo
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ad ignorarla come nel primo caso?
come definisci __MYTHROW? Di solito nei file header c'è roba come questa
(presa da getopt.h)
#ifndef __THROW
# ifndef __GNUC_PREREQ
#  define __GNUC_PREREQ(maj, min) (0)
# endif
# if defined __cplusplus && __GNUC_PREREQ (2,8)
#  define __THROW       throw ()
# else
#  define __THROW
# endif
#endif
che definiscono come deve essere sostituita. Se tu hai cambiato solo
__THROW in __MYTHROW o comunque non gestisci tutti i casi necessari non
basta.

Newsgroup: it.comp.lang.c
Titolo: Warning incomprensibile!!!

Ciao ragazzi come mai quando uso le matrici in questa maniera:
int **a;
a =(int *)malloc(x*sizeof(int));
  for (g=0;g<x;++g)
    a[g]=(int *)malloc(y*sizeof(int));
ricevo questo messaggio:
warning: assignment from incompatible pointer type
si può evitare?
--
--
Marco Sommella {Skonvols2k}
somme...@inwind.it
skonv...@iol.it

 si può evitare?
Si, devi scrivere
a =(int **)malloc(x*sizeof(int));
oppure
a = malloc(x*sizeof(int));
EMG

 a = malloc(x*sizeof(int));
idem come sopra:
 a =malloc(x*sizeof(int*));
                      -^-
a me personalmente piace molto la versione:
 a = malloc( x * sizeof( *a ) );
-^-                      -^-
in quanto cosi' non si sbaglia la dim della memoria allocata rispetto
al pointer usato.
ciao
donCiccio

 a =(int **)malloc(x*sizeof(int));
  SI ma scrivento cosě il for lo tolgo?


                               -^-
Oopss! Pardon...
EMG

a = malloc(x*sizeof(int));
 a = malloc(x*sizeof(int *));
Su sistemi in cui in puntatori non hanno la stessa dimensione
di un int c'e' differenza.
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

 a = malloc( x * sizeof( *a ) );
Anche io l'ho vista usata spesso e non mi sembra male ...
il piu' e' farci l'occhio :DDD
forse fra i "contro" non indica cosa si sta allocando e
uno deve cercarsi nel sorgente la definizione di a.


   SI ma scrivento cosě il for lo tolgo?
No, in quanto serve ad allocare le "colonne" della matrice.
EMG

 uno deve cercarsi nel sorgente la definizione di a.
Vero. E fra i "pro" c'è che cambiando il tipo a cui punta "a" non devo
andare a cambiare anche le malloc().
EMG
Newsgroup: it.comp.lang.c
Titolo: un bel debugger visuale sotto linux?

ho visto che esiste la verisone per X windows di gdb, oppure che cosa
mi consigliate?
-- 
Daniele
==============
POTERE E POTENZA!
(saluto evroniano)
ICQ: 106349465 nick: grifter
-togliere NOSPAM per le risposte-

mi consigliate?
Se usi KDE potresti provare con l?IDE KDevelop
Augusto Pucci ( 
http://www.prospektiva.it/webmaster/
 )
Webmaster di Prospektiva On-line
http://www.prospektiva.it
Webmaster di SIPO Toscana
http://sipotoscana.supereva.it

mi consigliate?
DDD (data display debugger)
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

Newsgroup: it.comp.lang.c
Titolo: compilatore C in Dos

Ciao a tutti,
vorrei sapere dove posso trovare un compilatore C per Dos.
Grazie.

 vorrei sapere dove posso trovare un compilatore C per Dos.
Prendi il DJGPP all'indirizzo 
http://www.delorie.com/djgpp/
.
EMG

Newsgroup: it.comp.lang.c
Titolo: Re : Proposta argomento FAQ

 anche a qualcos'altro (che ne so...memoria...) ?
In generale no.
EMG

Se è in italiano io sarei curioso. Mi va bene anche un link :-)
-=Azathoth=-

 Vuoi che mandi anche a te la Norton Guide sul C?
Potresti mandarla a me?



Oppure dirci dove le hai trovate :-)
ciao

 Oppure dirci dove le hai trovate :-)
E chi si ricorda? Sono troppi anni che ce l'ho, da prima che conoscessi
Internet.
EMG

...


Newsgroup: it.comp.lang.c
Titolo: Creazione di directory

Ciao a tutti, ho rispolverato il C dopo un bel pò di tempo... e già allora
non ero un'esperto...
Volevo cheiedere sapreste dirmi come posso fare per creare una directory
in C?
Un GRAZIE a chi mi risponder.
Bye Rob.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
man 2 mkdir
Non e` ANSI C, in compenso e` conforme a POSIX, BSD, SYSV, X/OPEN e SVr4.
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: Funzione window();

Non mi è molto chiara la funzione  window();  definita in <conio.h>
Grazie per le eventuali risposte. ;-)

 Grazie per le eventuali risposte. ;-)
Scusa la non risposta, ma la libreria conio.h non è C standard.
Cmq prova su it.comp.programmare.win32 oppure conio.h su 
www.google.it
.
Ciao,
-- 
+--------+ ASCII ribbon campaign ( )
|  kral  |  - against HTML email  X 
+--------+              & vCards / \

L'ho utilizzata circa 5 anni fa, questa funzione e non ricordo molto più
bene...comunque, questa crea un'area di dimensioni stabilite, passate come
parametri e funge per intenderci come un contenitore frame, sia in VB che in
HTML. Di conseguenza le coordinate interne non sono assolute, ma relative
all'angolo superiore sinistro dell'area creata.
Altro non ricordo, anche perchè è presente nel Borland C 3.1 e attualmente
sono in linux.
--------------------------------
Inviato via 
http://usenet.libero.it

Newsgroup: it.comp.lang.c
Titolo: RAS

C'e' qualcuno che sa perche' quando compilo il programmino seguente mi dice
che non trova
il riferimento a _RasEnumConnectionsA@12 e quel @12 che cos'e' ?
Provato con Lcc32, DevC++ e Quincy con risultati simili.
Grazie per la pazienza
Ciao.
----------------------------------------------------------------------------
-----------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#include <ras.h>
void main()
{
  LPRASCONN lpRasConn;
  DWORD  lpcb = sizeof(RASCONN);
  DWORD  lpConn;
  char*     lpszConn;
  lpRasConn = (LPRASCONN) GlobalAlloc(GPTR, sizeof(RASCONN));   // Alloca
spazio in RAM e lo azzera
  if (lpRasConn != NULL)
// Se GlobalAlloc non fallisce
  {
    lpRasConn->dwSize = sizeof(RASCONN);
//  Setta dwSize di lpRasConn alla dimensione di RASCONN
    RasEnumConnections(lpRasConn, &lpcb, &lpConn);
//  Riempie la struttura con i dati
    printf("%d\n",lpConn);
//  Stampa il numero di connessioni aperte
  }
  GlobalFree(lpRasConn);
// Libera la RAM
}
----------------------------------------------------------------------------
-------------------------------------------------------------------


Devi dire al compilatore di linkare anche la libreria librasapi32.a
Per dev-cpp, nei prametri di compilazione del linker aggiungi -lrasapi32 
         e cosě dovrebbe compilare e linkare correttamente (almeno, a me 
funziona). Per gli amanti dello standrd, main() ritorna un intero... =P
Non so cosa sia @12, nč sono sicuro di cosa sia la 'A' in 
_RasEnumConnectionsA@12... spero che qualcuno piů esperto possa dircelo =P
'sera lietissima, Marco
Newsgroup: it.comp.lang.c
Titolo: Lo standard ANSI C (1999)

Qualche Old Timer del gruppo ricorda le discussioni sulla possibilita'
di ottenere una copia {cartacea stampata | elettronica stampabile} del
nuovo standard C99?  Ecco le ultime novita', per chi fosse
interessato.
L'ANSI (American National Standard Institute, IIRC) ha adottato
ufficialmente lo standard ISO/IEC 9899:1999 (piu' noto come C9X o C99)
anche per gli Stati Uniti, e questo lunedi 22 maggio (l'altro ieri).
Come sua consuetudine, l'ANSI pensa di mettere a disposizione sulla
rete mezzi che consentano l'acquisto di una copia dello Standard, e
questo a prezzi che dovrebbero essere nettamente inferiori a quelli
praticati dall'ISO (non mi ricordo la cifra esatta, ma su 
www.iso.org
mi sembra si parlasse di diverse centinaia di migliaia di lire).  La
cosa dovrebbe avvenire entro circa un mese (secondo loro).
Vi ricordo anche che una copia elettronica dello Standard C++ (ISO/IEC
14882:1998) acquistata attraverso l'ANSI costa US$ 18 (meno di 40000
lire al cambio attuale).  Speriamo che anche per il C il trattamento
sia cosi' economico...
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it


ciao
 lo speriamo tutti. Hai capito adesso perche' gli Stati Uniti galoppano
 mentre la UE cammina? In America non c'e' burocrazia e costa tutto meno,
 qui, devi sottostare alle volonta' di una casta di burocrati che piu' che
 rallentare lo sviluppo non fanno. Un esempio su tutti e' lo standard
 de jure Internet (IAB) che ha nettamente prevalso contro lo standard ISO OSI.
 Qui in Europa sono bravi a parlare, in America fanno i fatti.
 Ti sembra possibile che lo standard ISO/IEC 9899:1999 presso la UNI, debba
 costare 300.000 lire?
 ciao e scusa per lo sfogo
 Enrico
Newsgroup: it.comp.lang.c
Titolo: Problemi nell'elevamento a potenza

Ciao.
Oggi mi sono scontrato con il seguente problema:
Calcolando queste due espressioni
exp(j*3/0.45) - exp(j*3/0.7)^(0.7/0.45)
exp(j*3/0.45) - exp(j*3/7)^(7/0.45)
ottengo la prima volta un numero diverso da 0 e la seconda volta 0.
Cosa incredibile poi che medesimo risultato lo ottengo in Matlab e
Fortran.
Mi sembra piu' plausibile che sia io a sbagliare.
Graditi suggerimenti e consigli

 exp(j*3/0.45) - exp(j*3/7)^(7/0.45)
In C non esiste l'operatore per l'elevamento a potenza. Devi usare la 
funzione pow(x,y)
E.

 Graditi suggerimenti 
Codice.

> Codice.
Forse ho sbagliato forum.
Non e' C ma C++
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <complex>
using namespace std;
main()
{
   complex<double>   a,b1,b2,b3,b4,c,j;
   j = complex<double>(0,1);
   a = exp(j*3./0.45);
   for(double x=-1.; x<=1. ; x+=0.0001)
   {
       b1 = pow(exp(j*3./x ),  x/0.45);
       c = a-b1;
       printf("%10.5lf %10.5lf %10.5lf\n", x,c.real(), c.imag());
   }
}

        b1 = pow(exp(j*3./x ),  x/0.45);
L'elevamento a potenza sui complessi non sempre soddisfa la propriet� 
(x^y)^z = x^(yz).
E.

 E.
Questa mi suona nuova.
Mi faresti un esempio per cortesia?

 Mi faresti un esempio per cortesia?
Prendi il codice che ho inserito precedentemente e fallo girare.
dovresti avere in uscita la prima colonna delle x e poi la parte reale
ed immaginaria che dovrebbe fare 0 e 0
(onde evitare fraintendimenti a me sarebbe bastato 10^-7 e 10^-7
anche alla -5 ma non 1.qualcosa
Li puoi trovare un esempio in cui l'elevamento a potenza di un numero
complesso non sempre e' calcolato
correttamente.

 Mi faresti un esempio per cortesia?
x=sqrt(2)*(i-1)/2
y=2
z=1
Ricordo che x^y si definisce come exp(y*log(x)). Il problema � che 
log(x^2) � diverso da 2*log(x).
E.

 E.
E da quando? o.0
http://it.wikipedia.org/wiki/Logaritmo#Propriet.C3.A0_dei_logaritmi
è proprio vero che su wikipedia si scrivono fesserie... ;-)
Anche per il calcolatore dovrebbe essere lo stesso, a meno che non ci
sono problemi di precisione, di oerflow o di underflow.
Ad esempio sommado 2 numeri che sipassano diversi ordini di grandezza
la mia calcolatrice programmabile sballa...
Può essere un problema simile?

 sono problemi di precisione, di oerflow o di underflow.
Credo proprio che si riferisse a questo e non alle proprietà matematiche 
del logaritmo.

 Pu� essere un problema simile?
No, non � questo il problema. Un caso ancora pi� semplice:
x=i-1
log(x)=log(2)/2+3/4*Pi*i
log(x^2)=log(2)-Pi/2*i;
Verifica tu stesso:
#include <iostream>
#include <complex>
using namespace std;
typedef complex<double> Complex;
main()
{
   Complex x = Complex(-1.0,1.0);
   cout<<"log(x)="<<log(x)<<" log(x^2)="<<log(x*x)<<endl;
}
E.
E.

Andrea D'Amore ha scritto:

No, mi riferivo proprio alle proprietà matematiche!
E.

 No, mi riferivo proprio alle proprietà matematiche!
Errore mio, avevo dedotto così perché pensavo anche io ai reali.