mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: ! Alberi binari ?!?

Salve,
Ho capito bene, credo, gli alberi binari di ricerca ed ho capito come
cancellare un nodo: se non ha figli, se ne ha 1 o se ne ha 2.
Quello che non ho capito e' invece come cancellare un nodo in un albero
binario NON di ricerca nei tre casi.
In generale non ho capito proprio l'albero binario, i numeri sono posti a
caso, seguono un certo schema ???
Gazie
Ricky



Come  acaso ??? Che a caso...in generale su un albero binario se vuoi
inserire dei numeri ad esempio i valori minori di quello di un nodo
vanno nel suo sottoalbero figlio di sinistra..mentre quelli maggiori
in quello di destra.
Per quanto riguarda al visulaizzazione dei dati in un albero (drtta
visita dell'albero) puoi procedere in tre modi :
in ordine (nodo sinsitro - radice - nodo destro)
postordine (nodo sx - -nodo dx - radice)
preordine (radice - nodo sx - nodo dx)
Augusto Pucci
Webmaster di Prospektiva On-line
http://www.prospektiva.it

preordine (radice - nodo sx - nodo dx)
Beh, inserire i minori nel sottoalbero di sinistra ed i maggiori in quello
di destra, significa creare un albero binario di ricerca, non un semplice
albero binario.
Io chiedo se un albero binario ha i numeri messi senza schema preciso o se
segue un'altro schema.
Per quanto riguarda la visualizzazione, di cui dai esempi ricorsivi, non ho
mai avuto problemi, li ho invece per cancellare un nodo di un albero
binario, non di ricerca, con una funzione ricorsiva del genere:
void DeleteNode(root,8);
Questa funzione dovrebbe cancellare il nodo con valore 8.
Ecco che quindi ricorsivamente controllo l'albero, fino a trovare il valore
.
void DeleteNode(struct Btree* p, int n)
{
        if((p!=NULL)&&(p->val!=n)){
                DeleteNode(p->left,n);
                DeleteNode(p->right,n);
        }
        if(p->val==n){
                /* parte per cancellare il nodo ..... */
                /* questa e' la parte che mi serve */
        }
}
Ci sono 3 casi, una volta trovato il valore, il nodo ha 2,1 o 0 figli, in
questi casi ci si comporta diversamente.
L'unica cosa in comune e' che il padre del nodo in questionde deve in
qualche modo essere informato e contenere il valore NULL al posto del
puntatore a tale nodo. Avendo la struttura solo i puntatori left e right, e
non quello prev, come faccio a sapere quale e' il padre del nodo in
questione ???
Tieni conto che mi serve ricorsiva e che segua il prototipo di funzione
dato. NON mi interessa una funzione del genere :
void DeleteNode(root,prev,8);
Ti ringrazio tantissimo per aver risposto alla mia domanda, spero che ora ti
ho chiarito meglio il problema mi risponderai ancora.
Ricky

Questa funzione dovrebbe cancellare il nodo con valore 8.
Ed avrebbe un comportamento ambiguo perche' in un albero binario senza
alcuna relazione d'ordine impostata, vi potrebbero essere 20000 nodi
con valore 8 disposti a caso : quale scegli ?
Newsgroup: it.comp.lang.c
Titolo: Funzione ricorsiva

..ciao a tutti..ho un problema..e' da un po' (poco) di tempo
che mi diletto a programmare in C..
Nei miei studi sono giunto alle funzioni e in modo particolare
alla possibilita' di usare la RICORSIVITA'..
ed e' proprio qui che ho trovato un ostacolo: c'e' questo
programmino qui sotto che stampa una riga al contrario
facendo uso della ricorsivita'; quello che nn riesco a fare
e' scrivere un programmino che faccia la stessa cosa
senza l'uso della ricorsivita', scrivendolo quindi solo in
maniera iterativa:
/* Stampa una riga al contrario */
#include <stdio.h>
int main(void)
{
   printf("Input a line: ");
   wrt_it();
   printf("\n\n");
   return 0;
}
void wrt_it(void)
{
   int c;
 
   if ((c = getchar()) != '\n')
       wrt_it();
   putchar(c);
}
Secondo l'autore del libro, riscirvere il programma in modo
che funzioni iterativamente e' facile..ma io non ci riesco.
Qualcuno puo' aiutarmi?..GRAZIE MILLE
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Qualcuno puo' aiutarmi?..GRAZIE MILLE
Per curiosita', chi e' l'autore del libro a cui ti riferisci?
-- 
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."

..innanzitutto grazie x la risposta..cmq il libro
si intitola "Didattica e programmazione C" della McGraw-Hill..
..ciao e grazie ancora...

Newsgroup: it.comp.lang.c
Titolo: conversione da numeri a testo

Ciao,
    sono Paolo e sono nuovo del NG. Qualcuno mi sa dire come fare per
convertire un numero in lettere?
Per esempio
2 ->Due
1538 -> Millecinquecentotrentotto
12.50->Dodici virgola cinquanta
Credo non sia una cosa cosi' banale, se qualcuno sa darmi un'aiuto...ne
sarei grato!
Ciao
Paolo


Beh, e' banale, ma lungo. Nel senso che dovrai scriverti un algoritmo 
che consideri le varie bizzarrie della lingua italiana in queste 
traduzioni. Credo, ad es., che un libro estero per imparare l'italiano 
sarebbe utile per capire come effettuare meccanicamente la 
trasformazione. Cerca un po' su internet se trovi qualcosa di gia' fatto 
(San Google), oppure arrovellati ;)
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Linux registered user 299762 @ Linux registered machine 213003

 sarei grato!
No, infatti. Per prima cosa, ti suggerirei di non badare troppo alla memoria
e di costruirti un bel dizionario di tutti i numeri da 1 a 999:
	struct
	{
		long Numero;
		const char * Parola;
	}
	Dizionario [] =
	{
		{ 1, "uno" },
		{ 2, "due" },
		...
		{ 998, "novecentonovantotto" },
		{ 999, "novecentonovantanove" },
	};
