mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: R: x tutti i diffidenti come me!!!

 andare all'universitą.....e mi piazzo davanti al monitor fino a


 Z
Questo messaggio e` sicuramente OT, ma se me lo posti il sabato,
quando io sono ancora in laboratorio alle 19.00, non ho
ancora finito di lavoraree penso
a- alla mia situazione economica
b- che forse dovro` tornare anche domani
c-che nei  prossimi mesi sara` sempre peggio....
allora forse mi fai decidere a comprare un modem per collegarmi
da casa e stare tutto il giorno a navigare.
Marco Guidi

moris <a...@b.c.d> wrote:
: El Zorro wrote:
:> Lavorare non é inutile ... é semplicemente inutile, anzi dannoso direi, se
:> vuoi fare soldi !
:> L' esperienza dimostra che per fare soldi bisogna evitare accuratamente di
:> lavorare !!!
:> Z
: Questo messaggio e` sicuramente OT, ma se me lo posti il sabato,
: quando io sono ancora in laboratorio alle 19.00, non ho
: ancora finito di lavoraree penso
: a- alla mia situazione economica
: b- che forse dovro` tornare anche domani
: c-che nei  prossimi mesi sara` sempre peggio....
Tanto per restare off-topic :)
Io dico che c'e' un compromesso tra i due modi di vederla:
Senza dubbio in qualche modo si deve campare, e se non si ha la fortuna di
essere particolarmente 'agiati'... Di certo pero' _mentre_ ci si
rompe le palle ad esempio andando in laboratorio si deve sempre
pensare alla possibilita' di fare qualcosa che faccia fare
un salto di qualita'. In somma... basta non essere statici
e sperare in un po' di fortuna :)
Le cose che non mi piacciono del modo in cui i giovani si pongono
nei confronti del lavoro, almeno in italia, sono queste:
* Spesso fanno l'universita' senza essere per nulla affascinati dalla
  materia, non si lamentano se stanno studiando a memoria, ma se
  slitta la data di un esame o se si perde un giorno di lezione a fare
  una giusta protesta. Tutto questo perche' fanno l'universita'
  per trovare lavoro piu' facilmente e con una migliore retribuzione.
* Sono privi di ambizione "positiva", ovvero non cercare di modificare
  la realta' che ti sta attorno per avere piu' soldi, anche,
  ma specialmente per non doverti piegare alle esigenze sociali.
D'altra parte e' anche vero che le persone che pensano che 'lavorare'
nel senso di farsi il sedere sia un bel concetto, meritano di lavare
pavimenti per tutta la vita :)
Questo ovviamente in 'generale', le eccezioni ci sono.
ciao!
antirez

 pavimenti per tutta la vita :)
Perň preferisco chi lava i pavimenti a chi non fa un ca22o tutto il giorno e
se ne vanta...
(non intendo con ciň dire che questo sia il tuo caso).
Personalmente preferisco ritrovarmi a lavare i pavimenti che stare in ozio
totale, e del resto mi č anche capitato di fare proprio cosě, per cui non
parlo tanto per dire... (naja docet)
Diciamo perň che probabilmente č sempre meglio avere delle aspirazioni piů
elevate rispetto a passare la vita sugli strofinacci, su questo credo siamo
tutti d'accordo.
--
Alessandro Monti
Newsgroup: it.comp.lang.c
Titolo: [OT] PCBrain V.1.2 Alpha Online con Sorgenti

Ho messo online i sorgenti di un mio progetto realizzato in C sotto Win32. A
chi interessa è free e opensource.
Ragazzi, PCBRain V.1.2.Alpha finalmente ONLINE -----> scaricatelo completo
di sorgenti qui: 
http://digilander.iol.it/pcbrain
 <--- Qui tutte le info
Scusate l'OT,
Dome

Per tutti coloro che hanno scaricato PCBrain V.1.2 Alpha
1) Grazie
2) Scusate per i numerosi bug... per favore, riportateli al mio indirizzo di
posta elettronica
3) Scusate l'OT
4) Spiego una cosa che NESSUNO mai capisce al volo, non so perche...
Allo stato attuale il programma utilizza un analizzatore logico/grammaticale
in via di sviluppo: andateci piano!! Non capisce le enclitiche e le frasi
col soggetto/verbo/oggetto sottointeso, e sarebbe meglio parlare a PCBrain
in maniera elementare, come ad un bambino, dato che č proprio quello:
infatti all'inizio non sa NULLA.
Se vi stufate disattivate l'analizzatore logico/grammaticale e potrete
parlare con lui attraverso il Database vecchio... magari č piů spettacolare,
ma di IA non ha niente (non č che l'analizzatore meglio sotto questo punto
di vista, perň... ^_^).
5) Inviatemi il log delle vostre conversazioni e la conoscenza prodotta!
E' facile! Basta cliccare sul menů "Aggiornamento" e poi sulle voci "Invio
del LOG", o "Invio della conoscenza acquisita".
Grazie mille a tutti,
Dome
PS IMPORTANTE:
Ho messo a posto due bug stupidi nel programma, il primo, che lo faceva
piantare ogni volta venisse data in input una frase contenente solo
punteggiatura ("?"), il secondo un po' piů complicato riguardante la rete
semantica.
Niente che dovrebbe compromettere il funzionamento delle vostre copie di
PCBrain (per chi cell'ha ^_^), cmq se vi da strani problemi scaricatevi la
versione fixata dallo stesso link di prima.
Ho aggiornato anche i sorgenti!
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PC Brain Official Web Site
http://digilander.iol.it/pcbrain
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Newsgroup: it.comp.lang.c
Titolo: uso di #ifndef e simili...

Salve a tutti,
 ho un progetto costituito da diversi moduli in molti dei quali si fa
uso delle stesse variabili (globali) che ho dichiarato in un header
opportuno. Piu' o meno questo e' lo schema:
---- globals.h --------
#ifndef _GLOBALI_
#define _GLOBALI_
int x,y;
... altre varie definizioni ....
#endif
-----------------------
---- modulo1.c --------
#include "modulo1.h"
#include "globals.h"
ecc....
-----------------------
---- modulo2.c --------
#include "modulo2.h"
#include "globals.h"
ecc....
-----------------------
ecc.....(supponiamo di avere n moduli)
quando compilo/linko ottengo errori di linking che mi segnalano
dichiarazioni multiple delle variabili dichiarate in globals.h.
Sono costretto a dichiararle tutte in un modulo .c e poi come extern
negli altri che le utilizzano ?
Ma allora a che servono le direttive #ifndef, #endif ?
Ringrazio in anticipo chiunque mi chiarisca le idee... 

 Ma allora a che servono le direttive #ifndef, #endif ?
Servono a molte cose :)  Per proteggerti dalle inclusioni multiple (secondo 
alcuni l'unico uso del preprocessore che e' insostituibile, anche in C++) o 
per personalizzare i sorgenti / gli header a seconda delle necessita'.
Negli header non ci devi mettere definizioni, ma solo dichiarazioni (nel 
caso di variabili dichiarazione come extern, visto che normalmente viene 
definita nello stesso istante in cui la dichiari).
-- 
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."

