Newsgroup: it.comp.lang.c++
Titolo: problema del compilatore?

Salve a tutti,
ho scritto questo programmino per prendere familiarità con il Dev 4.9.7.0 ma
mi ritrovo con una marea di errore segnalati nel iostream (è possibile?)
questo è il codice:
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
int dado(int);
int main(){
system ("pause");
std::cout << dado(6) << dado(6) << dado(6);
system ("pause");
return 0;
}
int dado(int facce){
srand((unsigned)time(0));
return rand()%facce;
};
qui sono presenti solo alcuni della marea di errori che vengono rilevati
1 C:\Documenti\mysources\provadado.cpp
In file included from C:/Documenti/mysources/provadado.cpp
28 C:\DEV-CPP\include\c++\iostream:44
bits/c++config.h: No such file or directory.
77 C:\DEV-CPP\include\c++\bits\fpos.h
syntax error before `(' token
97 C:\DEV-CPP\include\c++\bits\fpos.h
syntax error before `-=' token
come vedete i gli ultimi tre sono errori espressamente rilevati nel file
iostream e fpos.h
cosa devo fare?
ivan

Ivan Sofa n.1 wrote:
 > int dado(int facce){
 > srand((unsigned)time(0));
 > return rand()%facce;
 > };
Sul problema del compilatore non so risponderti,
perche' il tuo programma compila sotto g++ (sotto
linux) quindi posso solo immaginare che si tratti di
qualcosa di specifico del tuo compilatore o della tua installazione
del tuo compilatore.
Volevo pero' segnalarti che nella funzione dado() commetti
un errore abbastanza comune tra coloro che usano rand e srand
le prime volte:
La funzione srand() serve per inizializzare
il generatore di numeri casuali, mentre la funzione
time(0) restituisce il numero di secondi trascorsi dal
1 gennaio 1970.
Quindi se tu chiami piu' volte la funzione dado nello
stesso secondo (cosa normale se la invochi 3 volte di seguito)
allora con alta probabilita' la funzione time(0) restituira'
lo stesso valore, quindi tu inizializzarai i numeri casuali 3
volte con lo stesso valore, quindi otterrai 3 numeri casuali uguali.
La funzione srand generalmente deve venire invocata 1 sola volta,
per esempio all'inizio del programma, non ogni volta che generi
un numero casuale. Invocarla piu' volte non aumenta la "casualita'"
dei numeri generati.
Ciao,
g.

 cosa devo fare?
Puo' essere che usi un vecchio gcc nel qual caso usa: (ma prima prova come
ti ho detto sopra)
iostream.h
time.h
stdlib.h
NON usare "using namespace std;"
NON usare std::
Tommy

 };
Inoltre chiama srand() una sola volta nel main() non chiamarlo tutte le
volte, rischi di ottenere l'effetto contrario altrimenti ;-)
Tommy

 ha scritto nel messaggio
news:b4a290$q64$1...@sparta.btinternet.com...
ho fatto le correzioni che mi hai suggerito ma il problema rimane. Ma come č
possibile che gli errori siano presenti nei files di intestazione come
iostream??? eppure quello č quello che mi dice il complilatore.
Uso l'ultimissima versione del Dev C++ e il compilatore che porta con se.
Davvero non capisco.
ivan

 ha scritto nel messaggio
news:3E688C02...@nospa.nospa.iit.cnr.it...
| Ivan Sofa n.1 wrote:
|
|  > int dado(int facce){
|  > srand((unsigned)time(0));
|  > return rand()%facce;
|  > };
|
| Sul problema del compilatore non so risponderti,
| perche' il tuo programma compila sotto g++ (sotto
| linux) quindi posso solo immaginare che si tratti di
| qualcosa di specifico del tuo compilatore o della tua installazione
| del tuo compilatore.
io non compilo sotto linux! scusa mi spieghi meglio che vuoi dire? Sto
cercando di capirci qualcosa :-((
grazie per i consigli!
ivan



Il compilatore è praticamente lo stesso (il g++)...
Prova a reinstallarlo, sembra che manchino dei files oppure controlla la
configurazione (soprattutto il percorso degli include)

 ha scritto nel messaggio
news:pan.2003.03.07.14...@home.com...

il percorso degli include l'ho già controllato (è stata la prima cos ahce ho
fatto!) ma niente.
ma reinstallare il g++? non è solo un file? se puoi spiegami come.
grazie mille per la collaborazione
ivan

"Ivan Sofa n.1" <dromeda...@inwind.itDELETE> wrote
reinstallalo da capo e poi mettici sopra il port dell'ultima versione del
g++.
Tommy

 ha scritto nel messaggio
news:b4ag3q$1hq$1...@helle.btinternet.com...
|
| "Ivan Sofa n.1" <dromeda...@inwind.itDELETE> wrote
|
| reinstallalo da capo e poi mettici sopra il port dell'ultima versione del
| g++.
|
l'ho reinstallato la niente. ultima versione del g++? dove posso trovarla?e
come inserirla?
cmq ho deciso bene di reinstallare il Dev C++ 4. quello che mi funzionava
bene prima, cmq aderente allo standard come cercavo io. Aspetterò la 5,
anche se so che il problema non era una questione di versioni beta ;-)
grazie mille per la collaborazione!
ivan

 anche se so che il problema non era una questione di versioni beta ;-)
Apri Dev-C++ (quello nuovo). Tools->Compiler Options->Directories->C++
Includes. Qui aggiungi la cartella ...\include\c++\mingw32, dove "..." č la
cartella di installazione di Dev-C++
Dan