Se sei messo male con la memoria, puoi ovviamente sostituire questo
dizionario con una funzione che generi le parole algoritmicamente. In tal
caso, ti toccherà scervellarti con i casi come "trentotto" dove sparisce la
vocale finale di "trenta", ecc. E non riuscirai a estendere facilmente
l'algoritmo ad altre lingue solo riscrivendo il dizionario.
Seconda cosa, datti un limite superiore. Direi che 1000 miliardi va più che
bene, visto che è molto più di quanto possa stare in un unsigned long.
Terza cosa, il numero 0 è un caso particolare che, ovviamente, si traduce
"zero".
Quarta cosa, spezza il numero in quattro tronconi di tre cifre ognuna e
tratta ogni troncone come segue:
- Il primo troncone, si traduce con la corrispondente la parola del
dizionario più " miliardi e " (tranne l'uno che è "un miliardo e " e lo
zero, che è "").
- Il secondo troncone si traduce con la parola del dizionario più " milioni
e " (tranne l'uno che è "un milione e " e lo zero, che è "").
- Il secondo troncone si traduce con la parola del dizionario più "mila"
(tranne l'uno che è "mille" e lo zero, che è "").
- Il quarto troncone si traduce con la sola parola del dizionario (tranne lo
zero che è "").
Quinta cosa, non far sapere a quelli di it.cultura.italiano che ti ho dato
un algoritmo difettoso che non supporta l'accento di "trentatré"....
--
Cingar
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/
Newsgroup: it.comp.lang.c
Titolo: Filtro di pacchetti TCP/IP

Salve a tutti, sono intenzionato ad implementare un filtro di
pacchetti utilizzando le librerie libpcap.
Il mio problema è proprio quello di non conoscere la teorie relativa a
questo tipo di filtri.
Avevo ipotizzato di utilizzare un sistema fuzzy in modo da rendere
tutto automatico.
Qualcuno di Voi, potrebbe suggerirmi qualcosa ?


boh, io leggerei il pacchetto e poi lo parserei. o in alternativa
inizio gia' a parsare il pacchetto mentre lo leggo.
forse il primo e' meglio, perche' si puo' parallelizzare la cosa.
se hai voglia puoi prendere i sorgenti di ethereal...ah no ha cambiato
nome...insomma lui...e guardare come fa.
Ciao Jack

 wrote:

Con libpcap puoi fare solamente analisi. Se intendi applicare filtri
come il dropping o il redirecting di un pacchetto, le attività tipiche
di un firewall, insomma, libpcap non fa per te.

Newsgroup: it.comp.lang.c
Titolo: quesito urgente

Ciao a tutti !
scrivo in c su unix , ho 2 server unix che devo tenere allineati .
il mio programma crea un file vox sul primo server e devo copiarlo nella
stessa directory sul server2 .
cosa posso muovermi ?
NB Non posso usare le cshell unix .
Ciao e grazie a chi risponde!

se il file .rhosts e' opportunamente configurato potresti provare con:
system ( "rcp <file.vox>  <host2:/path/NomeFile>");
Non garantisco nulla!
Alle brutte dovresti crearti un socket e trasferirti il file con un tuo ftp
personale.
Ivan Molella
--
Posted from 
mta09-acc.tin.it
 [212.216.176.40]
via Mailgate.ORG Server - 
http://www.mailgate.org
Newsgroup: it.comp.lang.c
Titolo: malloc e calloc

Ho un grosso problema con malloc e calloc. Ho la red hat 9.0 e a volte
quando faccio un malloc o un calloc (considerando che la memoria non e'
esaurita) si blocca il programma e non mi ritorna piu' dalla chiamata a
queste routine.
Per intenderci il mio programma crea delle strutture dati in base a dei file
di input. Con alcuni file di input va con altri si blocca. Il fatto e' che
non  mi ritorna NULL , am proprio si blocca come in ciclo indefinito.
CHe e'? Come posso capire da che dipende?
Grazie


Sei sicuro che il programma si blocchi proprio durante l'esecuzione di 
malloc() e/o calloc()? Non potrebbe esserci un bug nel tuo codice? Dico 
questo perche' l'insorgere del 'blocco' sembra dipendere, a quanto dici, 
dall'input del programma.
Riesci a postare un piccolo frammento di codice che generi questo problema?
-- 
Enrico 'Trippo' Porreca

 ha scritto nel messaggio
news:3F5A32AF...@lombardiacom.it...

magari con alcuni file troppo grossi cerca di allocare un blocco di memoria
troppo grosso che manda in panne il pc, o lo fa lavorare per molto tempo ed
a lui pare bloccato ???
ciao

Come posso capire da che dipende?
Imposta un banale log su file.  Scrivi un messaggio prima della
malloc() e un messaggio dopo la malloc().  Se nel file di log riesci a
leggere solo il messaggio prima della malloc() vuol dire che il
problema č nell'allocazione, se riesci a leggere entrambi i messaggi,
allora vuol dire che la malloc() riesce e il problema č altrove.  
Ricordati di eseguire una fflush() dopo ogni scrittura su file.

 a lui pare bloccato ???
secondo me č piu' facile che vada a scrivere (per esempio) in una stringa in
una posizione che non ha allocato e il programma restituisce l'errore sulla
malloc, sebbene il casino l'hai fatto prima....
(m'č gia' successo)
Newsgroup: it.comp.lang.c
Titolo: HELP HELP HELP

Salve a tutti devo dirvi che sono disperato lunedě 26 ho l'esame di
fondamenti di informatica e devo fare C
Ho studiato il amnuale ma non ho le idee chiare.
Gli esami si svolgono principalmente su liste lineari da ordinare o cose
del genere e sulle matrici.
Datemi delle dritte mi faranno programmare con vi.
Vi prego aiutatemi.

 ha scritto nel messaggio
news:3953AF3A...@intercam.it...

Una cosa cosě non l'avevo mai sentita...comunque
CONSIGLIO:
Salta l'appello e ristudia tutto d'accapo!
Non esistono dritte sufficienti a farti passare un esame universitario se tu
non ci hai capito molto!
Newsgroup: it.comp.lang.c
Titolo: operatore matematico

Sono una novellina vorrei sapere perchè se scrivo:
x = 10;
y = x ++;
il valore di x è 11 e quello di y è 10.
So che la domanda è banale ma sono davvero una principiante scusate.
Mandatemi un e-mail grazie.

 il valore di x è 11 e quello di y è 10.
perchè l'operatore ++ messo dopo la variabile opera dopo aver calcolato
l'espressione, se scrivi ++x invece anche y sarà 11, cioè:
y=x++ equivale a:
y=x;
x=x+1;
mentre y=++x equivale a:
x=x+1;
y=x;
ciao ciao
Marco
--
Marco Coppo
University Of Sheffield
FAQ di it.comp.lang.c:
http://www.programmazione.it/linguaggi/c/itcomplangc.htm

 il valore di x è 11 e quello di y è 10.
Perché l'operatore ++ messo dopo la variabile significa che prima ne
viene preso il valore (10 e assegnato ad y) e poi viene incrementata (x
diventa 11). Se avessi utilizzato ++x allora sia x che y varrebbero 11.
EMG




diventa 11). Se avessi utilizzato ++x allora sia x che y varrebbero 11.
Quello che hai detto e' giustissimo pero' non mi quadra :-((
Non dovrebbe prima calcolare l'rvalue e poi passare il valore ottenuto
all'lvalue ? Oltre a tutto l'operatore ++ ha sempre la stessa
priorita' sia che venga usato come preincremento che come
postincremento ed e' una priorita' molto piu' alta di quella
dell'uguale. E poi, anche se avesse una priorita' piu' bassa dovrebbe
essere possibile alzarla usando le parentesi y=(x++) cosa che in
effetti non succede.
ciao

 effetti non succede.
Non è questione di priorità ma di come funzionano quegli operatori.
EMG

y = ++x;
equivale a :
x = 10 ;
x = x + 1 ;
y = x ;
++ come PRE-incremento.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------------
"There is nothing better for understanding a kangaroo
 than seeing it jump." [D.Grune, C.J.H. Jacobs]

effetti non succede.
Succede, invece. Vedi sopra.
Il risultato di (x++) e' equivalente al risultato di x++, cioe' x, non
x+1.

Newsgroup: it.comp.lang.c
Titolo: help scelta ambiente di sviluppo e compilatore C per win

salve a tutti,
sono un neofita della programmazione C.
devo realizzare un po di programmi in C (no c++) e fare un po di
pratica
vorrei un consiglio su quale compilatore/ambiente di sviluppo
utilizzare
quello che devo fare è molto semplice:
librerie in C da trasportare poi su microcotrollori (quindi semplici e
che accedono alle librerie standard sulle stringhe e poco più).
devo creare il programma di test (spesso si tratta di operazioni sulle
stringhe) e vederne il risultato in una finestra.
vorrei avere un ambiente di sviluppo che non mi costringa ad imparare
ad usare un file di make; mi piacerebbe avere qualcosa di rapido (la
velocità non è fondamentale) del tipo ...scrivo il programma inserisco
i dati e lancio RUN e vedo il risultato.
l'altra cosa importante per me è la syntax highlight e un controllo
sugli errori sintattattici (es. dimanticato un ;  .....).
per me l'ambiente può essere anche DOS (ma non mi sembra che il che ho
provato turboC abbia syntaxhighlight).
utilizzo un pc con winXPpro, ho provato ad installare il
borlandC++Builder ma devo dire che forse per me è troppo; Ma si può
programmare in C utilizzando il C++ borland? come? (basta qualche
esempio del tipo main () printf("ciao\n\r"); e vedere il risultato
sullo schermo} poi faccio da solo :-)
mi potete aiutare con qualche consiglio sull'ambiente di sviluppo da
utilizzare con le caratteritiche richieste?
grazie in anticipo

 utilizzare