definita nello stesso istante in cui la dichiari).
Perfetto.
Chiarissimo e velocissimo.
Grazie mille.
Newsgroup: it.comp.lang.c
Titolo: Virgola mobile e printf()

Come mai tentando di stampare un long double con printf() ottengo solo 0 o
un numero molto lungo che non c'entra con quello che dovevo stampare? Ho
provato a specificare il numero di decimali (es. %10.10f) ma, mentre con
double(ho provato con i modificatori costante, tipo 1.2Fo 1.2L) va tutto
bene,con L no...
Inoltre, come mai, specificando ad esempio %10.14f e stampando un double
tipo 12,234  non ottengo questo numero, ma qualcosa tipo
12,23399999999999(potrei non essere stato preciso, vado a memoria...)?
Infine, una domanda che non c'entra niente: ma ~ invece che compemento a
uno, non potevano chiamarlo not?
ps. uso DJGPP
Grazie,
--
Marco Iannaccone
ICQ: 18748121
IRC: Tolkien
e-mail: 
captai...@ussvoyager.com

uno, non potevano chiamarlo not?
perche' il complemento a uno non e' un "not".
O meglio : e' un not applicato ad ogni bit.
Per "not" solitamente si intende un'operazione booleana di tipo
logico.
Il "not" in C viene rappresentato con il punto esclamativo.
Una cosa e' scrivere :
a = !5 ;  /* a = not 5 */
a = ~5 ;  /* a = complemento a 1 di 5 */
Nel primo caso a = 0, nel secondo a = 10.

