Newsgroup: it.comp.programmare
Titolo: come mai non funge?

/*L'ESERCIZIO CHIEDE DI CREARE 2 ALBERI BINARI DI RICERCA(A1 A2) CONTENENTI
STRINGHE,CREARE UNA FUNZIONEesamina CHE RESTITUISCA 1 SE I 2 ALBERI
COINCIDONO PER DATI E STRUTTURE,0 ALTRIMENTI, DI CREARE UN SOTTOPROGRAMMA
CHE CREI UN TERZO ALBERO BINARIO DI RICERCA (C) CHE CONTENGA I DATI DI A1 E
A2 SENZA PERO' CANCELLARLI.
PER ULTIMO SI DEVONO VISUALIZZARE I DATI CONTENUTI NEI TRE ALBERI*/
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#define N 10
typedef struct nodo {
 char dato[N];
 struct nodo *sx,*dx;}tnodo,*tpnodo;
struct nodo *alb_bin(void);
void vis_pre(tpnodo a);
int esamina (tpnodo a1,tpnodo a2);
tpnodo ins_c(tpnodo c,char k[]);
tpnodo v_ant(tpnodo a,tpnodo c);
main()
{
 struct nodo *a1,*a2,*c=NULL;
 int confronto;
 a1=alb_bin();
 a2=alb_bin();
 confronto=esamina(a1,a2);
 c=v_ant(a1,c);
 c=v_ant(a2,c);
 printf("\n\n\n\n\tStampa del primo albero\n\n");
 vis_pre(a1);
 printf("\n\n\n\tStampa del secondo albero\n\n");
 vis_pre(a2);
 printf("\n\n\n\tStampa del terzo albero\n\n");
 vis_pre(c);
}
struct nodo *alb_bin(void)
/* LA FUNZIONE CHIEDE IL NUMERO DEI DATI DA INSERIRE NELL'ALBERO BINARIO
E PER OGNUNO,INVOCA LA FUNZIONE 
CREA_NODO.IN
 USCITA RESTITUISCE LA RADICE
DELL'ALBERO CREATO*/
{
 int i,n;
 struct nodo *p=NULL;
 struct nodo x;
//MEMORIZZO I SINGOLI DATI NELLA VARIABILE x
 printf("\n\n\t\tQuanti nodi vuoi inserire nell'albero?\t\t");
 scanf("%d",&n);
//ATTIVO UN CICLO PER INSERIRE I DATI
 for (i=0,i<n,i++){
  printf("\n\n\t\tInserisci l'informazione\t\t");
  scanf("%s",x->dato);
  p=ins_c(p,x->dato);
 }
 return (p);
}
int esamina (tpnodo a1,tpnodo a2)
/*LA FUNZIONE ACCETTA IN INGRESSO I PUNTATORI ALLE RADICI DEI DUE ALBERI,
EFFETTUA UNA SCANSIONE DI ENTRAMBI E RESTITUISCE 1 SE COINCIDONO PER DATI E
STRUTTURA, 0 ALTRIMENTI*/
{
 if((a1==NULL)&&(a2==NULL)) return 1;
 else if ((a1==NULL)||(a2==NULL)) return 0;
  else if(strcmp(a1->dato,a2->dato)!=0)return 0;
   else {
    esamina(a1->sx,a2->sx);
    esamina(a1->dx,a2->dx);
    }
}
tpnodo v_ant(tpnodo a,tpnodo c)
//LA FUNZIONE VISITA L'ALBERO DI RADICE a IN MANIERA ANTICIPATA E RICHIAMA
LA FUNZIONE ins_c PASSANDOGLI VIA VIA LE STRINGHE CONTENUTE NEI NODI//
{
 if(!a) return c;
 ins_c(c,a->dato);
 v_ant(a->sx,c);
 v_ant(a->dx,c);
 return (c);
}
tpnodo ins_c(tpnodo c,char k[])
/*LA FUNZIONE ACCETTA IN INGRESSO LA RADICE DELL'ALBERO C E IL DATO DA
INSERIRE RESTITUENDO LA RADICE*/
{
 if(!c)
/*SE C PUNTA A NULL, ALLOCO LO SPAZIO, COPIO L'INFORMAZIONE IN C->DATO E
FACCIO PUNTARE A NULL SIA C->DX CHE
C->SX*/
 {
  c=malloc(sizeof(tnodo));
  strcpy(c->dato,k);
  c->sx=NULL;
  c->dx=NULL;
  return (c);
 }
 else if(strcmp(c->dato,k)>0) c->sx=ins_c(c->sx,k);
  else if(strcmp(c->dato,k)<0) c->dx=ins_c(c->dx,k);
   else continue;
 return (c);
}
void vis_pre(tpnodo a)
//FUNZIONE PRE LA VISUALIZZAZIONE ANTICIPATA DEGLI ALBERI
{
 if(!a) return;
 printf("\n\t\t\t%s",a->dato);
 vis_pre(a->sx);
 vis_pre(a->dx);
}

 #include <string.h>
[cut]
... ecco perche' programmo in Perl e non in C !
;)
 Raffaello

 ... ecco perche' programmo in Perl e non in C !
Allora fammi un Radiosity o un sistema operativo in Perl...
Stai confrontando due linguaggi ideati per fini totalmente differenti.
Il C č un ottimo linguaggio, cosě come il Perl.
Kiuhnm

 Il C è un ottimo linguaggio, così come il Perl.
			       ^^^^^^^^^^^^^^^^^^^
			       ..de gustibus... ^__^
Adieu,
-- 
Lestat de Lioncourt                               |          Ciro Mattia Gonano
  JabberID: 
les...@jabber.students.cs.unibo.it
    |    Undergraduate Student in
  ICQ#: 52631406                                  |         Computer Science at
  URL: 
