mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Please mi spiegate dove sbaglio?

for(i=0;i<n;i++)
    for(j=0;j<n;j++)
        {
        x=A[i][j];
        y=A[k][h];
        if(x>=y)
            rec1=queque(rec1,x);
        else
            rec2=queque(rec2,x);
    }
Salve,
Praticamente prendo in input una matrice A[n][n] poi 2 numeri k e h. Se il
numero A[i][j]>= al corrispondente numero di A[k][h] allora il numero viene
inserito in una lista (coda) rec1, altrimenti viene inserito nella lista 2.
L'implementazione della coda è giusta, il problema è che se aggiungo l'else
(quelle istruzioni che ho messo dentro un commento multilinea) quando lancio
il programma, il tutto si blocca.
Sia rec1 che rec2 nel main sono stati inizializzati a NULL e si comportano
esattamente nello stesso modo.
Se lascio cos' non funziona.
if(x>=y)
rec1=queque(rec1,x);
else
rec2=queque(rec2,x);
----------------------------
Cos' funziona:
if(x>=y)
rec1=queque(rec1,x);
Ma funziona anche cos'
if(x>=y)
rec2=queque(rec2,x);
Insomma, singolarmente posso creare le due liste, ma quando provo a crearle
insieme no..
Saluti :)

 ha scritto nel messaggio
news:jW1za.222077$K35.5...@news2.tin.it...

mi sono dimenticato di mettere le istruzioni incrominate dentro il commento,
cmq le istruzioni incriminate sono:
else
rec2=queque(rec2,x);
Aggiungo anche che il problema non è dovuto al superamento dei limiti di
array et similia perchè ho fatto tutti i controlli

 ha scritto nel messaggio
news:QX1za.222093$K35.5...@news2.tin.it...

Newsgroup: it.comp.lang.c
Titolo: da stringa a time_t (ctime)

Ciao,
Sto facendo delle estensioni al programma di analisi dei logfile, 
Webalizer, per fargli accettare dati nuovi. Uno di questi é l'ultimo 
login di ogni visitante al sito, che mi ritorna come un timestamp.
Quindi sto cercando di convertire una stringa contenente "1017202360470" 
o qualcosa del genere, in una data tipo "12 May 2001" o quel che é.
Il problema é che ctime accetta solamente il formato time_t, e non so 
come convertire la mia stringa in tale formato. Qualcuno ha delle idee? 
Sono convinto che la risposta é semplice...
Grazie tante,
Ale

 Sono convinto che la risposta é semplice...
char c[] = "1017202360470";
time_t t = atoi(c);
printf("%s\n", ctime(t));

Newsgroup: it.comp.lang.c
Titolo: [HELP] Problema con i puntatori e le stringhe

Ciao Sono di nuovo io...alle prese con un altro problema!
Ho risolto quello precedente (aiutandomi con un array di char) solo che ho
un altro problema!
Usando quest'array (che ho chiamato conversione) in una procedura che
ritorna un puntatore a carattere (che in pratica è la stringa che
rappresenta la conversione) ho riscontrato poi nel main il seguente
problema:
esempio:
 re = binario(numero,5);
 printf ("\nCifra : %c",*(re+4));
 printf ("\nCifra: %c",*re);
re è un puntatore a carattere; la prima printf mi restituisce il valore
corretto, la seconda no...sapreste dirmi perchè (e il problema me lo dà
anche se le scambio - la prima funziona sempre, la seconda no). Mi spiego
meglio:
se numero è 8 (5 rappresenta la lunghezza in bit) re dovrebbe essere
correttamente "01000"; la prima printf  mi dà correttamente '0', la seconda
mi dà un punto interrogativo rovesciato (va beh se cambio i dati da leggere
caratteri cmq strani)...
Potete aiutarmi???

"aiencran" <cranp...@NONSPAMMAREkatamail.com> ha scritto nel messaggio
news:2EJs8.9604$SR5.2...@twister1.libero.it...


ciao  prova con :
printf("\nStringa: %s", *re);

"aiencran" <cranp...@NONSPAMMAREkatamail.com> ha scritto nel messaggio
news:2EJs8.9604$SR5.2...@twister1.libero.it...

my errata corrige:
printf("\n%s",re);

 wrote in message
SgWs8.10893$m41.2...@twister2.libero.it...


"aiencran" <cranp...@NONSPAMMAREkatamail.com> ha scritto nel messaggio
news:2EJs8.9604$SR5.2...@twister1.libero.it...

Vorrei solo capire cosa vuoi fare con le tue printf :
vuoi stampare i singoli caratteri?

Sì all'inizio volevo far così (ora cmq ho risolto il problema in un altro
modo)...però mi è rimasta la curiosità e la voglia di capire cos'è che non
andava.

Newsgroup: it.comp.lang.c
Titolo: cercasi prog per sw

Salve a tutti,
avremmo bisogno di acquistare da qualcuno di voi un software per
compilare dialer.
Mi server un admin abbastanza easy per inserire numero di telefono,
login, passoword, disclaimer ed icona del dialer. Poi cliccare crea e
via il dialer.exe è pronto.
Se qualcuno fosse in grado di farlo in tempi anche abbastanza brevi mi
contatti via mail:
ant...@nextone.it
oppure via icq: 69282781
Grazie!

 via il dialer.exe è pronto.