Nel primo caso a = 0, nel secondo a = 10.
...ops...
nel primo caso (se a e' a 8 bit) si ha :
!5 = ! 00000101 = 00000000 = 0
nel secondo
~5 = ~ 00000101 = 11111010 = -6

 ~5 = ~ 00000101 = 11111010 = -6
... su una macchina che lavora in complemento a due.  Ne esistono di
altro tipo.
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

altro tipo.
Cioe' ? 

andrea_...@bigfoot.com
 (Andrea Laforgia) writes:

Complemento ad uno: 11111010 = -5
Sign-magnitude:     11111010 = -122


Grazie!
ps. ovviamente so la differenza tra il NOT "logico" e il "not bit a bit",
solo che, dato che and e or conservano la stessa denominazione, mi sembrava
strano il cambiamento, tutto qui...


Sign-magnitude:     11111010 = -122
In questo caso il primo bit e' quello del segno e gli altri bit non
cambiano configurazione, in questo caso il complemento a 1 di 5
sarebbe 10000101 ?
Newsgroup: it.comp.lang.c
Titolo: FORK

devo implementare un programmino che chiami un processo figlio con la
fork().. qesto si deve presentare ("io sono il figlio"); e poi uscire..
l'unica cosa è che dopo che si presenta ci deve essere la presentazione del
padre ("io sono il padre") la stampa che il padre entra in attesa
dell'uscita del figlio ("sto aspettando") e le stampe delle due uscite.
prima il figlio e poi il padre
in pratica l'output del programma deve essere:
Io sono il figlio
Io sono il padre
sto aspettando...
Finito (FIGLIO)
Finito (PADRE)
le funzioni da usare sono:
Fork
Wait
Sleep
Getpid
Io riesco a farlo solo che non sempre l'ordine dei messaggi viene in giusto
ordine... e non uso la getpid (non riesco a capire dove usarla.. ma devo
usarla!)
AIUTOOO

Finito (PADRE)
Siamo OT, chiedi su it.comp.os.linux.development.
Come suggerimento ti posso dire che la wait la usi nel padre per
aspettare che il figlio termini e che non vedo a cosa ti serva la
getpid() a meno che tu non la voglia stampare il pid dei processi, ma
nelle specifiche non lo dici.
-- 
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."


Io farei una roba del genere:
pid_t pid;
int status;
int sec =5;  //specifica i secondi della funzione sleep
pid = fork();
if (pid == 0){
printf ("Io sono il figlio\n");
sleep (sec);
}
else{
wait(&status);
printf("Io sono il padre\n");
}
Questo è il modo più semplice che mi viene in mente, ricordati che però
questo non è uno C standard, ma bensì programmazione in ambiente UNIX.
Quindi hai sbagliato newsgroup.
Se hai bisogno di ulteriori chiarimenti scrivimi pure per e-mail
CIAO
Newsgroup: it.comp.lang.c
Titolo: Fine file

Salve, ho scritto una piccola funzione che legge delle scritte da un file
creato in precedenza. Questa è la funzione:
void ReadReachedScores(void)
{
  short int position;
  char name[20];
  unsigned int score;
  ifstream file(FILE_NAME);
  if (!file)
  {
    clrscr();
    gotoxy(6,6);
    printf("Impossibile accedere alle informazioni su Top10,");
    gotoxy(6, 7);
    printf("file danneggiato o mancante.");
    getch();
    return;
  }
  do
  {
    file >> position;
    file >> name;
    file >> score;
    clrscr();
    gotoxy(3, 3);
    cout << position << "  " << name << "              " << score;
  }
  while (!eof((int) file));
  file.close();
  return;
}
Il problema è che mi dice che il cast non è consentito. Ma la domanda allora
è, come faccio a determinare la fine del file visto che non la conosco in
precedenza? Ho provato a scrivere while(1), ma chiaramente continua a fare
quello che c'è dentro ma ho visto che scrive i dati giusti, il problema è
solo fermare il ciclo.
Non sono sicuro se si tratti di C++ o C, quindi mi affido a voi visto che
leggo sempre questo ng.
Grazie e scusate nel caso sia OT.
---
Ramses
---
icq:39860665
http://knowledgeparty.cjb.net
http://evilz0ne.cjb.net

 precedenza?
Scusate, ho trovato sulla rete la risposta:
while (!file.eof())
però ho un altro problema, mi sono accorto che non scrive l'array. Eppure
sul file di testo è stato scritto. Come mai?


 leggo sempre questo ng.
E` un mix. Gli stream sono C++, il resto C.
Se vuoi usare il C allora:
char buff[MAX_LEN];
FILE *file;
file = fopen(FILE_NAME, "r");
if (!file) {
	/* Errore */
}
while (fgets(buff, MAX_LEN, file)) {
	/* Se proprio vuoi, usi sscanf per recuperare i singoli campi da
	 * buff
	 */
	printf("%s", buff);
}
fclose(file);
Se vuoi usare il C++ (ed in questo caso passa su it.comp.lang.c++):
std::ifstream file(FILE_NAME);
std::string buff;
...
while(getline(file, buff)) {
	std::cout << buff << std::endl;
}
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
It can't rain forever,
but you can die before seeing the sun again.
Newsgroup: it.comp.lang.c
Titolo: Allocare gli elementi di struct annidate?

Mi sono decisamente perso :-D
Purtroppo sono un po' di anni che non uso piu' il C, sono un po'
arrugginito, e poi non avevo mai affrontato una roba del genere...
In sostanza, ho bisogno di alcune struct "nidificata" e con un numero di
elementi variabile:
struct A
{
	int Ora;
	unsigned short NumElementi;
	struct B
	{
		char Pippo[4];
		unsigned short NumElementi;
		struct C
		{
			char Pluto[4];
		} *udtTo;
	} *udtFrom;
}
(ovviamente e' un esempio molto semplificato)
All'inizio del codice dichiaro una variabile di tipo A.
Ad un certo punto, nel mio codice, ho bisogno che la variabile A sia
composta da un'array di 10 B, ciascuno che contiene al suo interno 4 C.
Sto provando con le varie malloc e realloc, ma mi sto annodando...qualcuno
mi puo' dare una mano?
Grazie!!!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

ciascuno che contiene al suo interno 4 C.
    if (a.udtFrom) {
       size_t i;
       for (i=0; i<10; i++)
         a.udtFrom[i].udtTo = malloc(4*sizeof *a.udtFrom->udtTo);


Newsgroup: it.comp.lang.c
Titolo: c sotto windows

per poter sciver delle applicazioni che funzionino sotto windows senza
lanciare prompt di dos servono delle librerie particolari?
quali?
dove li posso reperire?
Sergio

quali?
Esistono dei compilatori free scaricabili da internet ma non saprei
indicartene nessuno. Dal lato commerciale i migliori sono il Microsoft
Visual C++ 6 (è quello che produce codice più veloce) e il Borland C++
Builder (segue molto la filosofia RAD). L'SDK è liberamente scaricabile dal
sito della MS, ma ti conviene, date le dimensioni, cercare qualche rivista
che lo pubblichi nel proprio CD.
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
ICQ: 42227764
---------------------------------------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: [RETRYING..] Variabili extern, static e dichiarazioni...

Salve a tutti,
                               ho scritto un programma piuttosto complesso
che č composto di parecchi files e interfaccia sorgenti C e Fortran .
Dovendo gestire parecchie variabili globali, ho scritto un file common.h che
le dichiara e l'ho incluso in ogni sorgente. Cosě tutto sembra funzionare a
dovere ma  mi č restato il dubbio sull'utilizzo del prefisso 'extern' e di
quello 'static'. C'č qualche buon'anima che mi chiarisce le idee e mi dice
se occorre dichiarare extern le variabili globali utilizzate in ogni sinolo
sorgente?
Grazie a tutti!
Ciao
M D

 Tutor at D.S.I. University of Milan
V_/_ 'The future will not remember, the past doesn't forget.'
I'm Linux zion 2.4.0 #4 Thu Jan 11 15:33:34 CET 2001 i586

Newsgroup: it.comp.lang.c
Titolo: Dove sbaglio ?

Scusate se rompo, dopo diverso tempo ho spolverato il caro C per farmi un
programmino che modifica un file sequenziale ma riscontro un problema, cosi
mi son messo a scrivere il classico contatore per vedere dove sbaglio e il
problema mi si pone ugualmente.
Questo è il codice che ho scritto:
#include<stdio.h>
int i;
main() {
while(i<=5){
printf("%d\n",&i);
i++;
}
}
compilando sia sotto MingW32 che in CygWin non mi conta correttamente.
Qualcuno mi fa la cortesia di dirmi dove sbaglio, sto seriamente pensando di
essere completamente rimbambito.
Grazie
Leo

printf("%d\n",&i);
^^^^^^^^^^^^^^^^^^
printf("%d\n", i);
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

}
non va bene la & che metti prima della i.
scrivendo &i fai riferimento all'indirizzo di memoria della variabile,
non al suo contenuto. togli la & e andrà tutto a posto (inzializza
pure la variabile i perché non è detto che sia a 0).

Newsgroup: it.comp.lang.c
Titolo: Uguaglianza tra double

Ciao a tutti.
Ho il seguente codice:
int main()
{
   double v1 = 69.82;
   double v2 = 69.20;
   double v3 = 0.62;
   double v4 = v2 + v3;
   bool e = (v4 == v1);
}
Alla fine e risulta false. E' corretto un comportamento del genere?
Utilizzo ms vc++ 6.
Ciao e grazie.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Alla fine e risulta false. E' corretto un comportamento del genere?
Sě, č corretto.
Le cifre decimali non sono mai rappresentate correttamente in base 2 e
quindi si possono avere queste stranezze. Di conseguenza non bisogna mai
confrontare l'uguaglianza di due float o double, ma si dovrebbe verificare
che la loro differenza (in valore assoluto) sia molto piccola.
Cosa voglia dire questo "piccolo" lo trovi nel file header float.h:
    #define FLT_EPSILON     1.192092896e-07F
    #define DBL_EPSILON    2.2204460492503131e-016
    #define LDBL_EPSILON  0.24651903288156618919116517665087070E-31L
che rappresentano l'approssimazione massima che puň essere fatta nei
calcoli.
Quindi il confronto che si doveva fare č:
    bool e = fabs(v4 - v1) < DBL_EPSILON;
Maurizio.
Newsgroup: it.comp.lang.c
Titolo: Gestione dei timeout su file descriptor

Qualcuno sa darmi qualche consiglio sull'esperienza maturata dall'utilizzo
della seguente procedura?
int  select(int  n,  fd_set  *readfds,  fd_set  *writefds, fd_set
*exceptfds, struct timeval *timeout);
Devo gestire i timeout su alcuni socket che mi vengono o che apro.
Alternative all'uso della sopra citata funzione.
Lavoro su macchina Sparc.
Angelo ;-3}

 *exceptfds, struct timeval *timeout);
cosa ti interessa sapere di preciso ??
altrimenti non posso mica postare tutto il "man select".... ;)
bye

 ha scritto nel messaggio
news:1103_998337016@meltemi...


suggerimenti su eventuale codice alternativo.
Unix Advanced Programming  &  Unix Network Programming 2a Ed.
Di Richard Stevens -- Ed. Prentice All.
Trovi tutto.
Ciao
Fausto

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

Vi risulta che solo un thread possa joinarne un altro?
Due thread distinti possono fare assieme il join di un terzo thread?
Sto avendo un problema con una applicazione multithreaded, dove solo il
primo che chiama pthread_join aspetta, l'altro va avanti senza
aspettare...

 aspettare...
perche' non usi broadcast su una cond vrb ?
G

 perche' non usi broadcast su una cond vrb ?
eh? non ho capito che vuoi dire...

 eh? non ho capito che vuoi dire...
cerco di tradurre:
imposti nel thread morente il valore di una variabile globale/statica da 
qualche parte, e con gli altri aspetti finche' non cambia
non e' questo il NG adatto, comunque
Newsgroup: it.comp.lang.c
Titolo: execve con parametri variabili a runtime

Salve
ho un problema abbastanza "stupido" ma che non riesco a risolvere
Ho una classe Java che chiama librerie dinamiche tramite JNI, la quale a 
loro volta eseguono un programma C (bel giro eh?)
In pratica la classe Java riceve una stringa e un numero come parametri, li 
utilizza passandoli ad funzione JNI (che si trova nella libreria condivisa). 
A questo punto, nella libreria condivisa ho il seguente codice ... il 
problema è che vorrei sostituire le costanti (definite in un header) 
VSDB_DP_DEVICE e VSDB_DP_OFFSET con i valori dinamici ricevuti dalla 
funzione.
**************************************************************
char* const arg_list[]={
  "vsdb_driver",
  VSDB_DP_DEVICE,
  VSDB_DP_OFFSET,
  NULL
 };
....
valoreRitorno=execv("/path/programma_c/", arg_list);
**************************************************************
Qualche idea?
-- 
Taglia
http://www.vortexmind.net
http://www.tgplanes.com
http://www.netwargamingitalia.net

 Qualche idea?
Non credo di aver capito dove sta il problema...
Se vuoi sostituire il secondo e il terzo elemento di arg_list (che al
momento contengono VSDB_DP_DEVICE, VSDB_DP_OFFSET) con qualcosa d'altro,
fai così:
    arg_list[1] = "Pippo";
    arg_list[2] = "Pluto";
(Nota che gli indici partono da zero, quindi il secondo elemento ha indice
1 e il terzo ha 2. Ma per un programmatore Java questo non sarà
stupefacente.)
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
Ciao
innanzitutto grazie per la risposta.
Il problema avviene quando devo assegnare ad arg_list[x] il valore 
associato ad una variabile
char* arg_list[]={
	"vsdb_driver",
	VSDB_DP_DEVICE, // valori di default
	VSDB_DP_OFFSET, // ...
	NULL
};
const char * cStrDevice;
/ * qui JNI mi inizializza cStrDevice con il valore stringa proveniente 
da Java /*
arg_list[1] = cStrDevice;
Ovviamente non si fa cosě vero? =)
Ho pensato di copiare il contenuto di cStrDevice nella zona puntata da 
arg_list[1] con memcpy ... ti sembra corretto?
ciao e grazie ancora
Taglia
http://www.vortexmind.net

 arg_list[1] con memcpy ... ti sembra corretto?
Dipende. Non hai dato la definizione di VSDB_DP_DEVICE.
Se è definito in uno di questi modi:
    #define VSDB_DP_DEVICE "Topolino"
    const char VSDB_DP_DEVICE [] = "Topolino";
    const char * VSDB_DP_DEVICE = "Topolino";
teoricamente non dovresti potere, perché in entrambi i casi si tratta di
un array "const", e quindi non modificabile.
In pratica, certi compilatori un po' lassisti ti permettono di farlo. Ma
questo NON è una cosa né furba né giusta: vuol dire che sei andato a
modificare il valore di default contenuto nella sedicente costante
VSDB_DP_DEVICE.


Cingar wrote:
 >
 > ...
 >
Grazie per l'aiuto ... ora mi metto a provare qualcosina :)
Ciao!
-- 
Taglia
==========================
Fr33 your MinD:
http://www.vortxmind.net
Newsgroup: it.comp.lang.c
Titolo: Signal da numero di segnale a stringa corrispondente

Ciao,
stavo risolvendo e spiegando ad un mio amico come deve fare un
esercizio di programmazione C sui segnali.
L'esercizio in questione è molto semplice, è il tipo esercizio "fai un
processo che all'arrivo del segnale SIGXXX scrive su stdout
qualcosa...".
Per rendegli la vita più facile gli ho mostrato degli esempi e in
particolare volevo fare un programma che ridefinisce tutti i gestori
di segnali  (tranne quelli non ridefinibili) su una funzione
"sig_handler", questa funzione sig_handler non deve fare altro che
dire "Sono il programma <PID> e mi è arrivato questo segnale:
<signum>".
Anche questo è molto facile, ma se io volessi stampare il nome del
segnale (per es. SIGUSR1) invece che il numero corrispondente?
Con uno switch funziona tutto:
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
void handle_signal(int signum) {
    signal(signum, handle_signal);
    switch (signum) {
    case SIGHUP:
        fprintf(stderr, "SIGHUP\n");
        break;
    case SIGQUIT:
        fprintf(stderr, "SIGQUIT\n");
        break;
    /* non li scrivo tutti */
    case SIGUSR1:
        fprintf(stderr, "SIGUSR1\n");
        break;
    }
}
int main() {
    signal(SIGHUP, handle_signal);
    signal(SIGQUIT, handle_signal);
    signal(SIGUSR1, handle_signal);
    while (1) {sleep(5);}
return 0;
}
Ma il problema è che non è particolarmente bello fare un case per ogni
segnale anche in termini di riusabilità...
Mi chiedevo se c'era un modo per risalire a SIGXXX dato il numero
corrispondente.
Grazie

 e sei a posto.
Non � pi� bello fare un enum di char ?
--
M.B.

 e sei a posto.
Premesso che in generale la soluzione di tetsuya � di gran lunga la pi� 
comoda, nel caso specifico esiste strsignal() in string.h
La manpage di linux dice che � posix 2008, ma anche presente su solaris 
e bsd, per cui credo che la disponibilit� non sia un problema - e al 
massimo, la si scrive...

 consecutivi (come immagino che sia), puoi fare un array di stringhe:
[...]
Io sconsiglio vivamente di usare la tua soluzione. Quelle costanti sono
definite tali proprio per non fare affidamento su dei literal che
potrebbero cambiare nel tempo (nessuno vieta agli implementatori di
rinumerare le costanti). Per quanto meno elegante possa sembrare, � di
gran lunga meglio lo switch.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Newsgroup: it.comp.lang.c
Titolo: file bitmap

Sto scrivendo un programma che dovrebbe manipolare immagini. L'operazione
principale è la lettura di una immagine pixel per pixel. Va bene qualsiasi
formato di memorizzazione, comunque per iniziare pensavo al formato bitmap.
Come si può fare? Ovvero quale e' la struttura di tali file? Ho provato a
leggerli in formato ASCII ma non credo sia una mossa furba.
Qualsiasi suggerimento e' ben accetto.
Ciao,
    Alex.

 fare? Ovvero quale e' la struttura di tali file? 
 
http://www.wotsit.org
...e la tua domanda sul C e`?
	Alla prossima,
		Marco
Newsgroup: it.comp.lang.c
Titolo: funzioni trigonometriche

con quali algoritmi vengono create le funzioni trigonometriche?
so che fanno parte delle librerie matematiche dei compilatori, ma vorrei
crearmele da solo...  ho i miei buoni motivi!  ;>
grazie e un saluto a tutto il gruppo.
orlando

 vorrei crearmele da solo...  ho i miei buoni motivi!  ;>
  Su molte piattaforme, tra le quali i PC IBM, i processori o i
coprocessori mettono a disposizione un certo numero istruzioni di
calcolo di funzioni trigonometriche. In casi del genere, una funzione di
libreria non fa altro che preparare l'ambiente, eseguire l'istruzione
assembly e controllare che tutto sia corretto.
  Altrimenti, per le funzioni trigonometriche si puo` proficuamente
utilizzare la cosiddetta "tabella di look-up", un vettore di valori del
codominio della funzione in oggetto opportunamente pre-calcolati,
eventualmente interpolando per argomenti non mappati.
  Sfruttando accortamente la periodicita` di molte funzioni
trigonometriche, inoltre, e` possibile anche ottimizzare queste tabelle.
	Alla prossima,
		Marco

 orlando
In linea generale, al di la' del supporto hardware, viene spesso usata
la formula di Taylor, iterata fino al raggiungimento di una precisione
soddisfacente.
Puoi ovviamente cercare di scriverne una tua versione piu' ottimizzata,
ma difficilmente riusciresti ad ottenere prestazioni sensibilmente
migliori di quelle delle librerie standard... Come ha gia' scritto
Marco, insomma, conviene affidarsi a delle lookup tables.
Alceste
---------------------------------------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: cambiare colore al testo

Chiedo scusa come si puo' cambiare colore al testo formattato con una
printf("");  ?



Con il c standard non puoi.
Devi usare i codici ANSI (posto che la console sappia interpretarli),
oppure una libreria non standard.
-- 
Cordiali saluti
  Artemio

 ha scritto nel messaggio
news:9e6ocucp3g23a697l...@4ax.com...


 printf("");  ?
printf("\033[31mC\033[32mi\033[33ma\033[34mo\n");
Il resto scoprilo da solo! ;-)
Saluti
-Davide-

 printf("\033[31mC\033[32mi\033[33ma\033[34mo\n");
Scusami, ma non sono codici ANSI ?
Bisogna vedere se il terminale è in grado di interpretarli....
Sotto Linux non dovrebbero esserci problemi, mentre sotto Dos devi caricare
il driver ansi.sys. Per quanto riguarda il terminale di emulazione DOS di
Win NT/2000/XP invece non so.
-- 
Per rispondere via email rimuovere 123

 ha scritto nel messaggio
news:pan.2002.04.29.21...@hotmail.com...


 il driver ansi.sys.
scusa la domanda un po stupida ma come faccio a caricare un driver?

 ha scritto nel messaggio
news:Wnwz8.10698$g04....@tornado.fastwebnet.it...

scrivere nel file config.sys  la seguente riga:
DEVICE=C:\WINDOWS\COMMAND\ANSI.SYS
 --
Iscriviti al gruppo yahoo Linguaggio_C  con chat vocale per i soli iscritti
http://it.groups.yahoo.com/group/Linguaggio_C

 
Ancora più ovviamente il terminale dos non interpreta i codici ansi....
Forse è possibile caricare un driver sul terminale dos...mi sembra di
ricordare che esiste la possibilità di definire un config.sys da
utilizzare quando si lancia un programma dos. 
Altrimenti ai tempi del dos esistevano dei driver ansi sotto forma di
programma .com, anche se dubito che funzionino sotto Win 2000...


[...]
... prova ad usare cprintf per colorare il
testo, almeno con rhide+gcc c'è questo comando.
Ciao

Newsgroup: it.comp.lang.c
Titolo: IDE per Linux

Esiste una interfaccia grafica per editare i file .c in Linux (non X) ? ;
una sorta di ambiente Turbo C ?.
Grazie in anticipo per le risposte.
Francesco

 wrote in message 82em08$hgk$1...@nslave1.tin.it...


una sorta di ambiente Turbo C ?.
RHIDE e' molto simile ai vecchi IDE per dos di borland. 
Lo trovi facilmente su freshmeat o su linuxberg.
CiaoCiao
LordFelix
------------ disLESSici cr3w member -------------
char I[24]="_beWYX_\\k3W\\f_Xff\\V\\!beZ";main(){
int i=(((3*23))-69);for(;i<24;i++)I[i]=(i<27)?(I[
i]+13):(I[i]&(((53%20-i+27))));printf("%s\n",I);}

una sorta di ambiente Turbo C ?.
Non so se esistano i sorgenti di RHIDE.
Sarebbe una buona cosa "portartlo" sotto Linux.
--
Andrea Laforgia
andrea_...@bigfoot.com

 Grazie in anticipo per le risposte.
Prova a vedere 
http://www.kdevelop.org
Newsgroup: it.comp.lang.c
Titolo: Cerco qualcuno che possa darmi una mano a

Cerco qualcuno che possa darmi una mano a
programmare una piccola applicazione per un Casio Pv-250 (un'agenda-palmare
aggiornabile) che utilizza un proprio compilatore C ma io non so nemmeno da
dove partire (studio all'università ma programmazione non l'ho ancora
fatta).
Se ci fosse qualcuno che ha voglia di "perdere" un po' di tempo con me mi
contatti in email 
niz...@tin.it
Gli farò avere tutto il necessario (programma, manuale)
Grazie Nicola

 ha scritto nel messaggio
news:8r9gon$t49$1...@nslave2.tin.it...

Newsgroup: it.comp.lang.c
Titolo: come si modifica un file?

mettiamo che abbia un file binario in cui i record sono tutti int e
rispettivamente sono 1,2,3 ... se voglio modificarlo per farlo diventare
4,2,3 cioè cambiare solo il 1° recorda da 1  a 4 ... ho provato ad aprire il
file in append: fd = fopen("file","ab+"); e poi fseek(fd,0,SEEK_SET); e poi
fwrite(&i,sizeof(int),1,fd); e infine fclose(fd)... non mi dà errori ma
sembra che il file non sia cambiato...Allora mi chiedo: ma per caso è
sbagliata proprio la logica del mio programma? è forse impossibile
modificare un record del file se lo si apre in (ab+) ?
Grazie

 ha scritto nel messaggio
news:5D%s8.13161$SR5.3...@twister1.libero.it...

---------------
"ab"
 Apre o crea un file binario per scrittura in modalita' append; il cursore
viene posizionato alla fine del file e si puo' scrivere nel file solo in
coda ai dati gia' presenti;
"ab+"
Apre o crea in modalita' append un file binario
prova ad utilizzare "wb"

 ha scritto nel messaggio
news:oS%s8.13235$SR5.3...@twister1.libero.it...


 ma wb+ non mi cancella tutto il file esistente ricreandolo?
Prova con "r+b" e' la modalita' in Update che ti consente di scrivere i
"mezzo" ad un file gia' esistente
Maurizio

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

Ciao a tutti,
Ho provato a eseguire questo semplice programma:
***
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
int main ()
{
   double param, result;
   param = 30.0;
   result = sin (param*PI/180);
   printf ("The sine of %lf degrees is %lf.\n", param, result );
   return 0;
}
****
però ho un errore di esecuzione, che è il seguente:
/tmp/ccACsX6Q.o: In function `main':
sin2.c:(.text+0x31): undefined reference to `sin'
collect2: ld returned 1 exit status
Sembra che non sia definita la funzione sin dentro math.h ! Ho provato a 
cercare un po' su internet e sembra proprio che la funzione sin 
dell'ansi c debba trovarsi all'interno di math.h. Solo che ciò non 
accade nel mio caso. Com'è possibile ?
Sto usando linux, fedora core 6, con gcc alla versione 4.1.1 e con il 
kernel 2.6.18-1.2868.
Ho cercato anche dentro il file math.h e malgrado la mia scarsissima 
competenza sul c non ho trovato riferimenti a questa funzione.
E' possibile che le librerie c che sto usando non siano ansi compatibili 
? Se è vero (come mai?) dove trovo la mia funzione sin ?
grazie mille,
Emanuele

 però ho un errore di esecuzione, che è il seguente:
Quando hai compilato ti sei ricordato di usare lo switch -lm
per linkare le librerie matematiche ?
gcc -O6 pippo.c -lm -o pippo
ciao,
g.


No, non ho provato.
Che parametri dovrei utilizzare per fare il link delle librerie
matematiche usando "cc" invece di "gcc" ?

 
RTFM.  :-(   cc è un alias di gcc.
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: libreria time

ciao ragazzi mi servirebbe un aiuto....
utilizzando la libreria time.h voglio calcolare quanto tempo è
trascorso tra due istanti ma nn mi bansa la precisione all'ordine dei
secondi...qlc mi saprebbe dire come fare per esempio all'ordine dei
microsecondi o in generale spiegarmi come scegliere l'ordine di
grandezza....
grazie e ciao a tutti

  
ha scritto:


 
In c standard credo che non ci sia niente che utilizzi i sottomultipli 
del secondo. Mi sembra anche che la funzione standard con la precisione 
maggiore sia clock(), dichiarata sempre in time.h ma forse non e' adatta 
a quello che vuoi fare. Magari le funzioni del tuo sistema operativo ti 
possono aiutare.
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 secondi...
Ciao,
 hai dato un'occhiata a gettimeofday?
 Ciao
 Federico

 secondi...
difftime()

Federico Zema ha scritto:

Credevo che fosse solo sui sistemi unix. Comunque tu hai un idea di come 
faccia a misurare i microsecondi? Da quello che ne so l'orologio di 
sistema avanza 18 volte al secondo (o forse quello e' l'interrupt di 
notifica)?


Di default il timer ha una frequenza di 18.2Hz (equivale a circa 55ms tra  
un tick ed il successivo), ma si può affinare.
Per come si fa...vi rimando alla mia precedente email.


 Comunque tu hai un idea di come faccia a misurare i microsecondi?
Beh, il clock della CPU ha una frequenza mooolto maggiore ...
 Ciao
 Federico

 
Si, lo so. E' solo che pensavo che non ci fosse modo di misurarli 
direttamente, comunque mi sto informando. Guardando la dichiarazione per 
quelle funzioni ho notato la keyword restrict, solo che non riesco a 
capire a cosa possa servire in questo caso.
  int gettimeofday(struct timeval *restrict tp, void *restrict tzp);
Altra cosa, ma a cosa serve quel puntatore a void? Ho letto che va 
sempre passato NULL.


 sempre passato NULL.
E' un refuso dai tempi passati ...
 Ciao
 Federico
Newsgroup: it.comp.lang.c
Titolo: output programma in una presentazione

Ciao,
sono uno studente di V liceo e quest'anno avrei pensato a una tesina sulla 
casualità, caso, ecc.
Vengo al dunque: è possibile implementare un algoritmo di selezione 
casuale di numeri in modo che l'output appaia all'interno di una 
presentazione tipo power point? Se sì, mi dareste qualche dritta?
grazie :)
-- 
L'           è invisibile agli occhi
http://www.wysinnwyg.altervista.org/
 

 presentazione tipo power point? Se sě, mi dareste qualche dritta?
In che senso? Vuoi generare direttamente il ppt dal programma?
Remo D.

 scese dalla sua biga alata e cosě 
parlň:

No, vorrei che la finestra del programma sia *incorporata* in una pagina 
della presentazione. In modo da poter avviare il programma mentre si 
visualizza la presentazione. E' possibile?
-- 
L'           č invisibile agli occhi
http://scriverefantascienza.blogspot.com/
 

 visualizza la presentazione. E' possibile?
Tutto è possibile avendo abbastanza risorse (tempo soprattutto).
Comunque non capisco bene quello che intendi. Durante la presentazione, 
arrivato ad una certa slide vorresti fare in modo che premendo un 
bottone sulla slide partisse il tuo programma e che andasse a scrivere 
in un'area della slide stessa, giusto?
La cosa mi sembra abbastanza intricata, non fai prima lanciare 
l'applicazione e farla scrivere sulla sua finestra? Quando hai finito 
chiudi il programma e torni alla presentazione. Non ho Powerpoint sotto 
mano ma sono abbastanza sicuro che si possa fare giocando sulle opzioni 
dell'hyperlink.
Altrimenti devi metterti a giocare con COM server e simili, un gruppo 
orientato a Windows ti sarà certamente piu' d'aiuto.
RemoD.

 Tutto č possibile avendo abbastanza risorse (tempo soprattutto).
[...]
Ti ringrazio, Remo.
ciauz!


Newsgroup: it.comp.lang.c
Titolo: Identificare il BIOS

 grazie mille!!
Non ti ho giovato molto...
------------------------------------------------
IL RAZZIATORE
EMAIL: 
razzi...@usa.net
WEB:   
http://www.geocities.com/il_razziatore/
ICQ:   67552596
--------------------------------------------------

Come avevo promesso eccoti come:
(questo testo non l'ho scritto io)
Chiamata di funzione nel kernel:
Private Declare Function GetVolumeInformation Lib "kernel32" Alias
"GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal
lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long,
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long,
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal
nFileSystemNameSize As Long) As Long
volname = "C:\"
rit = GetVolumeInformation(volname, 0, 0, sn, 0, 0, 0, 0)
"rit" č il risultato della funzione, non mi ricordo piů cosa significa,
mentre in "sn" c'č il serial di "volname".
Non mi ricordo neanche se il nome di volume dev'essere c, c: o c:\


Ha, mi interesserebbe anche il numero seriale del disco fisso.
L'HD ha due numeri seriali. Uno viene messo dal DOS e lo leggi nel
Boot record, l'altro e' nel firmware e per leggerlo bisogna dialogare
direttamente con il controller dell'hd.
ciao


C'è la Interrupt List di Ralf Brown.
Manlio Perillo
Newsgroup: it.comp.lang.c
Titolo: Spero di non essere OT: C++ Builder Question

Allora vado subito ad esporre il mio problema:
sto facendo un' applicazione con il C++ Builder, tale applicazione usa una
tabella di un database.
Ovviamente quando vado a compilare il programma, il C++ Builder mi considera
il percorso completo per arrivare
a tale tabella:
c:\cartella\programma.exe
c:\cartella\data\tabella.dbs
Ora se io volessi installare il programma compilato senza mantenere il
percorso relativo alla tabella...
questo non mi è possibile.
Percio mi stavo chiedendo come poter inserire un percorso relativo in modo
tale che ovunque venga messo
l'eseguibile esso faccia riferimento solo alla sua subdirectory, quindi:
data\tabella.dbf
In pratica devo far si che il programma fuinzichi indipendentemente dal
posto in cui viene messo:
quindi:
programma.exe
data/tabella.dbs
Spero di essere stato chiaro...
GRAZIE A TUTTI IN ANTICIPO
Gabriele "Nope"

 è possibile.
  Perche` no? Solo la tua fantasia puo` limitare le innumerevoli
possibilita`. Te ne elenco alcune:
	1. In effetti, il DB si trova in una sub-directory della
	directory dove si trova l'eseguibile: usando un percorso 
	relativo invece che assoluto (comunque deprecabile:
	impediresti agli utenti di installare il programma dove
	vogliono e questo fa troppo Microsoft) hai piu` liberta` di
	movimento.
	2. Il percorso del DB e` contenuto in una variabile di 
	ambiente oppure nel path principale (variabile PATH) del 
	sistema.
	3. Il percorso del DB e` fornito all'eseguibile da riga di 
	comando.
	4. Il percorso del DB e` scritto in un file di configurazione 	
	nella stessa directory dell'eseguibile.
	5. Il percorso del DB e` scritto in un file '.ini', gestito
	indipendentemente da Windows. (*)
	6. Il percorso del DB e` contenuto in una chiave del registro. 
	(*)
	7. Il percorso del DB e` contenuto all'interno
	dell'eseguibile, che puo` automodificarsi. (**)
  Forza, che son sicuro che ti vengono in mente altre idee... ;)
	Alla prossima,
		Marco