questo per esempio č un ide completo: 
http://www.bloodshed.net/dev/devcpp.html
poi di compilatori ce n'č a iosa :)
http://www.thefreecountry.com/compilers/cpp.shtml
ciao.

ciao,
   prova a cercare djgpp, è il porting del compilatore GCC su windows... 
inoltre puoi usare come ambiente di sviluppo rhide...
good luck,
   Andrea
--

Newsgroup: it.comp.lang.c
Titolo: (OT) assembler

Scusate ma non avevo altra idea di dove postare:
Non c'è un newsgroup italiano di programmazione in assembler?
--
________________________________
Togliete NoSpaM per rispondermi
bye Brain

Non c'è un newsgroup italiano di programmazione in assembler?
No, ma se leggi le istruzioni relative alla Richiesta Formale di
Discussione e alla Call For Votes sul sito del Gruppo di Coordinamento
NEWS-IT, puoi trovare abbastanza informazioni per proporlo come nuovo
ng.
--
Andrea Laforgia        (
andrea_...@bigfoot.com
)
----------------------------------------------------
Windows98 is a trademark of Topo Gigio Corporation.
Newsgroup: it.comp.lang.c
Titolo: Compilatore C per Windows con librerie 64 bit

Buongiorno a tutti,
mi sono installato Eclipse per C/C++ e MinGW. Solo che non ci sono le librerie a 64 bit. Qualcuno sa come si fa ad avere anche le librerie 64 bit?
 
Grazie,
Vitalij


 
Ciao, trovi GCC precompilato a 64 bit a questo indirizzo:
http://sourceforge.net/projects/osb/files/gcc/4.9/x64/testing/
 
 
Ti consiglio però di scaricare l'ultimo della serie 4.9.2, ovvero:
http://sourceforge.net/projects/osb/files/gcc/4.9/x64/testing/gcc-4.9-win64_4.9.2-20141029.7z/download
 
 
in quanto i pacchetti più recenti sono dei nighty-build presi
direttamente dai repository quasi ogni giorno e in teoria non
sono molto stabili, anche se usandoli non ho riscontrato malfunzionamenti
apparenti. Non farti ingannare dalla parola "testing" del link alla
4.9.2, essendo l'ultima compilazione di quel branch è la più stabile.
 
Credo che per usarla con Eclipse devi copiare il contenuto del pacchetto
nella solita cartella MinGW che hai già (ovvero le cartelle "bin", 
"include",
"lib",.. devono stare direttamente sotto MinGW), e possibilmente sistemare
la variabile PATH di sistema, oppure ti crei direttamente un file 
gccvars.bat
in C:\MinGW come ho fatto io, con questo contenuto:
 
@echo off
set PATH=%PATH%;%~dp0bin
set CPATH=%~dp0include
set LIBRARY_PATH=%~dp0lib
gcc --version
@echo on
 
e lo associ a una shell: 
http://i58.tinypic.com/2h5mdev.png
 
 
la stringa completa in Target è:
C:\Windows\System32\cmd.exe /A /Q /K C:\MinGW\gccvars.bat
 
-- 
Vincenzo Mercuri


Grazie mille Vincenzo!
 
Vitalij

 Ti consiglio però di scaricare l'ultimo della serie 4.9.2, ovvero:
 
Questo dettaglio mi fa venire in mente una cosa: poco tempo fa Torvalds 
parlò di "new version of GCC terminally broken" per una serie di bug del 
compilatore.
Di che versione parlava?
Nella 4.9.2 l'hanno sistemato?
 