Sono conscio del fatto che per soldi si è pronti a fare qualunque cosa.
Voglio solo dire che ai miei occhi lavorare per questi signori è 
incentivare un mercato di truffatori (ok, diciamo di soldi guadagnati 
sfruttando l'ingenuità delle persone e *NON* illegalmente).
Mettetevi una mano sul cuore.


wrote:

A prescindere da quest, secondo la mia interpretazione del manifesto,
quel posting è off topic.
by LjL
ljl...@tiscalinet.it

 compilare dialer.
Vaffanculo!
-- 
-=[]=---iAN CooG---=[]=-
Newsgroup: it.comp.lang.c
Titolo: domanda da principiante sui processi

[C]iao a tutti, stavo guardando una piccola
porzione di codice (premetto che sono un
principiante in queste cose)
per rendere un processo demone,
cioč figlio di INIT (ppid = 1... spero di non sbagliare).
il codice, riassunto brevemente:
if(fork() != 0) exit(EXIT_SUCCESS);
setppgr(); /* credo fosse questa la funzione*/
...
if(fork() != 0) exit(EXIT_SUCCESS);
...
ora capisco la doppia fork, crea un processo
"nipote" dello stesso gruppo di processi del padre,
ma perchč quando la funzione finisce il nipote assume
come PPID 1 e non il PID del padre...
alcuni miei colleghi mi hanno detto che il padre ed il nonno
sono suicidi.. perchč ???
Grazie
--
Gio

 ha scritto nel messaggio
news:496c7.139877$Qf6.9...@news2.tin.it...


 ci sono due processi figli che verranno poi ereditati da init.
Oo;; a si sono 2 i processi, ma scusa la seconda
fork() non viene effettuata solo dal figlio del processo main
(da quello che ho letto su di un manuale, la fork "continua"
nel processo figlio a meno che non si controlli il pid restituito ^^;)
... tralasciamo questo discorso... quello che mi interessava sapere
era perchč i due processi crepano ?? ^^;;

 Gio
-- 
...FreE FrAGs FOr ALl...                                                        
GPQuake Clan Proud Members                                                      
email:ho...@libero.it
 
--------------------------------  

 escono sia il Padre che il Nonno
E' quello che vorrei capire anche io, visto che all'interno di questa
procedura
non c'è niente che (IMHO) uccide i primi 2 processi, domani in ufficio
posterò il codice di questa procedura e spero che mi aiuterete a capire ç_ç
tnx

 escono sia il Padre che il Nonno
Credo di aver risolto, avevo la soluzione (se è questa sotto gli occhi, ma
mi era sfuggita)
la fork genera due processi IDENTICI, l'unica cosa che differenzia i due
processi
generati è il Pid che per il figlio è un numero diverso da 0 mentre per il
processo
genitore è 0.... guardando il codice si può notare che la procedura per
Pid = 0 termina, terminando così anche il processo "padre", stessa identica
cosa
per il processo "nonno", generando un "orfano" adottato da INIT... spero di
aver
indovinato la soluzione ^^; (chiedo conferma ??)
P.S: (... ringrazio una mia collega per avermelo fatto notare, anche se se
non fosse stato per lei
avrei gia avuto la soluzione ¬¬)
Newsgroup: it.comp.lang.c
Titolo: Riguardo inizializzazione di oggetti globali..........(Andrea)

Ciao, in un mio precedente thread Andrea Laforgia ha postato il seg. codice:
#include <stdio.h>
char s[10];
void writestr(char* s)
{
     int i;
     for (i = 0; i < 10; i++)
        printf("[%3d]", s[i]);
     printf("\n");
}
int main(int argc, char* argv[])
{
    char t[10];
    printf("s = "); writestr(s);
    printf("t = "); writestr(t);
    /*getchar();*/
    system("PAUSE");
    return 0;
}
che come output da:
s = [  0][  0][  0][  0][  0][  0][  0][  0][  0][  0]
t = [-96][ -1][ 64][  2][110][ 30][  0][120][  0][  0]
Cosa riempie l'array t? Quel %3d cosa significa? Scusate la domanda banale
ma.......:)
Ciao e grazie.
P.S. Se la funzione writestr() la metto dopo il main() il compila ma con
degli warning.......

degli warning.......
Forse perche' cosi' facendo la usi nel main prima che sia dichiarata,
e quindi non ne conosci il prototipo.
Se la vuoi spostare dopo il main, devi almeno mettere prima del main
il propotito della funzione.
-- 
Mox

[...CUT...]
Grazie mille!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Newsgroup: it.comp.lang.c
Titolo: Compressione di Huffman

Salve...
mi serve per motivi di studi il codice sorgente dell'algoritmo di
programmazione oppure un sito dove è spiegato come ricavare i vari passi
dell'algoritmo.
Grazie^^

 dell'algoritmo.
Se non sbaglio (sono offline): 
www.nr.com
E` un libro in pdf scaricabile (si`, e` legale)
Se non lo trovi li` cerca "numerical recipes" su google
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"La Via prosegue senza fine."
	Bilbo Baggins - Il Signore degli Anelli - J.R.R. Tolkien

per prima cosa devi elencare i simboli da codificare ciascuno con la propria
probabilità di comparire:
A 0,2 - B 0,1 - C 0,1
la somma deve fare 1
poi devi costruire dinamicamente l'albero delle probabilità scegliendo di
volta in volta i due nodi, finali o intermedi con probabilità più bassa e li
colleghi ad un padre che avrà come probabilità la somma delle probabilità
dei figli.
alla fine costriusci il codice percorrendo l'albero e associando uno 0 ad
ogni ramo a sinistra ed un 1 ad ogni ramo a destra.
Davide


Grazie per l'idea.
Come posso fare la visita di un albero in modo ricorsivo assegnando i vari
bit?
Nn mi viene il codice!
tnx

Nn mi viene il codice!
Uguale alla classica visita ricorsiva in ordine, solo che passi un
parametro in piu': la sequenza ottima: una stringa (per semplificare).
LA lunghezza della sezuenza sara' al massimo N (considera l'albero
degenere in una lista che arriva alla profondita' N-1, + 1 carattere
per il terminatore di stringa).
A ogni passo appendi in coda un nuovo carattere alla stringa (0 se vai
a sinitra, 1 se vai a destra).
Considera che:
- la stringa deve essere null terminata gia' al primo passo, senza 
  simboli al suo interno tranne nel caso in cui
- ci sia 1 solo simbolo nell'albero, in tal caso dovrai decidere che 
  codifica assegnargli.
<CODE debug="nessuno">
/*
 * esempio di cofidica attuale: 1001, ovvero destra, sinistra,  
 * sinistra, destra.
 */
visit(btree bt, char * codifica)
{
    int i;
    if (bt == NULL)
        return;
    else if (bt->left == NULL && bt->right==NULL)
        printf("La codifica per il simbolo %s e' %s\n", bt->simbolo,
codifica);
    else {
        i = strlen(codifica);
        codifica[i] = '0';  /* codifica attuale: 10010 */
        codifica[i+1] = '\0';
        visit(bt->left, codifica);
        codifica[i] = '1';  /* codifica attuale: 10011 */
        codifica[i+1] = '\0'; /* importante */
        visit(bt->right, codifica);
    }       
}
</CODE>
-- 
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."

Newsgroup: it.comp.lang.c
Titolo: File di MAKE e DJGPP

Salve, sto cercando di capire come compilare un progetto tramite un file
*.mak e DJGPP.
Qualcuno lo sa?
Simone Tromboni 
squa...@tin.it

Qualcuno lo sa?
devi praticamente lanciare MAKE nella directory in cui si trova il
makefile... per esempio le librerie Allegro le compili in questo modo.
ciao!
--
Carotino
Member #2 and PR of POTA (founded by Zarkan)
ICQ 19905752
Amiga's Paradise:
www.geocities.com/timessquare/labyrinth/5925/index.htm
Retrogamers Krew!
Newsgroup: it.comp.lang.c
Titolo: Help array!!

