Newsgroup: it.comp.lang.c
Titolo: problema DATABASE

 0)
       {
        MinVal = db->arrayLIBRI[j]->autore;
        MinInd = j;        
        }
        if (MinInd != i)
       {
        char *temp;  //funzione tipica di swap
        temp = db->arrayLIBRI[i]->autore;
strcpy(db->arrayLIBRI[i]->autore,db->arrayLIBRI[MinInd]->autore);
        strcpy(db->arrayLIBRI[MinInd]->autore,temp);        
       }
      }
   }
}
void db_printer(databaseLIBRI db)
{
  for(i = 0; i < db->dimensione; i++)
  {
   printf("Database n° %d\n",i);
   printf("Autore : %s\n",db->arrayLIBRI[i]->autore);
   printf("Titolo : %s\n",db->arrayLIBRI[i]->titolo);
   printf("Editore : %s\n",db->arrayLIBRI[i]->editore);
   printf("Anno : %d\n",db->arrayLIBRI[i]->anno);
  }
}
int main (void)
{
  z=0;
  datilibri *data;
 
  printf("Inserire lunghezza database...\n");
  scanf("%d",&dim);
  getc(stdin);    //per togliere il trailing '\n' da stdin
 
  db = makedatabase(dim);
 
  for(i=0;i<db->dimensione;i++)
  {
   inserisci(db,data);
  }
 
  db_printer(db);
  //ordinaPERAUTORE(db);
  //db_printer(db);
  getch();
} 

 favore
Per prima cosa utilizza un compilatore "C" (e non quello C++ che hai
usato), metti a posto pure i warning e poi si prosegue.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Scusa Angelo io uso DevC++ come compilatore e di warning NON me ne ha
dati neanche uno....
come mai?
ciao
Alberto

 come mai?
Probabilmente perche' l'estensione di default del file e' cpp.
Nel tuo codice ci sono istruzioni che vanno bene per un compilatore C++,
ma sono illegali in C.
In ogni caso il problema e' un altro...
Ma visto che questo e' un ng di linguaggio C, prima metti a posto la
sintassi del codice in modo che sia valida per il C... Poi si discute
del problema del tuo programma :-)


 ma sono illegali in C.
Tipo?
Ho dato una scorsa veloce perche' ho poco tempo, ma non ho trovato evidenti
istruzioni incompatibili col c.
Ciao,
Ema

 wrote in message
news:bdunql$100q03$
1...@ID-190851.news.dfncis.de

int main (void)
{
  z=0;
  datilibri *data;
qualche altra e' sparsa per il codice.


 } 
Hai allocato un sacco di memoria, chi la libera? Hint: nessuno.
HTH,
Kronos
-- 
Home: 
http://kronoz.cjb.net
La somma dell'intelligenza sulla terra e` una costante.
La popolazione e` in aumento.

   datilibri *data;
questa e' una dichiarazione di un puntatore ad una struttura chiamata
datilibri.
Boh!
Forse non e' tanto standard che ci sia l'assegnamento prima della
dichiarazione... ma non credo sia poi cosi' grave.
Sappimi dire che sono curioso.
Grazie.
Ciao,
Ema

 Scusa se insisto, ma dov'e' l'incompatibilita'?
A meno che le cose non siano cambiate con l'ultimo standard, le
variabili
vanno definite all'inizio del blocco in cui sono visibili.
Quella e' sintassi del C++.



Ok, grazie. Capito.
Ema

 A meno che le cose non siano cambiate con l'ultimo standard,
Sono cambiate.
Kronos
-- 
Home: 
http://kronoz.cjb.net
Se non sei parte della soluzione, allora sei parte del problema.

 Sono cambiate.
Credo che mettero' in firma
"A meno che le cose non siano cambiate con l'ultimo standard..." :-)
Sinceramente non riesco a vedere l'utilita' di una simile possibilita'
in C++ esistono i reference e definire una variabile in un punto
qualsiasi e' una necessita'...
In tutti gli altri casi mi sembra solo casino.


 In tutti gli altri casi mi sembra solo casino.
int main() {
        if (failure())
                return EXIT_FAILURE;
        struct huge lots_of_crap[100];
        use_it(lots_of_crap);
}
In  C++  e`  ancora piu`  utile  per  il  fatto  che puo`  essere  molto
dispendioso  creare  una  classe   ed  eseguirne  il  costruttore. Senza
contare che  i dati necessari  per il costruttore potrebbero  non essere
immediatamente disponibili.
Non e` faccia solo casino, basta non abusarne.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
It can't rain forever,
but you can die before seeing the sun again.

 dispendioso  creare  una  classe   ed  eseguirne  il  costruttore.
Ovviamente... Pensavo di essere un po' arrugginito con il C++, ho
scoperto di essere molto arrugginito :-)
Spero non arrivi immondizia, sto' pastrocchiando con Leafnode.
C:\>iao Angelo

 tempo fa analizzando l'assember).
Il gcc  non e` molto  furbo (proprio  questo problema ha  creato diversi
problemi all'interno del  kernel di linux). Scometto che  l'ICC riesce a
fare di meglio.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Non sempre quello che viene dopo e` progresso.
Alessandro Manzoni

 fare di meglio.
Allora i non molto furbi sono almeno due (all'epoca usai VC++) :-)
Comunque e' una prova fatta parecchio tempo fa, quando mi facevo ancora
domande del genere...
Poi ho cominciato a mettere tutte le variabili in cima al blocco (anche
in C++) e adesso non riesco a farne a meno.
Comunque sono contento che Leafnode funzioni :-)


 Principiante :PP
"Nisciuno nasce 'mparato" ...
... e se proprio vogliamo dirla tutta, a me sarebbe bastato il news
reader di Netscape. :-)