Ho dato un'occhiata ai changelog di GCC ma non ho visto nessun "fixed 
the bug Torvalds was complaining of..." :-)


Era solo una serie di headlines che ingigantivano la cosa in maniera del
tutto arbitraria.
Torvalds aveva trovato un bug (abbastanza grave) su una versione del gcc
(nemmeno l'ultima) e aveva scritto incazzato al team di sviluppo che, preso
nota del bug report, ha sistemato subito facendo un backport di una patch
che già avevano.
Scritto così però non ci potevano fare una articolo..
 
Ciao!

Newsgroup: it.comp.lang.c
Titolo: Funzionamento PCANYWHERE parte 2

Adesso che ho ricevuto una risposta (grazie Alessandro),vorrei chiedere come faccio ad inviare e ricevere un'immagine tramite il protocollo TCP/IP?
Avete codice di esempio,o qualche indirizzo dove trovarlo?
Grazie anticipatamente...
--
TiscaliFreeNet, libero accesso ad Internet.
http://www.tiscalinet.it
--
Posted from 
twingo.tiscalinet.it
 [195.130.224.85] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 wrote in message
39143759...@twingo.tiscalinet.it...


Perche' non dai un'occhiata a VNC? Fa quello che fa pc anywhere, ma e'
gratuito, e mi sembra che anche i sorgenti siano scaricabili gratis.
http://www.uk.research.att.com/vnc/
Newsgroup: it.comp.lang.c
Titolo: consiglio libro

Programmo da un bel po' con java ed ora mi appresto ad iniziare il c.
Potreste consigliarmi un libro ben fatto in italiano o in inglese che 
sia? Esiste qualcosa da scaricare gratuitamente su internet ?
vi ringrazio

 sia? Esiste qualcosa da scaricare gratuitamente su internet ?
Prova l'ottimo "Thinking in Java 3rd Edition", lo trovi
facilmente tramite Google, altrimenti puoi provare con
il "Java Tutorial" (versione scaricabile) dal sito della Sun.
PS: Parente di Nicola Fusco?;)
--
// C Ya!
// Qualcuno ha gia' risposto alla tua domanda:
// 
http://www.google.com/advanced_group_search?hl=it
// ** Cut "DO NOT DISTURB" to reply privately. **

 Prova l'ottimo "Thinking in Java 3rd Edition", lo trovi
Chiedo umilmente scusa... si vede che non reggo bene alle
ore tarde...:)


Ummmhhh Thinking in Java è bello, ma non credo sia utile per imparare il 
c :P


Fusco Francesco ha scritto:

Prova con il Deitel & Deitel(sono gli autori)
editrice apogeo.

Fusco Francesco wrote:

Se sai gia' qualcosa di programmazione, puoi provare direttamente dalla 
bibbia: 
Kernighan & Ritchie
"Linguaggio C - Ansi C" - seconda edizione
Jackons Libri
A cui devi apportare alcune piccole correzioni tratte da questo url:
http://cm.bell-labs.com/cm/cs/cbook/2ediffs.html
-- 
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."

Naetius stai proprio in un altro pianeta.
Secondo me dovresti smetterla di dire cazz....
Ciao brutto spione.

>>>>>>>>>>>>>>>>>>>>
Scusate se mi intrufolo ma essendo alle prime armi ed avendo la bibbia sopra
nominata, che cosa mi consigliereste dal momento che ogni tanto non capisco
bene la bibbia?

 bene la bibbia?
il Deitel e Deitel dicono sia ottimo
-- 
Rhymes (rhy...@NOSPAMmyself.com)
linux registered user #219707
linux registered machine #172395
Newsgroup: it.comp.lang.c
Titolo: [forse un pò OT...] Domande sull'algoritmo di Huffman

Salve a tutti.
Ho visto un pň come si implementa l'algoritmo di Huffman (tutti gli alberi e
cotillon...), ma una domanda mi č sorta spontanea: una volta che ho
codificato il file in una sfilza di "1" e "0" che non finisce piů dei quali
magari i primi 2 sono un carattere, i successivi quattro un altro e cosě
via, come faccio a scrivere/leggere questa sequenza? Come si fa a scrivere
solo 2 o 3 bit per volta? Io conosco le funzioni read/write, che leggono e
scrivono informazioni a gruppi di byte; allora come si fa?
Poi, secondo voi l'algoritmo di Huffman puň essere definito un processo
stocastico? Se si perchč?
Ciao e grazie,
Fabio

 stocastico? Se si perchč?
Dato uno spazio di probabilita' ed un insieme T,
un processo aleatorio x(omega,t) e' definito in modo tale che
se fisso t in T ho la variabile aleatoria x(omega), mantre se fisso
omega ho il segnale determinato (o realizzazione) x(t).
Sia ora S uno spazio di probabilita' discreto, di cui e' dato
l'insieme dei possibili valori (i possibili 256 bytes) e la
loro descrizione statistica completa (le loro occorrenze, se questo
puo' aiutare a capire). Sia t il tempo (istanti discreti, tanto per
semplificare), allora una sorgente di simboli e' un processo
aleatorio, tale per cui all'istante t fornisce il simbolo x con
probabilita' p_x <=1.
L'algoritmo di Huffman per la compressione e' una trasformazione
istantanea dei simboli della sorgente, tale per cui "i simboli
piu' frequenti hanno meno bits".
Quindi l'algoritmo di Huffman e' un codificatore e non un processo
aleatorio (o stocastico).
--== Sent via Deja.com 
http://www.deja.com/
 ==--
---Share what you know. Learn what you don't.---

stocastico? Se si perchč?
L'algoritmo di Huffman ha ben poco di legato alla probabilita'.
Newsgroup: it.comp.lang.c
Titolo: malloc

 (ora non ricordo esattamente).
Lo standard dice che malloc non puo allocare piu' di 64kbyte di dati, qualunque
sistema si usi.
Ivan Molella

 sistema si usi.
Ho capito sei entrato in tema di carnevale. :-)
EMG

 wrote:
:> Salve,
:>   stavo scrivendo un programma matematico in C e siccome faccio uso di
:> vettori abbastanza grandi ma non noti a priori, uso malloc.
:> Il mio problema e' che piu' di un certo tot di elementi (si parla
:> dell'ordine di 20000 float) non posso "allocarli" (manca memoria,
: suppongo,
:> dato che malloc ritorna NULL).
: Sempre su consiglio di questo ng, ho risolto il problema usando il
: compilatore djgpp che puoi trovare a:
: 
http://www.delorie.com/djgpp/
Una cosa un po' arch-related, ma mi pare molto interessante.
Quando c'e' al necessita di utilizzare quantita' veramente
consistenti di memoria, e magari non si conosce la dimensione a priori
e le performance sono un argomento secondario c'e' la possibilita'
di mappare un file in memoria (su Unix, non so su ambienti diversi).
ciao,
antirez
-- 
Salvatore Sanfilippo, Open Source Developer, Linuxcare Italia spa
+39.049.8024648
 tel, 