Aiuutooo!
ho un errore che non avevo mai incontrato prima....Array size too large??
:(
che razza di errore è??! :)
ho bisogno di un array di int di 640*480 per tenere il colore di ogni 
pixel dello schermo ma.......non posso farlo! i colori sono già su file, 
ma appunto vorrei usare un vettore per rendere più veloce il tutto e 
leggere da file solo una volta.....potete aiutarmi??
grazie a tutti ciao :)


	640 x 489 = 307.200
   Sento odor di modalita` reale made in MS DOS e di segmenti di memoria 
da 65.536 byte... ;)
   Se il tuo problema e` questo, usa puntatori huge o passa ad un 
compilatore a 32 bit (per esempio, il DJGPP di DJ Delorie: 
http://www.delorie.com/
).
-- 
Alla prossima,
Marco

 wrote in message 3E43A1F8...@tin.it...

Mi sembra sia già stato trattato recentemente un problema simile.
Il segmento stack è troppo esiguo per contenere un vettore così grosso:
prova a controllare se c'è un'opzione del compilatore che ti permetta di
adattare lo stack, oppure usa l'allocazione dinamica tenedo presente che, in
base al sistema operativo, potrebbero esserci dei limiti alla quantità di
memoria richiedibile per ogni chiamata a malloc().
Saluti

acetone ha scritto:

640*480*sizeof(int) :-) sono veramente troppi per il modello di memoria ( mi
pare small ) settato di default sul Turbo C,  prova a buttare un occhio in
Option->Compiler->Code Generation se è possibile cambiare il modello di
memoria magari con uno di tipo Large e se ben ricordo è possibile che che
malloc ti ritorni NULL da dentro l'ambiente di sviluppo, prova a compilare
poi esci e da prompt avvia il pgm e vedi se "regge"...
Salutoni Dave.

Newsgroup: it.comp.lang.c
Titolo: Cammini minimi in C!

Salve,
volevo sapere dove posso trovare l'algoritmo di FLoyd-Warshall implementato
in C !
C'è qualche sito dove ci sono le implementazioni ,anche in altri linguaggi ,
di algoritmi di cammini minimi??
Grazie a chiunque mi sappia rispondere.

 linguaggi , di algoritmi di cammini minimi??
su 
http://ioi.dsi.unimi.it
 trovi una dispensa di Sebastiano Vigna 
sull'algoritmo di Dijkstra.
ciao 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: togliere dati da una stringa

se ho una stringa cosě:
"stringa bla bla bla"
c'č qualcosa per leggere la prima stringa  e salvare il resto in un'altra
variabile?
insomma voglio ottenere
stringa1="stringa"
stringa2="bla bla bla"
esiste un comando tipo la sscanf che pero' toglie i dati nella stringa da
cui legge o devo costruirmi una funzione io?
grazie
FRa

"FRaNCeSCo" <?@?.?> ha scritto nel messaggio
news:YltSa.2378$SN1....@news2.tin.it...

Puoi usare strtok: in  generale serve per "tokenizzare" una stringa, cioč
suddividerla in base a qualsivoglia carattere separatore, nel caso specifico
lo spazio:
char *strtok(char *str, const char *seps)
dove str č la stringa da tokenizzare e seps č la stringa in cui sono
definiti i separatori. Ad esempio:
#include <stdio.h>
#include <string.h>
int main() {
 char str[] = "Gather ye rosebuds while ye may";
 char seps[] = " ";
 char *token = strtok(str, seps);
 while (token) {
  printf("%s\n", token);
  token = strtok(NULL, seps);
 }
}
La prima chiamata fa restituire alla funzione il puntatore al primo token,
le chiamate successive all'interno del ciclo restituiscono i token
successivi; in questo caso il primo argomento deve essere NULL.
Ciao

 lo spazio:
Dimenticavo: la stringa tokenizzata verrą distrutta, nel senso che ad ogni
separatore viene sostituito un '\0', quindi se la stringa originale deve
essere mantenuta devi operare su di una copia.
Ciao

Dimenticavo: la stringa tokenizzata verrà distrutta[...]
Attenzione anche al fatto che strtok() non è thread-safe.
-- 
Open Delphi Manual
http://groups.yahoo.com/group/delphi_open_manual/
Newsgroup: it.comp.lang.c
Titolo: [OT] interrupt in djgpp

Premessa: questo post è ot, io sono nuovo qui dentro, sto facendo una
domanda su un argomento che non conosco, farei meglio a leggere qualcosa a
riguardo e a studiarci un po' su prima di chiedere, ma spero che non mi
spariate subito...
Allora, il mio problema sarebbe questo: ho bisogno di chiamare, tramite asm,
l'interrupt 10h.
La linea di codice che provo a scrivere è questa:
 asm ("int $0x10");
Mi segnala un parse errore prima della ).
Cosa sbaglio? (Sto cercando di tradurre un listato da una versione scritta
per Turbo C++ 3.0, in cui la linea suona così:
asm {
    ....
    int 10h
    ...
}
spero possa essere di qualche utilità).
Vi prometto che non posterò mai più richieste del genere qua sopra,
perdonatemi...
Lanugo

Se non ricordo male se vai nell'include dos.h trovi una union che fa al caso
tuo...la union REG che ti permette di accedere ai registri in particolare
l'ax.
"Lanugo of the wandering souls" <lan...@SCEMOCHISPAMMAflashmail.com> ha
scritto nel messaggio
news:L2a45.20062$Q7.5...@news-east.usenetserver.com...


 per Turbo C++ 3.0, in cui la linea suona cosģ:
L'asm del djgpp č orrendo, ma cmq credo che o usi $10 o usi 0x10 e non
$0x10.
Poi c'č una funzione tipo dpmi_simulate_real_mode_int (non mi ricordo il
nome esatto)
che prende come parametri le union dei registri
ciao

...
[cuttone]
Grazie a tutti
Lanugo


Allora vediamo...
L'int 10h č un interrupt del BIOS e serve per gestire tutte le routine che
rigurdano il
video, per esempio per chiamare il modo grafico VGA
320x200x256 devi mettere nel registro al il valore 13h:
mov     ax,0013h    ;<-----ah=00  al=13h
int       10h
Per selezionare le pagine attive dello schermo invece:
mov    ah,05 ;<------chiama la routine di selezione pagina
mov    al,....  ;<---in al ci va la pagina che vuoi selezionare
int    10h
---------------------------------
Per quanto riguarda l'istruzione
asm ("int $0x10"); devi toglire o $ o 0x, almeno nel borland-C++ sono due
modi
equivalenti per indicare un numero esadecimale, cioč: $10 e 0x10 e 10h sono
lo
stesso numero esadecimale.
Alla prossima.
Ciao ciao.
--
================================
       Bisogna saper scegliere in tempo,
         non arrivarci per contrarietą...