(*) Esclusivo per Windows.
(**) Rischioso con NT.


[SNIP]

 possibilita`. Te ne elenco alcune:
Hai dimenticato la più ovvia: il DB è contenuto nella stessa directory
dell'eseguibile che è la directory di lavoro e non ha quindi bisogno di
altre indicazioni.
EMG

 il file....)
  Dovresti usare un sistema di crittografia; ne esistono decine: per
iniziare potresti compiere qualche ricerca su 
http://www.yahoo.com
 con
la parola chiave "crypt".
	Alla prossima,
		Marco

 non ha quindi bisogno di altre indicazioni.
  Troppo facile. ;)
	Alla prossima,
		Marco

GRAZIE a TUTTI !
siete stati molto gentili
Nope
Newsgroup: it.comp.lang.c
Titolo: Intero a carattere

Scusate, c'e' qualcuno che può dirmi, se esiste, qual' è la funzione che
converte un intero nel corrispondente carattere es. ASCII 65 - 'A'

converte un intero nel corrispondente carattere es. ASCII 65 - 'A'
Non serve.
I char in C sono tipi interi e quindi puoi trattarli come tali.
int  a = 'A' ;
char b = 66 ;
--
Andrea Laforgia (ICQ 87230455)
http://www.geocities.com/AndreaLaforgia
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."

Matteo,

  La tua domanda e` inconsistente: il tipo /char/ e`, a tutti gli
effetti, un tipo intero, per il quale solo la gestione dell'I/O fa
riferimento ai caratteri cosi` come noi li vediamo stampati sullo
schermo.
<code>
	char a='A';
	int b=42;
	printf("%c",a);	/* stampa A */
	printf("%c",b);	/* stampa il carattere di indice 42 
			   nell'insieme di caratteri stampabili del
			   tuo sistema */			   
	b=b+a;		/* somma a /b/ il valore di /a/ */