+39.049.8036484
 fax
ant...@linuxcare.com
, 
http://www.linuxcare.com/
Linuxcare. Support for the revolution.

 sistema si usi.
Puoi citare il capitoletto, per favore?  Non riesco proprio a trovarla,
questa.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

 sistema si usi.
Quale standard, di grazia?
--
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: ciclo for e \n..

Un saluto a tutto il NG
Da poco tempo mi occupo di linguaggio C.
Per fare un po' di esercizio volevo creare un programma che conti da (int
a) fino a 30 
e mi stampi i numeri sulla stessa riga andando a capo ogni (int b) numeri.
Pensavo una cosa tipo:
#include <stdio.h>
/*	*/
   int main()
   {
      int a;
      int c;
      int cont=0;
      do
      {
         int b=0;
         printf("\ninserisci valore da incrementare:(da 0 a 30)\n");
         scanf("%d",&a);
         printf("\nquanti valori stampati per riga?\n");
         scanf("%d",&b);
         for (;a<=30;a++)
         {cont++;
            if (cont=b)
               printf("\n");cont=0;
            printf("valore:%d %d %d\t",a,b,cont);}
         printf("\nbasta?(y,n,s)");
         c=getchar();
         if(c=='y'||c=='s')
            break;
      }
      while(1);
      return 1;
   }
Non riesco a capire perche' non funziona.
Ringrazio chi ha voglia di correggerlo.

Non ho guardato attentamente il codice, ma la prima cosa dubbia che ho visto
è stata if(cont = b );
anzichè if(cont==b);
ciao


Sostituisci if cont=b con if(cont == b)
bye gfb

 
Provato ma in questo modo mi stampa tutti i valori senza mai andare a capo..


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

Newsgroup: it.comp.lang.c
Titolo: Per Natoni & Laforgia

Ho superato l'esame di Fondamenti di Informatica
:-PPPPPPPPPPPPPPPP
Bye!

Ho superato l'esame di Fondamenti di Informatica
Chi sei ? 
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
--------------------------------------------------------------
"Partire e' un po' morire e morire e' partire un po' troppo !"
--------------------------------------------------------------

Ho superato l'esame di Fondamenti di Informatica
Anch'io..e allora ???
Augusto Pucci
Webmaster di Prospektiva On-line
http://www.prospektiva.it

 Ho superato l'esame di Fondamenti di Informatica
Champagne! Io non ce l'ho, sai com'e', ad Informatica, non si fanno i
fondamenti, si fa _tutto_ ;-)
--
 Ciao, Bianco.
 Reply to 
luca....@tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: effetti grafici

salve a tutti,
dove trovo ( in quale header) le funzioni che mi permettono di cambiare
colore allo schermo o al carattere di visualizzazione, e di pulire lo
schermo etc....?
Grazie

 ha scritto nel messaggio
news:zUUW5.32993$hk4.1...@news.infostrada.it...


abacuc wrote:

Se non hai risolto il problema con conio.h... perche' non l'hai trovata fatti
sentire

 wrote in message
3A2CFB03...@hotmail.com...



A journey of a thousand miles must begin with a single step.
                -- Lao Tsu



Prova cosi!!!!!!

 

* Vedere il sito

    ---> 
http://ppsc.pme.nthu.edu.tw/~dino/man/linux/program/M.804671097.A.html


*/

 

 

    /*#include <curses.h>*/

    #include <stdio.h>

    #include <stdlib.h>

    #include <unistd.h>

    #include <stropts.h>

    #include <termio.h>

    #define BUFFER_MAX 1024

    char getchvalue;

    struct termio save;

    int kbhit(void);

    char getch(void);

    void initscr(void);

    void endwin(void);

gotoxy (int x , int y)

{

  fprintf(stdout,"%c[%d;%dH",27,y,x);

}

 

 

    int main()

    {

           
char ch;

           
char outbuf[BUFFER_MAX];

            initscr();

           
while(1){

                   
if(kbhit()){

                           
ch=getch();

                           
sprintf(outbuf,"got a '%c'\n",ch);

                           
write(1,outbuf,strlen(outbuf));

                   
}

                   
if(ch=='q') break;

           
}

           
endwin();

    }

    void endwin()

    {

           
ioctl(0,TCSETA,&save);

    }

    void initscr()

    {

           
struct termio term;

            if(ioctl(0,TCGETA,&term)==-1){

                   
fprintf(stderr,"standard input not a tty\n");

                   
exit(1);

           
}

           
save=term;

            term.c_lflag&=~ICANON;

           
term.c_lflag&=~ECHO;

            term.c_cc[VMIN]=0;

           
term.c_cc[VTIME]=0;

            ioctl(0,TCSETA,&term);

    }

    char getch()

    {

           
return(getchvalue);

    }

    int kbhit()

    {

           
char buffer[BUFFER_MAX];

           
int ifkeyin;

            ifkeyin=read(0,&getchvalue,1);

            return(ifkeyin);

   }

 

 


 ciao
Ok, volo sull'altro NG.
Grazie comunque!
Newsgroup: it.comp.lang.c
Titolo: errore con Dev-C++

Salve a tutti,
avevo un problema nel compilare un programma
e riducendo all'osso il problema mi sono ritrovato
l'errore dato dal seguente codice:
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
int main() {
   char *stringa=NULL;
   int i=0;
   stringa="Ciao SoNo Pino!\n";
   while(i<strlen(stringa))
      *(stringa+i++)=toupper(*(stringa+i));
   printf("%s",stringa);
   system("PAUSE");
   return 0;
}
compilandolo col DevC++ ed eseguendolo, ottengo un errore 
di operazione non valida (errore di pagina non valida nel
modulo programma.exe), mentre eseguendolo col cygnus insight
debugger che e' insieme all'IDE va tutto bene;
compilandolo con rhide+djgpp non ho invece avuto problemi.
Il problema sta nel fatto che il djgpp non supporta la
funzione _msize di cui ho bisogno.
Cosa devo fare? Segnalare quello che credo un bug del
compilatore alla Bloodsheld ed aspettare?
Grazie a tutti,
saluti.
Luca

       *(stringa+i++)=toupper(*(stringa+i));