------------------------------------------------
           Seeman79 ==> ©D@vide®
              COGITO ERGO SUM!!!
================================
Newsgroup: it.comp.lang.c
Titolo: Aiuto.

Il seguente codice per k0 mi dá 5.6843418860808e-014° il che dovrebbe essere
errato, qualcuno puó aiutarmi?
include <stdio.h>
main()
{
 long double a;
 char c;
 while (scanf("%c%lg", &c, &a) != EOF)
 {
  if (c == 'k' || c == 'K')
  {
  printf("%40.14gø Rankine;\n", ((9 * (a - 273.15) / 5) + 32) + 459.67);
  }
 }
}

A volte i calcoli matematici in virgola mobile danno di questi
problemi; di esempi ce ne sono a bizzeffe.
Non credo che tu voglia la dimostrazione formale - ti prego, non
chiederla ... :-(  - posso dirti pero' che questo effetto e' dovuto
alle inevitabili approssimazioni del calcolo matematico in virgola
mobile (IEEE) e alle conversioni.
Non ti dico in dettaglio quale e' il problema, ma ti fornisco la
soluzione:
il calcolo che vuoi fare e' in realta' questo: 1.8*a
adottalo al posto della tua formula di conversione e tutto filera'
liscio, anzi eviterai le pesanti approssimazioni per valori di 'a'
fino a 76.
(Bisogna pur aiutarli questi poveri PC .... )
:-))

Newsgroup: it.comp.lang.c
Titolo: quanti bit occupa una variabile di tipo puntatore

Ciao. Sul quaderno degli appunti ho scritto che i puntatore occupano
sempre 16 bit, tutti.
Poi ho fatto un esempietto sul mio pc, ho definito:
    short int* ptr;
    double* pt;
eppoi ho eseguito le istruzioni
    printf("# bit utilizzati per rappresentare ptr = %d\n", 8 *
sizeof(ptr));
    printf("# bit utilizzati per rappresentare pt = %d\n", 8 *
sizeof(pt));
ottenendo come risultato
# bit utilizzati per rappresentare ptr = 32
# bit utilizzati per rappresentare pt = 32
Premere un tasto per continuare . . .
Dunque sommerso dai dubbi pongo la domanda a voi.
In generale, se x è una variabile di tipo puntatore, quanti bit occupa
x?
Grazie

 x?
Non c'e' una risposta "in generale". Dipende dal compilatore e 
dall'architettura.
La risposta che hai dato tu e' buona. Potresti considerare:
    8 * sizeof(void *)
visto che è garantito che (void *) puo' contenere un qualsiasi puntatore 
ai dati.
Potresti scegliere il piu' grande tra
     8*sizeof(void *)
e
     8*sizeof(int (*)())
per comprendere anche i puntatori a funzione.
Sulla mia macchina (WinXP con gcc) sono tutti e due a 32bit, ma 
puntatori a 64bit sono abbastanza comuni ormai.
Remo D

 x?
Dipende dall'architettura su cui lavori. Al momento i valori piů diffusi
sono 32 o 64 bit. 
-- 
-riko

 x?
Dipende dall'architettura del sistema.  Con l'evoluzione dei 
processori anche i puntatori si sono evoluti.  Per gli esempi 
riportati hai evidentemente usato un compilatore con puntatori a 32 
bit, in uso sui PC più recenti e che possono indirizzare fino a 4GB 
(2^32).  Tuttavia per le architetture più avanzate si usano già i 
puntatori a 64 bit anche se mi sembra che, per ora, non tutti vengono 
utilizzati (sarebbe un numero molto molto alto).
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >
Newsgroup: it.comp.lang.c
Titolo: Aiuto su lista!

Dato un puntatore L ad una lista di interi già costruita in memoria, devo
scrivere una funzione che mi sommi coppie di elementi successivi (1° con 2°,
3° con 4°,....) in un unico elemento e se la lista è composta da un numero
dispari di elementi devo eliminarne l'ultimo. Non devo creare una nuova
lista ma modificare quella presente in memoria.
Es.
L -> 4 -> -4 -> 12 -> 6 -> 22
mi diventerà:        L -> 0 -> 18
/*definizione lista*/
typedef struct atomo {
          int info;
          struct atomo *next;
       } tipo_atomo;
typedef tipo_atomo *tipo_lista;
/* funzione principale */
tipo_lista accorpa(tipo_lista L)
{
   tipo_lista temp;
   if(L!=NULL)
      if(L->next==NULL)
      {
         temp=L;
         L=NULL;
         free(temp);
       }
   else
   {
       temp=L;
       L->info= L->info + L->next->info;
       L->next=L->next->next;
       accorpa(L->next);
       free(temp);
    }
   return L;
}
Sapete dirmi quanti errori ho fatto?
Grazie mille.