</code>	
  La conversione di tipo nelle avviene automaticamente, seguendo le
regole generali del casting. Nella prima linea del codice su riportato,
per esempio, avviene una conversione da /int/ (il tipo delle costanti
letterali carattere) a /char/. Nella funzione richiamata nella terza
linea, dipendentemente dal tuo sistema ospite, potrebbe avvenire il
contrario.
	Alla prossima,
		Marco
Newsgroup: it.comp.lang.c
Titolo: Lingue morte

Il C è come il latino?
... e il c++ è l'inglese?  
Ho questa impressione.

hinoky wrote:

Capire le tendenze non e' poi cosi' facile... e soprattutto e' dura 
abbattere le abitudini dei programmatori e farli smettere di usare il loro 
linguaggio di programmazione di fiducia.
Diciamo che di programmatori C ce ne sono molti.
Il C++ e' qualcosa in piu' e probabilmente sara' la naturale evoluzione del 
linguaggio per molte applicazioni... soprattutto, come dice lo stesso 
autore del linguaggio, ha il vantaggio di essere abbastanza simile al C da 
non rendere completamente traumatico il passaggio dal C al C++ per un 
programmatore, cosa che ne favorisce la diffusione.
Quello che forse sta diventando come l'inglese sono i linguaggi 
interpretati, come Perl e Python... non li utilizzi in genere per 
applicazioni dove sono richieste alte prestazioni (proprio perche' non sono 
in genere compilati), ma per il resto funzionano e ti permettono di 
produrre codice piu' velocemente.
BTW il linguaggio definitivo non lo hanno ancora inventato, se no tutti 
useremmo quello... oppure lo hanno fatto ma noi siamo troppo attaccati alle 
tradizioni per accorgercene :)
-- 
Mox (che per stasera cambia firma :P)
Quando qualcuno dice: "Voglio un linguaggio di programmazione in cui ho 
bisogno di dire solamente cio' che vorrei fare", dategli un lecca-lecca.

 Ho questa impressione.