Vedo due problemi:
1) stai modificando una stringa costante;
2) non mi piace quel 'i++' buttato lì in mezzo: quando è che i viene 
   effettivamente incrementato ?
Meglio qualcosa del genere:
-------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
	char stringa[] = "Ciao SoNo Pino!\n";
	int i, size = strlen(stringa);
	for (i = 0; i < size; ++i)
		stringa[i] = toupper(stringa[i]);
	printf("%s", stringa);
	return 0;
}
-------------------------------------------------
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

 modulo programma.exe),
Dipende dal fatto che tenti di modificare una stringa costante.
EMG

    stringa="Ciao SoNo Pino!\n";
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Non hai allocato memoria per questo!
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it

 Non hai allocato memoria per questo!
Credo che tu abbia voluto dire che sarebbe stato meglio scrivere
char stringa[] = "Ciao SoNo Pino!\n";
oppure
char *stringa = malloc( 20 );
...
strcpy( stringa, "Ciao SoNo Pino!\n" );
...
free( stringa );
giusto? :-)
EMG

 Non hai allocato memoria per questo!


 giusto? :-)
Si', hai ragione, la fretta... E' che non uso mai la forma usata da
Luca C., ma uno di quelli che hai indicato tu, a seconda che abbia
bisogno di una stringa costante o meno.


 bisogno di una stringa costante o meno.
Scusami ma hai detto un'altra imprecisione: in nessuna delle due forme
di cui sopra tu vai ad utilizzare la stringa costante che serve solo
come inizializzatore.
EMG

 come inizializzatore.
Aspetta, tu dici che queste e' una stringa costante:
char *stringa=NULL;
[...]
stringa="Ciao SoNo Pino!\n";
mentre questa non lo e':
char stringa[] = "Ciao SoNo Pino!\n";
Ma sei proprio sicuro...? Adesso vado a prendere il K&R2 e
controllo...
[dopo il controllo]
<capo chino e orecchie basse> Eh si', avevi ragione; e' che ho la
brutta abitudine di considerare char* uguale a char[] ...

Newsgroup: it.comp.lang.c
Titolo: Getchar senza invio

Salve.
Ho bisogno di una funzione tipo la getchar(), che attenda la pressione di UN
solo carattere: non deve aspettare l'invio come la getchar.
Inoltre devo conservare il codice ASCII del tasto premuto.
E' possibile?
--
Ringrazio in anticipo.
Distinti saluti.

 E' possibile?
Per un attimo ho creduto potesse funzionare cosě:
#include <stdio.h>
<code>
main()
{
	int c;
	setbuf(stdin, NULL);	/* stdin dovrebbe essere line buffered,
				   gli tolgo il buffering */
	c = getchar();
	putchar(c);
 
	exit(0);
}
</code>
La cosa scommetto che da fare č piů complessa di cosě, forse sarebbe
necessario comunicare direttamente con il terminale, ma la cosa poi
diventerebbe poco portabile, con Ncurses (cito questo perchč credo sia
il piů portabile) otterresti quello che ti serve con molto meno lavoro.
-- 
                    |   .-.
Gianluca Di Corato  |  : | :  I N  P E A C E  W E  T R U S T
   (aka sgrung)     |  '/|\'

 
Ho guardato un po' meglio, è necessario comunicare direttamente con il
terminale, se ti serve in un sistema unix ti consiglio di prendere
spunto da alcuni sorgenti che trovi nella directory termios
dell'archivio 
http://www.kohala.com/start/apue.tar.Z
(gli esempi presentati in un libro di Stevens).
Discute proprio quello che ti serve, distinguendo tra modalità del
terminale "canonica" e modalità raw o cbreak (che ti permette di forzare
il terminale ad inviare l'input al programma senza aspettare eventuali
newline o EOF).
buon divertimento :)

Newsgroup: it.comp.lang.c
Titolo: Traduzione macro C in delphi

Salve a tutto il ng. scusate se uno svilupatore delphi "rompe" ma ho un
problema.
Ho da tradurre un header da c a delphi e ho tozzato su 3 macro.
Essendo quasi totalmente a digiuno di linguaggio c, spero che qualcuno mi
sappia speigare cosa fanno in pratica queste righe.
1)
     #define cryptInitComponents( componentInfo, componentKeyType )
      < memset( ( componentInfo ), 0, sizeof( *componentInfo ) );
        ( componentInfo )->isPublicKey = ( ( componentKeyType ) ? 1 : 0 ); >
Questa presumo sia una allocazione di memoria, ma non capisco il significato
del 2° parametro.
Poi, la assegnazione di isPublicKey....
Che operazione è? Shift o altro?
2)
     #define cryptDestroyComponents( componentInfo )
      memset( ( componentInfo ), 0, sizeof( *componentInfo ) )
Questa presumo dovrebbe rilasciare la memoria allocata, ma mi sembra faccia
lo stesso della precedente, tranne la assegnazione
3) (dulcis in fundo....!)
     #define cryptSetComponent( destination, source, length )
      < memcpy( ( destination ), ( source ), ( ( length ) + 7 ) >> 3 );
        ( destination##Len ) = length; >
Credo che copy in destination il contenuto di source, magari facendo degli
spostamenti di quello che è già presente in destination.
Ringrazio in anticipo chiunque potesse darmi qualche indicazione e mi scuso
ancora x il disturbo.
Bye
Alberto Salvati


Non capisco bene cosa ci stiano a fare le parentesi angolate...
immagino le abbia messe tu per delimitare la macro.
Comunque, memset serve per settare ad una costante una zona di memoria:
void *memset(void *s, int c, size_t n);
The  memset() function fills the first n bytes of the memory area
pointed to by s with the constant byte c.
The memset() function returns a pointer to the memory area s.
il valore di ( espressione ? V1 : V2) e'
uguale a V1 se espressione valuta a vero (o a non-zero) e V2 se
espressione valuta a falso (o a zero):
cioe'  x=(3==y ? 5 : 88);
assegna a x il valore 5 se y==5 e assegna a x 88 se y e' diverso da 3.
la memcpy:
void *memcpy(void *dest, const void *src, size_t n);
The  memcpy() function copies n bytes from memory area src
to memory area dest.  The memory areas  may  not  overlap.
Use memmove(3) if the memory areas do overlap.
The memcpy() function returns a pointer to dest.
ciao,
g.

         ( destination##Len ) = length; >
Qui  viene copiata  in destination  quanto puntato  da source,  i byte
copiati sono pari al risultato della "divisione per 8" di (length) +7.
Il valore di length  viene assegnato a destinationLen (almeno credo il
token pasting non l'ho mai usato)
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

grazie a entrambi.
Se avete problemi con delphi, a dispo.... :))
gruppo: it.comp.lang.delphi
A.
Newsgroup: it.comp.lang.c
Titolo: Pulire stringa

Come posso pulire un'array di caretteri? Cioč se riempio l'array di
caretteri e poi lo voglio svuotare. Grazie, ciao.
-- 
"No, non credo alla fortuna. Credo all'importanza di dare un valore alle
cose".
John F. Nash

 caretteri e poi lo voglio svuotare. Grazie, ciao.
Che intendi per "pulire un array di caratteri" ?

 Che intendi per "pulire un array di caratteri" ?
penso impostare tutti i caratteri come \0

> penso impostare tutti i caratteri come \0
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
    int i;
    char myArray[50];
    strcpy(myArray, "pippo");
    printf("myArray = \"%s\"\n", myArray);
    for (i = 0; myArray[i]; i++)
        myArray[i] = '\0';
    printf("myArray = \"%s\"\n", myArray);
    return 0;
}