http://www.CS.UniBO.It/~gonano
             |       University of Bologna
            <powered by Linux Slackware 8.1 on Kernel 2.4.18-xfs>



E chi ha detto il contrario ?
 Raffaello

 E chi ha detto il contrario ?
Avevo avuto questa impressione...
Kiuhnm

 >> Il C è un ottimo linguaggio, così come il Perl.


 Per il mio lavoro non ho bisogno delle complicazioni che il C impone.
Non sarà forse il Perl a offrire delle facilitazioni? :-)
Kiuhnm

Espressioni regolari e facile accesso ai files.
 Raffaello
On Mon, 15 Jul 2002, Kiuhnm wrote:


Kiuhnm wrote:

W java :-)

Postatemi un codice in C che apre un file "pippo" in lettura e lo
visualizza sul terminale.
 Raffaello
On Mon, 15 Jul 2002, Kiuhnm wrote:


 wrote in message
news:Pine.OSF.4.31.020716...@harry.molgen.mpg.de...
Espressioni regolari e facile accesso ai files.
Questo non fa parte del linguaggio, ma delle librerie...
Il C è un linguaggio generico e quindi non può offrire keyword per gestire i
file.
Kiuhnm

Mi definisca un linguaggio "generico"
 Raffaello


 Mi definisca un linguaggio "generico"
Qualcuno intende lo pseudo-codice.
In questo caso mi riferivo a un linguaggio piuttosto a basso livello che non
fa altro che inglobare le istruzioni asm più comuni alla maggiorparte dei
microprocessori rendendole disponibili sotto forma di istruzioni più
complesse.
(per esempio while, for e if inglobano dei confronti e dei salti
condizionali o non condizionali).
Non permette di gestire direttamante file, accedere allo stdout o altro.
Tutte queste cose secondarie vengono lasciate alla librerie.
Nessuno vieta a un programmatore C di scrivere una libreria migliore per le
sue esigenze e di accedere ai file con quella.
Ritengo che l' "accesso ai file" non sia una caratteristica del linguaggio
C, ma delle sue librerie, quindi non si può dire che un altro linguaggio ha
un migliore "accesso ai file" del C.
Kiuhnm
P.S. Quando si risponde bisognerebbe "quotare", cioè riportare le parti alle
quali si riponde e scrivere *sotto*.

 quali si riponde e scrivere *sotto*.
SORRY
 Raffaello
P.S: va bene cosi' ?

 P.S: va bene cosi' ?
Perfetto :-)
Comunque ogni volta che ti rispondo devo aggiungere i '>' io stesso!!!
Dipende dal fatto che usi l'encoding "QUOTED PRINTABLE" e l'OE, guarda caso,
non lo supporta adeguatamente.
Questo encoding aggiunge a fine riga degli '=' anzichč dei <CR><LF> per fare
in modo che il browser sappia che la riga continua. L'OE (e forse anche
altri newsreader) aggiunge i '>' solo dopo i <CR><LF>.
Lo stai usando perchč ti serve o č impostato per default dal tuo newsreader?
Kiuhnm

 Kiuhnm
In termini legati alla "Computer Science" si puo' distinguere i due
linguaggi oggetto del contendere (Perl e C) in base alle rispettive
"Macchine Intermedie".
E' possibile affermare che l'implementazione del linguaggio C e' "vicina"
al concetto di Compilatore Puro, l'implementazione del linguaggio Perl
e' invece "vicina" al concetto di Interprete Puro.
Un programma C (normalmente) deve essere tradotto in un formato diverso
prima di poter essere eseguito (la cosiddetta compilazione).
Il Perl se ne frega della compilazione, fa tutto in memoria in una botta
sola; il problema qui e' la perdita di efficienza (non si puo' avere
la botte piena e la moglie ubriaca).
Le tue "librerie" sono il pezzo di macchina virtuale che manca al C per
fare le cosettine facili facili che puoi fare in Perl con funzioni
predefinite.
Ripeto: non si puo' dire Perl e' meglio di C o C e' meglio di Perl,
dipende dai fini della programmazione. RiRipeto: nel mio caso uso
Perl perche' sono felice delle cosettine facili facili che puoi
fare in Perl con le sue funzioni predefinite.
 Raffaello
P.S.: "pseudo-codice" ?

 Kiuhnm
In termini legati alla "Computer Science" si puo' distinguere i due
linguaggi oggetto del contendere (Perl e C) in base alle rispettive
"Macchine Intermedie".
E' possibile affermare che l'implementazione del linguaggio C e' "vicina"
al concetto di Compilatore Puro, l'implementazione del linguaggio Perl
e' invece "vicina" al concetto di Interprete Puro.
Un programma C (normalmente) deve essere tradotto in un formato diverso
prima di poter essere eseguito (la cosiddetta compilazione).
<
Secondo me qualsiasi linguaggio può essere compilato o interpretato.
<
Il Perl se ne frega della compilazione, fa tutto in memoria in una botta
sola; il problema qui e' la perdita di efficienza (non si puo' avere
la botte piena e la moglie ubriaca).
<
In giro per Internet dovrebbero esistere versioni di Perl dotate di
compilatore e versioni di C dotate di interprete.
Quello che voglio dire è che il compilatore, il linker, le librerie, le
macchine virtuali ecc... non dovrebbero fare parte del linguaggio vero e
proprio.
(però puoi sempre avere la moglie ubriaca e piena di botte...)
<
 Raffaello
P.S.: "pseudo-codice" ?
<
Ho fatto una ricerca con google cercando sta benedetta definizione e ho
trovato pagine che parlavano del C e altre dello pseudo-codice.
Beh, più generico di quello si muore in effetti...anche se, in questo caso,
generico ha un'altra accezione, probabilmente.
<