Sei OT: apri un thread su it.comp.lang. con il tag [CONFRONTO] e
probabilmente avrai il tuo flame-bait.
f/up,
-- 
         (__)	      | Nicholas Wieland	    |    -     ------------
	 (oo)	      | 
nicholas...@yahoo.it
   |    -    | There's no |
   /------\/ 	      | Debian GNU/Linux / Mac OS X |    -    | place like |
  / |    ||  	       -----------------------------     -    | *GNOME(2)* |
 *  /\---/\           ...."Have you mooed today?"....    -     ------------

 ... e il c++ č l'inglese?  
No. 
Il C č come l'arabo.
Il C++ č come l'inglese.
Sei libero di andare nei paesi arabi con l'inglese, se vuoi. Ma non 
lamentarti se il tuareg non ti capisce.
-- 
---
In silenzio anche un idiota sembra intelligente. Ma non c'č problema,
l'idiota vuol sempre dire la sua.

Newsgroup: it.comp.lang.c
Titolo: #define

Ciao.
Recentemente, dentro a un file header (.h) ho trovato queste '#define'..
#define  Ltrim    ltrim
#define  LTrim    ltrim
#define  Rtrim    rtrim
#define  RTrim    rtrim
#define  Mid      mid
char *mid( char *c, int offset, int len );
char *ltrim( char *in );
char *rtrim( char *in );
A cosa serve mettere le #define con i nomi delle funzioni ?
Perchè alcune sono definite due volte??
grazie
Dave