Sapete dirmi quanti errori ho fatto?
Senti, i tuoi messaggi stanno cominciando ad essere piuttosto
fastidiosi.  Cerca di trovare tu stesso la soluzione ai tuoi errori.
Il modo migliore per imparare e' sperimentare.
Procurati un compilatore e fai le tue prove senza intasare il ng di
messaggi.
--
Walkie...@Libero.It (ICQ# 8143647)

 ha scritto nel messaggio
news:3b08b1a...@news.libero.it...


Newsgroup: it.comp.lang.c
Titolo: Porta parallela....

Cerco informazioni per realizzare un programma per acquisire dei dati per
mezzo della porta parallela del PC. Mi occorre tutto cio' che esiste sulle
porte parallele come librerie, esempi in C o assembler, caratteristiche
dell'hardware, ecc. Il tutto dovrebbe funzionare in ambiente Dos e/o Win32.
Infine qualcuno sa dirmi quali frequenze di campionamento potrei
raggiungere??
Ringrazio anticipatamente tutti coloro che mi risponderanno.....
Ciao a tutti BR66

raggiungere??
dipende dalla lunghezza del cavo, e se la usi in input o output. in
input devi multiplexare i bit, 4 alla volta, in uscita no.
se trovi le specifiche ECP o EPP forse puoi fare di meglio, io quando
mi servivano non le ho trovate.
con 4 bit alla volta fai fatica ad avere una frequenza di input
superiore ai 7/8 Khz.
per quanto riguarda l'OS, per queste cose il meglio e` il DOS, ci puoi
fare quello che vuoi, windows e` un pessimo sistema per applicazioni
real time, ed in ogni caso con win  dovresti scrivere un device driver
con un overhead non trascurabile.
--
[ranger, email: 
ran...@queen.it
]
ICQ# 6585343
http://members.tripod.com/%7Eranger_rg/

Newsgroup: it.comp.lang.c
Titolo: [?] Come si può fare...

Salve a tutti , vorrei sapere se c'è qualcuno che può dirmi come fare a
leggere
la porta COM1 e COM2 , da un programma in C , mi interessa , perchè devo
provare ad usare il mouse (anche se non è standard?) in un programma C.
Uso Djgpp.
Grazie
Ciao Roberto

provare ad usare il mouse (anche se non è standard?) in un programma C.
Se sei in ambiente DOS devi gestire l'interrupt 0x33 .
Newsgroup: it.comp.lang.c
Titolo: OT

Scusate, cosa vuole dire OT ?

 Scusate, cosa vuole dire OT ?
significa che il thread tratta un argomento non inerente il newsgroup in cui 
č stato inserito.
Esempio:
in un newsgroup del C, č OT se trovi un thread che parla di Visual Basic 

 Scusate, cosa vuole dire OT ?
Off Topic : cioe' fuori tema (del newsgroup).
In generale i messaggi OT non sono ben visti, per ovvi
motivi.
La prima cosa da fare prima di postare e' identificare
il gruppo giusto sul quale farlo. (Questo puo'
richiedere la lettura di un po' di lessaggi precedenti
(lurking) e/o del manifesto del gruppo, che indica esattamente
quali temi sono considerati in topic.
Mandare messaggi OT e' controproducente perche'
generi rumore e hai bassa probabilita' di avere risposte
giuste su gruppi sbagliati,
ciao,
g.

 in un newsgroup del C, è OT se trovi un thread che parla di Visual Basic
si, o piu' semplicemente OT significa Off-Topic.
Tommy

Newsgroup: it.comp.lang.c
Titolo: Non riesco ad usare la funzione random()

Salve! Sto cercando di usare la funzione random() che, da quanto ne
so, è implementata nella libreria standard del C (stdlib.c).
Eppure quando provo a compilare col Dev-C++ una cosa del tipo
a = random(20)+1 (in teoria dovrebbe generare un numero compreso tra 1
e 20) il Dev mi ritorna questo errore:  
"[Linker error] undefined reference to `random'"
Boh, strano anche perchè in teoria la funzione random è presente
nell'stdlib.h...o no?
Grazie per qualsiasi risposta!
Fr4nz

On Sun, 08 Dec 2002 14:08:18 +0100, Fr4nz <lfran...@NOSPAMngi.it>
wrote:

No random() non è ANSI C, la funzione ANSI C (il cui prototype è nella
stdlib.h) per la generazione di numeri pseudo-casuali è:
 int rand(void)
Che ritorna un numero pseudocasuale intero compreso tra 0 e RAND_MAX.
Dove RAND_MAX. è almeno 32767.
Augusto Pucci
http://www.neuraldaemon.com/pucci
Newsgroup: it.comp.lang.c
Titolo: EOF..

qualcuno può gentilmente chiarirmi che valore ha EOF???
grazie

 wrote in message
3oq7a.160716$YG2.4...@twister1.libero.it...


 qualcuno pu gentilmente chiarirmi che valore ha EOF???
Dipende dal sistema. Potrebbe ragionevolmente valere (int)-1... l'unica cosa 
che ti e' dato sapere a priori e' che NON puo' essere contenuto esattamente 
in un char (v. thread sulla getchar).
-- 
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."

 wrote in message
3oq7a.160716$YG2.4...@twister1.libero.it...


chiaro??
Se si usa !(EOF) si sta sbagliando e basta.
-- 
Andrea Laforgia
"640kb of memory should be enough for anyone." -- Bill Gates.

 --
su questo hai ragione, ho sbagliato perchč il mio intento era quello di
scrivere !feof(...) ma nella fretta ho commesso quell'errore... cmq continuo
a pensare che le altre risposte erano incomprensibili per qualcuno che č
alle prime armi con c (e qualcuno che chiede il significato di eof,
probabilmente lo č)

continuo a pensare che le altre risposte erano incomprensibili
Dunque vediamo:
"Dipende dal sistema operativo...
Comunque la costante EOF dovrebbe essere definita in "stdio.h""
[Miguel Angel Rodriguez]
Risposta che mi sembra piuttosto comprensibile, oltre che corretta.
"Dipende dal sistema. Potrebbe ragionevolmente valere (int)-1...
l'unica cosa che ti e' dato sapere a priori e' che NON puo' essere
contenuto esattamente in un char"
[Mox]
Risposta che mi sembra piuttosto comprensibile e altrettanto corretta.
Senza offesa, l'unica che ho trovato davvero incomprensibile, è la
tua.


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

Salve ragazzi ho un idea per la testa: vorrei fare un prg che simuli uno
stradario di una citta nel senso che io gli dico dove sono e dove vorrei
andare e lui mi trovi la strada migliore. le tecniche di ricerca le
conosco quelle non sono un problema.
vorrei un consiglio sulla rappresentazione delle informzioni io ho
pensato ad un grafo incui ogni nodo rappresenti un trocone di strada
privo di incroci (tipo via anastasio da nc1 a nc 45 ecc), allinterno
della struttura credo sia buona cosa conservare il punto di ingresso
dells strada riferito ad un ideale piano cartesiano, la lunghezza e
l'inclinazione in modo da poter calcolare il percorso totale e se ci
stiamo allontanando o avvicinando all'obbiettivo.
Voi che ne pensate? avete idee in proposito? ogni consiglio commento ecc
sarà bene accetto :)
--
#define NOME Filippo De Luca
#define E-MAIL 
dl.fi...@flashnet.it
//---
/* La vera conoscenza
   sta nel conoscere l'estensione
   della propria ignoranza*/
//------

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

come si mette un' icona a un programma?

iscriviti a un corso
Newsgroup: it.comp.lang.c
Titolo: vettore di float

dunque, questo programma dovrebbe leggere 8 numeri reali e sommare quelli
che hanno la parte intera reale.
#include<stdio.h>
#define dim 8
void f(float v[]){
int i;
float e=0;
for(i=0; i<dim; i++){
if(((int)v[i])==((int)v[dim]))
e = e + v[i];
}
printf("La somma è %f", e);
}
main ()
{
float V[dim];
int i=0;
for (i=0; i<dim; i++)
{
printf("Inserire un valore: ");
scanf("%f", &V[i]);
}
f(V);
return 0;
}
non riesco a capire perchè la somma (anche se non metto l'operatore di
casting) è sempre 0.0000000
grazie :)

Andrea wrote:

quando fai l'if nella funzione f() non puoi accedere all'elemento v[dim]
ovvero v[8]. I vettori hanno indici che partono da 0 quindi un vettore di 8
elementi va da v[0] a v[7]. v[8] in questo caso dovrebbe essere il valore
di i nel main() o comunque un valore non noto a priori.
Ciao
Luca

 ha scritto nel messaggio
news:TyiKb.228152$vO5.9...@twister1.libero.it...

grazie mille...
sono proprio un addormentato :)

Newsgroup: it.comp.lang.c
Titolo: funzioni e array bidimensionali

Ciao a tutti.
Come si fa a passare un array bidimensionale ad una funzione?
Se qualcuno mi scrive il prototipo della funzione mi fa un grande favore!
Ciao
    ZaX

ZaX wrote:

Dipende da che "tipo" di array a 2 dimensioni usi.
Per la trattazione completa 
http://www.eskimo.com/~scs/C-faq/s6.html
 (ci 
sono varie faq che ne parlano).
Il caso piu' semplice e' quando usi un array allocato dinamicamente di cui 
ti presento il caso piu' semplice e senza alcuna forma di controllo 
dell'errore per allocare una matrice dim1 * dim2:
    type ** matrix:
    array = malloc(dim1 * sizeof(type *));
    for (i = 0; i<dim1; i++)
        array[i] = malloc(sizeof(type) * dim2);
Dopo di che una qualunche funzione avra' bisogno di sapere solo l'indirizzo 
del puntatore /matrix/ e le dimensioni:
    void funzione (type ** matrix, int dim1, int dim2);
All'interno della funzione usi matrix tranquillamente con la sintassi per 
gli array (matrix[i][j]).
-- 
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."
Newsgroup: it.comp.lang.c
Titolo: analisi [OT]

Salve ragazzi,
è da un paio di settimane che mi sto dilettando con l'analisi come
introduzione allo studio più approfondito di c, e, incredibile a dirsi, mi
sta davvero piacendo!
Qualcuno saprebbe indicarmi tutorial, newsgroup, forum, risorse ecc.
riguardanti questo argomento?
Grazie
sSad

 Qualcuno saprebbe indicarmi tutorial, newsgroup, forum, risorse ecc.
Per quanto riguarda il newsgroup ci sei già. Per quanto riguarda il
materiale potresti prova su 
www.ldmsoft.it
, 
www.programmazione.it
, 
www.manuali.net
, 
interfree.programmazione.it
Ciao.

 ha scritto

www.nr.com
	trovi in versione elettronica il testo
		Numerical recipes in C: the art of scientific computing
ciao
Gianluca
-- 
================================================================================
TO REPLY
CHANGE 
NOS...@technologist.com
 IN ingv at 
technologist.com
"...Unix, MS-DOS, and Windows NT (also known as the 
    Good, the Bad, and the Ugly)."                     (by Matt Welsh)

 , 
www.programmazione.it
, 
www.manuali.net
, 
interfree.programmazione.it
Ti ringrazio,
li visito subito!
Grazie anche a ClusterB!
Ciao
sSad

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

Ciao a tutti!!!!
Ho creato un socket in c++ per fare in modo che un server riceva e invvi
messaggi ad un client. Il mio prooblema è che il messaggio del client è
costituito da un vettore di sette double che prima di essere inviato viene
convertito in 56 bytes di int da 8 bit. Tuttavia tramite la procedura
recvfrom il messaggio ricevuto viene depositato in un'area di memoria di
tipo char. come faccio a ricostruire e leggere il messaggio iniziale?

 in c++
Qui si parla di C, nel caso il nome del newsgroup non fosse chiaro.
Riassumendo: it.comp.os.linux.development
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */
Newsgroup: it.comp.lang.c
Titolo: Problema...

Mi sapete dire perchč quando il mio programma va ad eseguire un return
si blocca?
Puņ essere un problema di memoria?
Uso Borland 4.5 ho provato con Borland 5 ma da lo stesso problema.
Il prg lavora in ambiente DOS.
Che altro dirvi... quando si blocca windows mi chiude il prg e apre una
finestra scrivendo che il prg ha lanciato una eccezzione.!!!!
Aiuto!!!!!!!!

 Puņ essere un problema di memoria?
Potrebbe essere:
void f(void){
int array[10];
signed int i;
for (i = -500; i< 500; i++)
    array[i] = 0;
}
int main(){
f();
}
Anche questo potrebbe (e dovrebbe) bloccarsi o dare errori di vario tipo.
Ovvero: molto probabilmente accedi ad aree di memoria non valide, come ad
esempio l'indirizzo di ritorno da procedura sullo stack
--
Alessandro Monti

Può essere un problema di memoria?
E' difficile dirlo.
Bisognerebbe esaminare il codice sorgente.
--
Andrea Laforgia
andrea_...@bigfoot.com

 Mi sapete dire.......
Attento potresti aver  invaso qualche area di memoria.
--
Posted from 
mta10-acc.tin.it
 [212.216.176.41]
via Mailgate.ORG Server - 
http://www.mailgate.org

 Attento potresti aver  invaso qualche area di memoria.
Come potrei avere fatto? Come posso controllare?

La cosa piu' logica sarebbe fare il debug al programma e vedere dove dumpa;
Il dump te lo potrebbe dare non nella return della funzione,ma appena
rientratto nella funzione chiamante,in quanto potrebbe trovarsi aree di
memorie corrotte dalla funzione chiamata.
--
Posted from 
mta14-acc.tin.it
 [212.216.176.45]



Perche', nei limiti del possibile, non ci fai vedere un pezzo di
sorgente ?
--
Andrea Laforgia
andrea_...@bigfoot.com
Newsgroup: it.comp.lang.c
Titolo: A proposito di getchar() .......

Ecco un'altro piccolo problema in cui mi sono impantanato nel mio ultimo
programmino (devo dire che sono riuscito ad aggirarlo, ma non mi riesco a
spiegarmi il perchè di questo funzionamento):
Il programma richiede una immissione di una stringa dopo di chè stampa una
frase in uscita  e richiede un carattere dallo stdin.
Il problema è questo, sono necessari due getchar() di seguito per ottenere il
carattere giusto; ecco il codice:
 scanf("%s",word);        /*immetto la parola */
 .
 .
 printf("Parola non trovata\n");
 getchar();         /* Qui è il problema servono 2 getchar()*/
 q=getchar();

 q=getchar();
la caratteristica di scanf() e' quella di terminare la memorizzazione
dell'input quando incontra un carattere che non si addice al tipo di
formato specificato.
In questo caso il carattere in questione e' \n che resta nel buffer di
input.
Il primo getchar() pertanto preleva il \n dal buffer, svuotandolo. 
Al posto di scanf() usa sempre gets() o fgets() come nell'esempio che
ti riporto :
#include <stdio.h>
int main()
{
    char word [20], c ;
    fgets ( word, sizeof word, stdin ) ;
    c = getchar () ;
    return 0 ;
}


