C++; lib.

DajeForte
Eccomi ancora qua con c++; ci riprovo anche se questa volta lo sto facendo più seriamente.

Arrivo subito al dunque.
Vorrei iniziare a creare le mie funzioni che effettuano dei calcoli che devo eseguire molto frequentemente.

Per farvi capire cosa mi serve faccio un esempio pratico: devo poter richiamare agevolmente funzioni di densità di varie distribuzioni. L'idea è quella di scrivere un po' di funzioni tipo:

double pdf_Binom (int x, int n, double p)
{

}

e lo stesso per altre.

Dove devo andare a mettere tutte queste cosette? In una libreria credo.
Quindi come la creo? Dove la salvo? Come la richiamo? (Uso Linux)

Ci sono delle librerie standard già implementate? (ovviamente saranno state create)
A proposito di binomiale avete qualche idea di come fare il coefficiente binomiale
double Binomial_Coefficient (int n, int k)
{
  double x = 0;
  double y = 0;
  double z;
  if ( (k>-1) && (n>=k) )
  {
    for(int i=n-k+1; i<n+1; i++) { x = x + log(i) }
    for(int i=2; i<k+1; i++) { y = y + log(i) }
    z = exp(x-y);
  }
  else 
  {
    z = 0;
    cout << "input error \n";
  }
return z;
}


vi sembra corretta questa strutturazione.

Infine come generate numeri casuali da una uniforme (0,1)?
binomiale

double Uniform_Generator ()
{
  double x = rand() / double(RAND_MAX);
  return x;
}


Poi ho visto ogni tanto fare una cosa del tipo:

srand( non ricordo)

per settare il seme; ma è necessario; se si quando va fatto?
Grazie, buon pranzo

Risposte
DajeForte
Ciao hamming_burst come va?
Dopo un botto di tempo perso sono riuscito a fare qualcosa.
Io uso g++ ed ho fatto g++ -I path to boost
e finalmente è partito!!! E Daje!
Adesso vorrei sapere se conoscete come dire al compilatore di cercare automaticamente sulla directory di path to boost
Ovvero siccome penso che lo utilizzerò spesso, mica devo stare a fare ogni volta -I path...

Vedremo.
Però adesso che funziona posso almeno iniziare fare qualche mini programmino così da iniziare ad imparare quelle librerie.

Grazie hamming.
Un saluto a te ed a tutti.

hamming_burst
"DajeForte":
Ciao hamming_burst come va?

mah, si sopravvive :D


Dopo un botto di tempo perso sono riuscito a fare qualcosa.[/url]
Io uso g++ ed ho fatto g++ -I path to boost
e finalmente è partito!!! E Daje!

immaginavo. E' un errore piuttosto comune, capita anche a me non preoccuparti :)

Adesso vorrei sapere se conoscete come dire al compilatore di cercare automaticamente sulla directory di path to boost
Ovvero siccome penso che lo utilizzerò spesso, mica devo stare a fare ogni volta -I path...

bhe qua c'è lo step successivo dalla compilazione da ufficio.
Ci sono varie possibilità, in *nix si usa la struttura make (i Makefile), è un potente tool dove si configura l'ambiente e le istruzioni per compilare un codice, dove la compilazione si stabilisce essere riutilizzata molte volte.

A te basta anche qualcosa di davvero basilare, basterebbe anche una singola riga in un file eseguibile .sh, ma conoscere i makefile è utile.

claudio862
"DajeForte":
Dopo aver scaricato il file.tz ed averlo installato (in una directory da me scelta) ho provato a fare questo

...

Ho provato un po' tutto: installare a destra e a manca boost, a spostarlo a cercare la path di #include, a metterlo dove sta iostream (se non ricordo male /usr/local). Insomma sono esausto.


Se sei su Linux ti conviene installare Boost con il gestore programmi della tua distribuzione. Anche perché solo alcune librerie sono header only, altre (come filesystem o threads) vanno prima compilate e poi passate linker insieme ai tuoi programmi.


"DajeForte":
Io uso g++ ed ho fatto g++ -I path to boost
e finalmente è partito!!! E Daje!
Adesso vorrei sapere se conoscete come dire al compilatore di cercare automaticamente sulla directory di path to boost
Ovvero siccome penso che lo utilizzerò spesso, mica devo stare a fare ogni volta -I path...


Il modo migliore sarebbe usare un programma come make, come ti hanno già suggerito, oppure qualcosa di più avanzato come cmake. È un po' più complicato da usare ma rende semplice gestire progetti complessi e [url=http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries]trovare i percorsi delle librerie[/url] (anche Boost).
Se invece vuoi una soluzione più semplice (e più "brutta"), puoi impostare la variabile d'ambiente CPLUS_INCLUDE_PATH="path to boost", che verrà aggiunta ai percorsi di inclusione specificati direttamente a gcc.

DajeForte
Grazie ad entrambe. Penso la soluzione del make sia migliore ma come avete detto richiede qualcosa che ancora io non ho.
Dunque opterò per una strada più semplice ed immediata, in via temporanea; quando avrò capito questi "make" cercherò di riorganizzare il tutto.

Grazie ancora, ed a risentirci visto che appena ho risolto un problema me se ne creano altri 1000!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.