:

Perché così si può scrivere, ad esempio
Ltrim(ss);
oppure
LTrim(ss);
senza la necessità di definire una funzione e due suoi wrapper.
In pratica, il preprocessore, quando trova
LTrim(ss);
oppure
LTrim(ss)
le sostituisce con
ltrim(ss);
Chiaro?
Saluti
-- 
Per l'e-mail rimuovere la frase in maiuscolo e gli underscore.
Newsgroup: it.comp.lang.c
Titolo: ho un problema con VisualC++6

Ho un problema con un programma in VisualC++6 (di vaste
proporzioni)scaricato dal web:
apro il .dsp, compilo e mi segnala 0
errori e 0 warning.Bene. 
Però quando lo faccio eseguire mi dice che non
trova il .exe. 
Allora vado in "SETTING"- "DEBUG" e scrivo la directory +
il nome del file.exe  (in effetti non c'era). 
Provo di nuovo a eseguire
il programma, ma mi dice "cannot execute program".Perchè? Non dovrebbe
crearlo automaticamente un file .exe? 
Quale può essere il problema?
Grazie!
--------------------------------
Inviato via 
http://usenet.iol.it

 Quale puņ essere il problema?

Newsgroup: it.comp.lang.c
Titolo: ricorsività per divisione di un array

ciao a tutto il NG sono nuovo di it.comp.lang.c. Ho questo problema:
dato un vettore a[n] che leggo da un file, si devono individuarne gli
elementi uguali consecutivi e in corrispondenza di questi creare dei
sottoarray che contengano elementi tutti diversi, in modo che l'unione
dei sottoarray ovviamente mi ridia l'array stesso. Mi spiego: se a[n]=
(1, 2, 3, 3, 4, 5, 6,6) ad esempio, il programma dovrà individuare il
3 e il 6 (elementi che si ripetono consecutivamente) e dividere a[n]
in questo modo:
a1[k]=(1,2,3), a1[j]=(3,4,5,6) e a1[t]=(6). Mi interessano solo le
coppie che si ripetono (non c'è la ripetizione di 3 elementi
consecutivi).
Ho provato in questo modo, ma così facendo so a priori qual è il
numero di elementi che si ripetono...invece dovrei implementare un
modo che lo fa da sè. Avete suggerimenti /aiuti?
Posto solo la parte che interessa del main (per capire se funzionava
facevo printare i valori)..
grazie a tutti,
f.
[...]
  for(i=0;i<n;i++)
      {
	p=&a[i];
    if(a[i]==a[i+1])
      {
	for(j=0;j<*p;j++)
	printf("%f\n", en[j]);
	for(k=*(p+1);k<n; k++)
	printf("%f\n",en[k]);
   }
  }

 
Delineo l'algoritmo in modo generico:
1. se l'array ha 0 elementi: hai finito;
2. se l'array ha un solo elemento: mettilo nel sottoarray e 
hai finito;
3. se l'array ha n elementi, allora confronti il primo 
elemento ed il secondo elemento.
Se sono uguali hai terminato un sottoarray, metti il primo 
elemento nel sottoarray e riparti togliendo il primo elemento 
ripetendo l'algoritmo sull'array di n-1 elementi, tenendo 
conto che lavorerai con un nuovo sottoarray.
Se sono diversi vuol dire che i primi 2 elementi fanno 
entrambi parte di un medesimo sottoarray. Metti il primo 
elemento nel sottoarray e ripeti l'algoritmo sull'array di n-1 
elementi ottenuto togliendo il primo elemento, tenendo conto 
che lavorerai con il sottoarray gią esistente.
Esempio (stampa dei sottoarray):
#include <stdio.h>
void subarray(int *a, int n) {
    if (n==0) printf("}");
    else if (n==1) printf("%d}",a[0]);
    else {
       if (a[0]==a[1]) {
          printf("%d}\n{",a[0]);
          subarray(a+1,n-1);
       }
       else  {
          printf("%d ",a[0]);
          subarray(a+1,n-1);
       }
    }
}
int main() {
    int a[]={1, 2, 3, 3, 4, 5, 6, 6};
    printf("{");
    subarray(a,sizeof(a)/sizeof(a[0]));
    return 0;
}
Ciao.

 Ciao.
ciao, ti ringrazio per il suggerimento. Così però mi pare che il
programma stampi l'intero array, e non i sottoarray..! forse c'è
qualcosa che mi sfugge...!
grazie e ciao


Certo, il programma stampa l'intero array perché stampa tutti 
i sottoarray in cui deve essere diviso. Ho solo mostrato come 
li puoi "riconoscere" stampandoli raggruppati con delle parentesi.
Ciao.

 Ciao.
ok, grazie!!
ciao.