Quindi da quello che dici se uso scanf in questo modo evito di dover usare due
getchar:
scanf("%s\n",word);
Non so' se funzioni, ma con fscanf e' valido.
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own    

Non so' se funzioni, ma con fscanf e' valido.
Non funziona, ma poi fgets() offre un vantaggio essenziale : controlla
il numero di caratteri memorizzati nel vettore di caratteri.

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

Vorrei sapere se e' possibile passare come argomento sulla linea di
comando un intero o un altro tipo diverso da una stringa.
Grazie per le eventuali risposte. Ciao.
-- 
*******************************************************
  "C'e' un vecchio detto a riguardo delle reti che    
  recita: i problemi di banda possono essere risolti  
  con il denaro. I problemi di latenza sono piu' dif- 
  ficili poiche' la velocita' della luce e' una cos-  
  tante e non e' possibile corrompere Dio."           
 
                                     David Clark, MIT 
  Reply to 
bia...@maganet.net
 
  ICQ : 25991146
*******************************************************

 comando un intero o un altro tipo diverso da una stringa.
No, la funzione main prevede solo i seguenti parametri:
int main( int argc, char *argv[] );
e quindi solo stringhe in quanto il secondo parametro è appunto un array
di puntatori a carattere e quindi, praticamente, un array di stringhe.
Nel caso ti serva, potresti convertire le stringhe ricevute in interi
con la funzione atoi() o sscanf().
EMG

comando un intero o un altro tipo diverso da una stringa.
No, non e` possibile, ma e` facile tradurre le stringhe in
interi o che altro; guardati le chiamate standard strtod e
strtol, ad esempio.
Alex
Newsgroup: it.comp.lang.c
Titolo: Che mondo sarebbe senza malloc...

Ciao,
Prendiamo in esame un SO come linux. 
Ogni programma che lancio viene eseguito in modalita' protetta, percio' ogni
processo ha virtualmante a disposizione tutta la memoria. Questa memoria,
essendo eseguito il programma in modalita' protetta, e' solo di quel
processo.
Ora la mia domanda e' molto semplice : "Perche' dobbiamo utilizzare la
malloc per allocare memoria, se gia' abbiamo a disposizione l'intero spazio
di indirizzmento?"
Ma soprattutto, perche' se non la usiamo otteniamo un bel segmentation
fault? Come e' possibile che andiamo ad accedere ad un'aria di memoria
"vietata" se lo abbiamo uno spazio di indirizzmento virtuale tutto nostro?
-- 
SysAdm on 
cantina.students.cs.unibo.it
Undergraduate student of Computer Science 
http://caristudenti.cs.unibo.it/~celli
Key fingerprint = D8BD F3D0 00A5 9C96 4A07  DE62 2A4C EDE1 06AA E5BC

"vietata" se lo abbiamo uno spazio di indirizzmento virtuale tutto nostro?
Nulla vieta al programmatore di tentare di allocare/deallocare zone di
memoria riservate al kernel.
--
Andrea Laforgia
andrea_...@bigfoot.com

 memoria riservate al kernel.
Ma un processo in user space, come fa a vedere la memoria riservata al kernel?


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

 cifre...... provate e fatemi sapere

 di c=EOF....
Hai per caso definito c come char? c deve essere un int.
Maurizio.

 ha scritto nel messaggio
news:k7q68.5560$dd4.2...@twister1.libero.it...


 c=EOF...... ho
spero sia solo un errore di trascrizione, ma i test per uguale si fanno con
== cioe'
c==EOF
ciao
donCiccio

 ha scritto nel messaggio
news:fsB68.2527$nI1....@twister1.libero.it...


Forse non era una cattiva idea postare anche su questo ng il codice.
Comunque, da quanto leggo nel tuo messaggio in it.comp.lang.c++, il
tuo programma conteneva le seguenti istruzioni:
<CODE>
      while ((c = getchar()) != EOF)
           if (c >= '0' && c <= '9')
              ++ndigit[c - '0'];
           else if (c == ' ' || c == '\n' || c == '\t')
              ++nwhite;
           else
              ++nother;
