PDA

Visualizza la versione completa : [C++] Problema con funzioni di libreria


Luciano88
07-11-2008, 17:55
ciao a tutti.. avrei un problemino molto semplice.. questa una funzione che calcola la frequenza del lancio di due dadi.. non riesco a capacitarmi come sia possibile che il compilatore mi compili ed esegua correttamente questo file sebbene esso utilizzi i metodi time() e rand() che fanno parte delle librerie stdlib.h e time.h che non ho incluso
il main contenuto in un altro file e contiene anch'esso solo l'header iostream.. com' possibile? aiutatemi





#include <iostream>
using namespace std;


//esercizio 7

void es7() {

int sum [11];

for (int i=0; i<11; i ) //inizializzo l'array a 0
sum[i]=0;

srand(time(0));

for (int i=0; i<36000; i ) //genero i numeri e immagazzino i dati
sum [rand() rand();

for (int i=0; i<11; i )
cout << "Frequenza del " << i+2 << ": " << sum[i] << endl;

system ("PAUSE");

}

shodan
07-11-2008, 19:06
Dubito molto che il compilatore compili questo codice o che lo esegua correttamente.
Controlla bene i vari for.

Luciano88
07-11-2008, 20:06
Originariamente inviato da shodan
Dubito molto che il compilatore compili questo codice o che lo esegua correttamente.
Controlla bene i vari for.

errori di copiatura.. ecco il codice





void es7() {

cout << "\n\n\nESERCIZIO 7" << endl;

int sum [11];

for (int i=0; i<11; i++) //inizializzo l'array a 0
sum[i]=0;

srand(time(0));

for (int i=0; i<36000; i++) //genero i numeri e immagazzino i dati
++ sum [rand()%6 + rand()%6];

for (int i=0; i<11; i++)
cout << "Frequenza del " << i+2 << ": " << sum[i] << endl;

system ("PAUSE");


}

shodan
07-11-2008, 20:58
Presumo tu stia usando il gcc in una delle sue numerose incarnazioni. Se ricordo bene il gcc (il g++ in questo caso) inserisce in automatico i prototipi delle funzioni di libreria standard se trova una linea di codice che la richiede.
Dovrebbe dare alcuni warning comunque.

Luciano88
07-11-2008, 21:04
Originariamente inviato da shodan
Presumo tu stia usando il gcc in una delle sue numerose incarnazioni. Se ricordo bene il gcc (il g++ in questo caso) inserisce in automatico i prototipi delle funzioni di libreria standard se trova una linea di codice che la richiede.
Dovrebbe dare alcuni warning comunque.

uso il dev
nessun warning.. tutto pulito..
l'iostream la devo per forza includere io, come si spiega??
la time e la stdlib me la include automaticamente mentre invece l'iostream no..

addirittura guarda cosa mi succede..
il compilatore mi esegue correttamente questo codice senza nemmeno warnings

#include <iostream>
int main () {
srand(time( 0) );
}


invece mi segnala errori (non riconosce i metodi srand e time) in questo codice


int main () {
srand(time( 0) );
}






ma srand e time non fanno parte di iostream :confused:

shodan
07-11-2008, 21:28
Hai aperto l'header file e risalito la catena per escluderlo con sicurezza? Pu darsi che l'include distribuito con il compilatore inserisca gli header appositi, per cui includendo iostream il compilatore trova la dichiarazione dei prototipi, ma dipende da compilatore a compilatore.

Loading