Simone Russo wrote:

Proprio tutti? Basta il primo!

> Proprio tutti? Basta il primo!
Uh ?!
Un array è un array, che non vuol necessariamente dire che sia una stringa.


Se, come dici tu, un array è un array, allora perché il codice
che hai postato
   #include <stdio.h>
   #include <string.h>
   int main(int argc, char *argv[])
   {
     int i;
     char myArray[50];
     strcpy(myArray, "pippo");
     printf("myArray = \"%s\"\n", myArray);
     for (i = 0; myArray[i]; i++)
         myArray[i] = '\0';
     printf("myArray = \"%s\"\n", myArray);
     return 0;
   }
non pulisce le posizioni 6..49 dell'array myArray?
Mettiti d'accordo con te stesso!
  -1-  o setti a 0 tutte le 50 posizioni (0..49) di myArray !
  -2-  oppure, come dico io, setti a zero solo la prima posizione:
          myArray[0] = '\0';
Scegli un po' tu!
- Dario

Grazie a tutti per le risposte e per la discussione :)))

> Mettiti d'accordo con te stesso!
Ohei ! calmino bimbo...

 > Mettiti d'accordo con te stesso!
zizě, vasci'a cresta!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 zizě, vasci'a cresta!
Quota bene, non sono io ad averlo scritto.


Lo so, deng you! Ti stavo appoggiando! ;)


> Lo so, deng you! Ti stavo appoggiando! ;)
;-)
Newsgroup: it.comp.lang.c
Titolo: Allocare dinamicamente array, è sempre possibile se la memoria lo permette?

Scusate la domanda, che così come è posta sembra una contraddizione in 
termini.
Vi spiego meglio quello che voglio chiedere: se io "alloco" dinamicamente la 
meoria
necessaria per un array POSSO ESSERE SICURO E CERTO CHE LA MEMORIA
ALLOCATA SARA' COMPOSTA DA CELLE CON INDIRIZZO DI MEORIA
SEQUENZIALE?
Scusate il maisucolo, è per mettere in evidenza quello che vorrei 
esattamente
sapere.
vi faccio vedere un esempio di codice che ho scritto:
***********contenuto del file "arrayDinamici.cpp"*****************
// prendo la dimensione che l'utente desidera per il suo array
void setDimensione(int &dim)
{
     int dimensione;
     printf("Inserisci la dimensione dell\'array:\n");
     scanf("%d",&dimensione);
     dim = dimensione;
}
// allocazione dinamica di array di float
float *setArrayFloat(int dim)
{
     float *array = (float *)malloc(sizeof(float)*dim);
     float *appoggio = array;
     if(array == NULL){
          printf("\nNON E\' POSSIBILE ALLOCARE MEMORIA\n");
          return NULL;
     }
     printf("\nIntroduci gli elementi float dell\'array:\n");
     for(int i=0;i<dim;i++,array++)
          scanf("%f",array);
     return appoggio;
}
// stampa array di float
void stampaArray(float *array, int dim)
{
     printf("\nEcco l\'array che hai introdotto:\n");
     for(int i=0;i<dim;i++,array++)
          printf("%.2f ",*array);
}
**********************************************************
Queste due funzioni le utilizzo nel main nel seguente modo:
*************************************
...
int dimensione = 0;
    float *array;
    int *arrayInt;
    setDimensione(dimensione);
    array = setArrayFloat(dimensione);
    stampaArray(array,dimensione);
...
***************************************
Funziona tutto perfettamente, ma appunto mi chiedo:
posso sempre essere sicuro che la memoria allocata sarà sequenziale,
per cui scorrendo con array++, andro' a prendere proprio i miei dati?
Grazie a tutti per la cortese attenzione!
Merendina 

 ALLOCATA SARA' COMPOSTA DA CELLE CON INDIRIZZO DI MEORIA SEQUENZIALE?
si'
ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com

Newsgroup: it.comp.lang.c
Titolo: Deitel & Deitel

Linguaggio C - della Apogeo
Cosa ne pensate di questo libro ? Me l'hanno "prescritto" in
accoppiata al Kernighan - Ritchie 

 accoppiata al Kernighan - Ritchie
Ottimo il D&D per chi inizia a studiare il C, semplice, chiaro, abbastanza
completo, quasi esente da errori ...
non e' strettamente necessaria l'accoppiata suddetta ...
ma avendolo, dopo dai una occhiatina al K.R., che a mio avviso da solo non
e' utile per coloro che si accingono a studiare il C.

e' utile per coloro che si accingono a studiare il C.
Ti ringrazio. Penso che lo farò :)


Io l'ho comprato oggi e mi sembra molto ben fatto.
Magari ci risentiamo tra un po per tirare le somme sull'acquisto !!
ciao stefano


wrote:

Newsgroup: it.comp.lang.c
Titolo: [OT] Richiesta info

Scusate l'intrusione volevo sapere se questo NG ha un sito e sě,
se potevo scaricare da questo alcuni esempi di programmazione in C,
dal momento che sono alle prime armi con questo linguaggio
Grazie a tutti a presto
Bozu

 Bozu