</CODE>
Funziona perfettamente se immetti da tastiera il carattere speciale
EOF (Ctrl-Z su DOS/Windows, Ctrl-D su UNIX).
Se redirigi l'input da un file o da una pipe, EOF viene
incontrato alla fine del file o della pipe. Prova a eseguire il
programma cosi`:
    programma < input.txt
dove input.txt contiene i caratteri che vuoi leggere.
-- 
Danilo Piazzalunga
Linux Registered User #245762 at 
http://counter.li.org
mailto:
leo-...@ibero.it
Newsgroup: it.comp.lang.c
Titolo: Novizio

Vorrei imparare a programmare in c quale manuale mi consigliate di
usare calcolando che sono un novellino?
Che editor mi consigliate per programmare in c?
Grazie a tutti.

 Che editor mi consigliate per programmare in c?
Dipende.
Sotto Linux ci sono 2 scelte principali:
- usare un editor qualsiasi a seconda di cosa preferisci e gestire il gcc e 
  i vari tool da linea di comando. Io prediligo il VI, qualche eretico 
  Emacs, molti hanno parlato bene di SciTE. Tutto sommato anche nedit non 
  era male. Ce ne sono moltissimi, a seconda di cosa
- usare un IDE, per esempio Anjuta.
Sotto Windows in genere e' sempre meglio usare l'IDE che ti forniscono con
il compilatore che usi, visto che la shell non e' comoda da usare.
Io prediligevo l'LCC-Win32. Anche il DEV-C non e' male, soprattutto le
ultime versioni (l'ultima che ho visto mi pare fosse la 4.9qualcosa,
considerata development, ma abbastanza stabile e preferibile alla versione
stabile).
Questo parlando di strumenti free o open source.
Se vuoi spendere dei soldi c'e' il Visual C++.
-- 
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."

fai anche un giro qui...
http://www.dis.uniroma1.it/~liberato/struct/dispensa.shtml
e cerca su google.. la rete è piena di tutorial x inziare
come ditor sul sito della borland, sezione museo puoi scaricarti il C
2.0..... è un po' vecchio ma x imparare funziona!

   Emacs,
Blasfemo!!! Anatema su di te. Parlar male dell'unico editor che ha
piu' linee di codice di un S.O. (nonche' il mio preferito) :-)
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 piu' linee di codice di un S.O. (nonche' il mio preferito) :-)
"Emacs... carino, ma preferisco Linux: ha piu' programmi" :P
Tanto per dare qualche contributo in tema: se sei proprio agli inizi (mi
rivolgo a Giorginiello) meglio lasciar perdere le guerre sante e rivolgerti
a qualche editor con meno funzioni :)


 a qualche editor con meno funzioni :)
oppure, per parafrasare: meglio un editor che per lo *meno funzioni* :)
hihihi
scusate, non ho resistito, colpa del caldo e delle finte avvisaglie 
di pioggia
-- 
mattia


 hihihi
Ora sono veramente offeso e depresso...
M-x doctor
I am the psychotherapist.  Please, describe your problems.  Each time
you are finished talking, type RET twice.
Mox e Dongili mi stanno prendendo per culo
Why do you say mox e dongili mi stanno prendendo per culo?
...
:-)
C:\>iao Angelo



...
bye
My secretary will send you a bill.
RLOL
Ciao,
Ema

 ...
LOL :)
-- 
mattia


 sapere il titolo.
Deitel & Deitel, C corso completo di programmazione, Apogeo
Newsgroup: it.comp.lang.c
Titolo: Scrittura di Dll in C/C++ per uso con VB

Devo scrivere un programma che usa molti calcoli matematici. Solitamente
programmo in VB5, ma, a causa della sua lentezza, volevo creare una Dll in
C/C++ contenente tutte le funzioni più "pesanti".
Purtroppo i miei primi tentativi sono miseramente falliti. Ho già chiesto
aiuto al ng VB purtroppo senza successo :-(
Premetto che uso MS VisualC++ 4.0
Il codice della Dll è il seguente:
#define DllExport extern "C"__declspec( dllexport )
DllExport double Power (double aNum)
{
    return aNum*aNum;
}
Il codice in VB è invece il seguente:
Private Declare Function Power Lib "testDll.dll" (ByVal aNum As Double) As
Double
Private Sub Command1_Click()
    Dim aNum As Double
    aNum = 2
    Label1 = mioPower(aNum)
End Sub
Quando richiamo la funzione Power il VB ritorna un errore '49', cioè "Bad
DLL calling convention".
Il problema è con il passaggio del parametro perchè se scrivo la funzione in
questo modo (in C)
DllExport double Power (void)
{
    return 2.54;  /* un numero a caso di tipo double */
}
funziona tutto perfettamente.
Ringrazio in anticipo chi vorrà aiutarmi
marco...@goldnet.it

 ha scritto nel messaggio
news:9609701...@spyke.goldnet.it...


DllExport double __stdcall Power (double aNum)



Salve, sapete darmi lumi su come trasformare una DLL API in una DLL ActiveX
ossia registrabile nel sistema ed utilizzabile mediante riferimenti in VB?
Grazie sin da ora.
Emanuele Manco

 writes:

Questo messaggio non riguarda tanto i linguaggi C++ o C, quanto
piuttosto problematiche che sono caratteristiche di un particolare
compilatore e di un particolare ambiente operativo.
Per questo motivo il messaggio e' off-topic in questi gruppi, di cui
ti prego di leggere il charter; puoi avere maggior fortuna chiedendo
su it.comp.programmare.win32 .
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
Newsgroup: it.comp.lang.c
Titolo: L'ignoto oltre i primi 640Kb

Vi spiego brevemente il mio classico problema:
devo compilare un programma in modalità dos overlay o standard.
Premetto che tutto il mio programma è basato su allocamento dinamico tramite
malloc e calloc.
Come si fa ad allocare memoria oltre i 640 kb convenzionali?
Cioè: se dovessi allocare dinamicamente una struttura dati molto grossa per
analisi prestazionali, come dovrei fare visto che riesco ad usare solo i
primi 640 kb?
Inoltre, come si fa con funzioni c a sapere quanta è la memoria libera,
quanta ne occupa un determinato driver (nel mio caso: egavga.bgi).
Ringrazio anticipatamente tutti per eventuali risposte.
giovann...@libero.it

 Come si fa ad allocare memoria oltre i 640 kb convenzionali?
Non puoi. Purtroppo il DOS vede solo quelli.
Parli di overlay: quelli risolvono in parte il problema, ma devi attenerti a
quanto ti dice il compilatore, inoltre mi pare che non aiti a usare
strutture più grandi di 640K. A dire il vero credo che nella situazione che
descrivi non potrai allocare più di 64K per volta...
--
Alessandro Monti

Non puoi. Purtroppo il DOS vede solo quelli.
Certo che si puo' ! Mai sentito parlare di EMM ?
ovviamente "sorpassando" il dos e facendo uso di gestori della memoria
estesa.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------

 Come si fa ad allocare memoria oltre i 640 kb convenzionali?
Quella a 640 Kb è una limitazione che risale ai vecchi processori fino
al 286. Dal 386 in poi basta utilizzare compilatori adeguati (come il
gratuito DJGPP che trovi in rete all'indirizzo 
http://www.delorie.com/
)
per riuscire ad allocare tutta la memoria disponibile ed oltre.
Altrimenti devi ripiegare su funzioni non standard come le
farmalloc()/farfree() e a modificatori non standard per i puntatori come
huge.
EMG

Beh, sotto DOS puoi raggiungere un indirizzo qualsiasi con un puntatore di
questo tipo:
    typedef unsigned char far *t_memptr;
    t_memptr ptr = (t_memptr) 0xB0000000;
dovrebbe funzionare, se ben ricordo, ma non ho sottomano un compilatore DOS
per fare una prova (ci vorrebbe un compilatore a 16bit)...

dimenticavo che funziona solo per i primi 1024K...
se vuoi usare la memoria oltre il primo Mega devi usare un gestore EMS o
XMS, o magari ti installi il DJGPP che ti fa accedere a tutta la memoria che
vuoi, con accesso flat...

huge.
Le funzioni in oggetto non vanno oltre il 1 MB .
Serve un gestore di memoria estesa .

 estesa.
Si parlava di DOS "tradizionale", e io ho interpretato proprio cosě: sotto
DOS.
Credo di conoscere benino EMS e EMM, comunque, e se mi mancassero
informazioni ho tenuto da parte un bel manualetto...
Il problema, anche cosě, perň rimane: non si puň allocare (in C perlomeno)
sotto DOS strutture piů grandi di 64K, nč entro i 640K nč oltre, che io mi
ricordi. Se anche mi sbagliassi, comunque non si possono allocare, per dire
2 Mb con un colpo solo, a meno di riscriversi il codice della malloc o di
usare librerie "potenti".
--
Alessandro Monti

ricordi.
Andiamo ! Non c'entra nulla con quanto si sta dicendo !...
