PDA

View Full Version : [c++] La libreria c'è .. ma per farla funzionare?


AYAMY
08-02-2007, 12:35
Ciao a tutti..e scusatemi visto che sto assillando il forum con sta distribuzione di gauss ma stavolta finalmente penso di aver trovato una libreria che mi possa aiutare a trovare sta benedetta distribuzione di Gauss ma mi servirebbe un aiutino per farla funzionare...la libreria si chiama newran e si trova qui http://www.robertnz.net/ftp/newran02.zip con annessa la documentazione http://www.robertnz.net/nr02doc.htm#overview

In sostanza visto che mi serve una DISTRIBUZIONE NORMALE il codice che , una volta che riuscirò a far funzionare la libreria , dovrò inserire nel mio main sarà il seguente

Normal N;
SumRandom Z = 10 + 5 * N;
for (int i=0; i<100; i++) cout << Z.Next() << "\n";

in cui i valori 10 e 5 gli verranno passati da una precedente funzione già esistente..

Ho seguito i consigli della documentazione ed ho fatto il seguente codice

#include <iostream>
#include <newran02/include.h>
#include <newran02/newran.h>
#include <newran02/boolean.h>
#include <newran02/myexcept.h>
#include <newran02/tryrand.h>
#include <newran02/extreal.h>

using namespace std;

int main (int argc, char *argv[])
{
Normal N;
SumRandom Z = 10 + 5 * N;
for (int i=0; i<100; i++) cout << Z.Next() << "\n";
cout << "Press ENTER to continue..." << endl;
cin.get();
return 0;
}


includendo i nuovi file.h ma mi da i seguenti errori....
3 C:\Dev-Cpp\include\newran02\newran.h:13, from ran.cpp In file included from C:/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.2/../../../../include/newran02/newran.h:13, from ran.cpp
28 C:\Dev-Cpp\include\newran02\extreal.h `ostream' is neither function nor member function; cannot be declared friend
28 C:\Dev-Cpp\include\newran02\extreal.h expected `;' before '&' token

che pastrocchio ho fatto stavolta?

Grazie ancora!! e please sopportatemi per qualche altro post...

:cry: :oops:

Qu@ker
08-02-2007, 18:35
Ti faccio notare che sul sito (http://www.robertnz.net/download.html) è presente una versione più aggiornata della libreria rispetto a quella che stai utilizzando.
Questo compila e gira senza problemi:

#include <iostream>
#include "newran.h"

int main()
{
MotherOfAll urng;
Random::Set(urng);
Normal N;
SumRandom Z = 10 + 5 * N;
for (int i = 0; i < 10; ++i)
std::cout << Z.Next() << "\n";
std::cout << std::endl;
}

AYAMY
11-02-2007, 10:50
ciao.... grazie per la dritta.. e scusami per il ritardo nella risposta ma ho la linea adsl che fa i capricci .....

per quanto riguarda la nuova libreria ti riferisci a quella chiamata newran03.zip ?

... quindi se utilizzassi le tue righe di codice.. con questa nuova libreria tutto dovrebbe funzionare a dovere... giusto?

Grazie ancora!!

Simo

AYAMY
14-02-2007, 11:13
... come mai a me non va?

ho creato con dev c++ un nuovo progetto (tipo hello world) ci ho copiato dentro il codice ed ho settato il path per la mia cartella dove ho newran.h

dove ho sbagliato?

mica devo aggiungere al progetto qualche altro file ?

Grazie

yorkeiser
14-02-2007, 12:05
Ma stai includendo solo l'header? Se chiami librerie esterne, oltre all'header o linki i .lib, o copi la relativa dll, o includi direttamente i sorgenti nel progetto. Ad esempio, potresti avere un file chiamato newran.cpp. I file .h contengono solo definizioni, non il corpo delle classi/funzioni

AYAMY
14-02-2007, 12:29
io ho incluso solo il file.h cioè newran.h ........
il problema è che se includo tutti i file della libreria.. già c'è un main (mi pare serva per fare un test)..quindi non funziona....
come faccio a sapere quali file devo includere?

Grazie