ciao ...
-- 
#include <stdio.h>
int main(void){char c[]={10,65,110,116,111,110,105,111,32,98,97,114,98,111,110,
101,32,60,104,105,110,100,101,109,105,116,64,116,105,115,99,97,108,105,110,101,
116,46,105,116,62,10,10,0};printf("%s",c);return 0;}

Newsgroup: it.comp.lang.c
Titolo: Data da Millisecondi

Ciao a tutti :)
Sono riuscito col vostro aiuto ad estrarre un "long long" (avevate ragione
voi, l'int non ci stava in 4 byte :])
Questo "longlong" rappresenterebbe il numero di millisecondi trascorsi dal
1900 ad oggi..
Sapreste aiutarmi ad estrarre la data con giorno mese anno hh e mm?
L'unico sistema che mi viene in mente altrimenti è quello di fare il calcolo
con tutti i giorni bisestili etc.. Ma sarebbe alquanto difficile..
Non c'è una libreria o qualcosa di simile che effettua gia il calcolo?
Vi ringrazio in anticipo
Ciao
Micko
Newsgroup: it.comp.lang.c
Titolo: Confronto fra strutture

Salve a tutti.
Non è possibile eseguire un confronto tra due variabili aventi la stessa 
struttura?
ad es.
struct a
{
int var1;
char var2;
}
struct a dato1,dato2;
if (dato1==dato2) /* mi da errore */
Devo confrontare i singoli campi?

 Devo confrontare i singoli campi?
Credo sia la cosa migliore.
Pleg 

 struttura?
Purtroppo no, il linguaggio non lo consente.
Questa tra l'altro e' una faq, come puoi vedere qui:
http://www.faqs.org/faqs/C-faq/faq/
la 2.8 per la precisione.
ciao
Giacomo

 
Puoi usare la funzione memcmp().  Per es.:
if (memcmp(dato1, dato2, sizeof(struct a)) == 0) {
	/* le strutture sono uguali */
	.......
}
Attenzione però che l'allineamento dei membri della struttura potrebbe 
lasciare dei campi non inizializzati e non c'è garanzia si un 
funzionamento corretto.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >


una bella funzione di compare e si vive felici.
Ciao Jack

 una bella funzione di compare e si vive felici.
Scusa non ho capito, confermi quello che ho detto o dici di fare 
diversamente? :-)
Pleg

Newsgroup: it.comp.lang.c
Titolo: Architettura "time triggered" su Pc

Salve, sviluppo software in C per architetture embedded, e uso
abitualmente la struttura chiamata "time triggered"
Ovvero un interrupt ogni tot millisecondi, che scandisce le
temporizzazioni, e tutto il programma in un ciclo while senza fine nel
main.
Vorrei riproporre questa architettura in ambiente Pc, e vorrei sapere
come implementare in Ansi C un interrupt a tempo. Grazie

 come implementare in Ansi C un interrupt a tempo. Grazie
L'ANSI C non prevede roba di questo genere di suo. Devi appoggiarti a 
librerie che si basano sull'OS (Posix ad esempio).
Potresti creare un thread che si sveglia ogni tot tempo, ma a dipendenza 
dell'OS che hai sotto non aspettarti una risposta hard realtime.
Ciao Jack
-- 
Eroi non si nasce, ti incastrano
- Jim Belushi

*FeDe* ha scritto:

ANSI C per per se' non ha funzioni specifiche per gestione di interrupt.
"Riproporre in ambiente PC" non significa nulla: su un PC ci gira DOS,
 Unix/Linux/WindowsXXX/QNX/vxWorks/RTEMS/ etc.... senza contare
VMware o simili con magari piu' OS virtualizzati.
La gestione di un interrupt attaccato ad uno dei timer del PC e' sempre 
possibile,
ma *dipende* dall' OS target.
*Se* per PC intendi Windows (Quale? XP? Vista?), puoi realizzare una 
applicazione
in kernel mode (un .SYS o un driver WDM) che si attaca ad timer 
hardware, *se*
vuoi un determinismo decente: attenzione pero' che pasticci a questo 
livello possono
bloccare la macchina e causare problemi.
B.

 dell'OS che hai sotto non aspettarti una risposta hard realtime.
Ah ok .. non importa che sia RT .. sto facendo solo delle applicazioni di 
esempio per chiarirmi alcuni concetti di C. 

 problemi.
mmm.. sembra complicato, cmq mi informo sul kernel mode, grazie! 

 [...]
Manlio Perillo
Newsgroup: it.comp.lang.c
Titolo: Mail Bomb

ciao a tutti, vorrei (X USO PERSONALE) creare un programma di mail bomb per
applicare un'idea che mi č venuta. chi potrebbe aiutarmi a creare questo
programma?
contattatatemi via e-mail: 
f4...@libero.it

 contattatatemi via e-mail: 
f4...@libero.it
Vuoi creare un mail bomber e poi dici contattatemi via e-mail ??
-- 
         .: NickLess :.
         * From Italy *

Newsgroup: it.comp.lang.c
Titolo: [ANSI C] Distinguere due segnali

Ho due processi in Linux che comunicano tra loro.
Ogni processo è in pausa ( pause() ) e si deve sbloccare e reagire con 
due tipi di segnali in un modo diverso per
ognuno.
Il primo segnale viene mandato tramite kill da un processo all'altro;
mentre l'altro segnale si riceve quando si preme un certo tasto (o una
certa combinazione di tasti).
Per esempio il processo esterno manda una SIGUSR1, che sblocca l'altro
processo e gli fa fare una certa cosa.
L'altro segnale invece si verifica quando all'interno del programma premo
CTRL+Z (SIGTSTP) e mi fa sbloccare, facendomi però fare un'altra cosa.
L'unica cosa è che non so come riconoscere i due segnali diversi....
Vorrei fare qualcosa tipo
[CODE]
void procedi() {} // Non fa niente
int main(...)
.
.
.
signal(SIGTSTP,procedi);
pause(); // Quando arriva un segnale procede
if(sengale==SIGTSTP)
   // Fai una cosa
else 
   // Fanne un'altra
.
..
...
....
[/CODE]
L'else si verificherà se il segnale arriva da un processo esterno che gli
manda una SIGUSR1 tramite kill().
Solo che non so come far andare il segnale che ho ricevuto nella variabile
segnale (che deve essere int credo).
Mi sapete dare una mano?
Grazie mille a tutti :-)

 Vorrei fare qualcosa tipo
i segnali si gestiscono installando un gestore di segnali e non come
vorresti fare tu.
man signal (visto che SIGUSR1 non e' di tipo standard) e
it.comp.os.linux.development
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG